diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0645e1baf..48fc93b06 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -20,15 +20,15 @@ jobs: runs-on: ubuntu-latest steps: + - name: Check out code into the Go module directory + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - name: Set up Go 1.x uses: actions/setup-go@v5 with: - go-version: '1.22.4' + go-version-file: go.mod id: go - - name: Check out code into the Go module directory - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - name: Install CI run: | go get -v -t -d ./... diff --git a/.github/workflows/codeql-analysis.yaml b/.github/workflows/codeql-analysis.yaml index 29eceecca..0db3d20ff 100644 --- a/.github/workflows/codeql-analysis.yaml +++ b/.github/workflows/codeql-analysis.yaml @@ -30,7 +30,7 @@ jobs: - name: Install go version uses: actions/setup-go@v5 with: - go-version: '^1.22.4' + go-version-file: go.mod # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index c7e928464..9aef40d53 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -19,16 +19,12 @@ jobs: with: fetch-depth: 0 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: "3.12" cache: "pip" cache-dependency-path: "./docs/scripts/requirements.txt" - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 - with: - go-version-file: 'go.mod' - - run: | pip install -r docs/scripts/requirements.txt diff --git a/.github/workflows/json-yaml-validate.yml b/.github/workflows/json-yaml-validate.yml index 9d8733f58..cca01ea11 100644 --- a/.github/workflows/json-yaml-validate.yml +++ b/.github/workflows/json-yaml-validate.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: json-yaml-validate - uses: GrantBirki/json-yaml-validate@v3.0.0 + uses: GrantBirki/json-yaml-validate@v3.2.1 with: comment: "true" # enable comment mode yaml_exclude_regex: "(charts/external-dns/templates.*|mkdocs.yml)" diff --git a/.github/workflows/lint-test-chart.yaml b/.github/workflows/lint-test-chart.yaml index 2ef778233..b153ab136 100644 --- a/.github/workflows/lint-test-chart.yaml +++ b/.github/workflows/lint-test-chart.yaml @@ -19,7 +19,7 @@ jobs: fetch-depth: 0 - name: Install Helm Docs - uses: action-stars/install-tool-from-github-release@243ac555111a84756285bf7dc55df821a55d32d9 # v0.2.3 + uses: action-stars/install-tool-from-github-release@ece2623611b240002e0dd73a0d685505733122f6 # v0.2.4 with: github_token: ${{ secrets.GITHUB_TOKEN }} owner: norwoodj @@ -40,7 +40,7 @@ jobs: fi - name: Install Artifact Hub CLI - uses: action-stars/install-tool-from-github-release@243ac555111a84756285bf7dc55df821a55d32d9 # v0.2.3 + uses: action-stars/install-tool-from-github-release@ece2623611b240002e0dd73a0d685505733122f6 # v0.2.4 with: github_token: ${{ github.token }} owner: artifacthub @@ -59,7 +59,7 @@ jobs: version: latest - name: Install Python - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: token: ${{ github.token }} python-version: "3.x" diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 1e3cebf94..b547756b2 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -8,6 +8,7 @@ on: permissions: contents: read # to fetch code (actions/checkout) + checks: write jobs: @@ -20,16 +21,16 @@ jobs: runs-on: ubuntu-latest steps: - - name: Set up Go 1.x - uses: actions/setup-go@v5 - with: - go-version: '1.22.4' - id: go - - name: Check out code into the Go module directory uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - name: Set up Go 1.x + uses: actions/setup-go@v5 + with: + go-version-file: go.mod + - name: Lint - run: | - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.57.2 - make lint + uses: golangci/golangci-lint-action@v6 + with: + args: --timeout=30m + version: v1.60 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml new file mode 100644 index 000000000..bd7890cad --- /dev/null +++ b/.github/workflows/scorecards.yml @@ -0,0 +1,70 @@ +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: '25 7 * * 0' + push: + branches: [ "main" , "issue-4673"] + workflow_dispatch: + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + # Uncomment the permissions below if installing in a private repository. + # contents: read + # actions: read + + steps: + - name: "Checkout code" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecard on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@97a0fba1372883ab732affbe8f94b823f91727db # v3.pre.node20 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard (optional). + # Commenting out will disable upload of results to your repo's Code Scanning dashboard + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: results.sarif diff --git a/.github/workflows/staging-image-tester.yaml b/.github/workflows/staging-image-tester.yaml index e8e6277d3..dd3d5e450 100644 --- a/.github/workflows/staging-image-tester.yaml +++ b/.github/workflows/staging-image-tester.yaml @@ -20,15 +20,15 @@ jobs: runs-on: ubuntu-latest steps: + - name: Check out code into the Go module directory + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - name: Set up Go 1.x uses: actions/setup-go@v5 with: - go-version: '1.22.4' + go-version-file: go.mod id: go - - name: Check out code into the Go module directory - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - name: Install CI run: | go get -v -t -d ./... diff --git a/Makefile b/Makefile index be24ff476..5ffdfd0fc 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,7 @@ CONTROLLER_GEN=$(shell which controller-gen) endif golangci-lint: - @command -v golangci-lint > /dev/null || curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.57.2 + @command -v golangci-lint > /dev/null || curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.60.3 # Run the golangci-lint tool .PHONY: go-lint diff --git a/OWNERS b/OWNERS index 161ae4adc..19f754c0b 100644 --- a/OWNERS +++ b/OWNERS @@ -6,19 +6,18 @@ # https://github.com/kubernetes/k8s.io/blob/master/registry.k8s.io/images/k8s-staging-external-dns/OWNERS approvers: - - johngmyers - mloiseleur - raffo - szuecs reviewers: - - johngmyers - mloiseleur - raffo - szuecs emeritus_approvers: - hjacobs + - johngmyers - linki - njuettner - seanmalloy diff --git a/README.md b/README.md index 055e1635a..9260fa433 100644 --- a/README.md +++ b/README.md @@ -36,13 +36,10 @@ ExternalDNS allows you to keep selected zones (via `--domain-filter`) synchroniz * [AWS Route 53](https://aws.amazon.com/route53/) * [AWS Cloud Map](https://docs.aws.amazon.com/cloud-map/) * [AzureDNS](https://azure.microsoft.com/en-us/services/dns) -* [BlueCat](https://bluecatnetworks.com) * [Civo](https://www.civo.com) * [CloudFlare](https://www.cloudflare.com/dns) -* [RcodeZero](https://www.rcodezero.at/) * [DigitalOcean](https://www.digitalocean.com/products/networking) * [DNSimple](https://dnsimple.com/) -* [Dyn](https://dyn.com/dns/) * [OpenStack Designate](https://docs.openstack.org/designate/latest/) * [PowerDNS](https://www.powerdns.com/) * [CoreDNS](https://coredns.io/) @@ -52,14 +49,11 @@ ExternalDNS allows you to keep selected zones (via `--domain-filter`) synchroniz * [RFC2136](https://tools.ietf.org/html/rfc2136) * [NS1](https://ns1.com/) * [TransIP](https://www.transip.eu/domain-name/) -* [VinylDNS](https://www.vinyldns.io) -* [Vultr](https://www.vultr.com) * [OVH](https://www.ovh.com) * [Scaleway](https://www.scaleway.com) * [Akamai Edge DNS](https://learn.akamai.com/en-us/products/cloud_security/edge_dns.html) * [GoDaddy](https://www.godaddy.com) * [Gandi](https://www.gandi.net) -* [ANS Group SafeDNS](https://portal.ans.co.uk/safedns/) * [IBM Cloud DNS](https://www.ibm.com/cloud/dns) * [TencentCloud PrivateDNS](https://cloud.tencent.com/product/privatedns) * [TencentCloud DNSPod](https://cloud.tencent.com/product/cns) @@ -85,12 +79,14 @@ Known providers using webhooks: | Adguard Home Provider | https://github.com/muhlba91/external-dns-provider-adguard | | Anexia | https://github.com/ProbstenHias/external-dns-anexia-webhook | | Bizfly Cloud | https://github.com/bizflycloud/external-dns-bizflycloud-webhook | +| Efficient IP | https://github.com/EfficientIP-Labs/external-dns-efficientip-webhook | | Gcore | https://github.com/G-Core/external-dns-gcore-webhook | | GleSYS | https://github.com/glesys/external-dns-glesys | | Hetzner | https://github.com/mconfalonieri/external-dns-hetzner-webhook | | IONOS | https://github.com/ionos-cloud/external-dns-ionos-webhook | | Infoblox | https://github.com/AbsaOSS/external-dns-infoblox-webhook | | Netcup | https://github.com/mrueg/external-dns-netcup-webhook | +| RouterOS | https://github.com/benfiola/external-dns-routeros-provider | | STACKIT | https://github.com/stackitcloud/external-dns-stackit-webhook | | Unifi | https://github.com/kashalls/external-dns-unifi-webhook | @@ -115,13 +111,10 @@ The following table clarifies the current status of the providers according to t | AWS Cloud Map | Beta | | | Akamai Edge DNS | Beta | | | AzureDNS | Stable | | -| BlueCat | Alpha | @seanmalloy @vinny-sabatini | | Civo | Alpha | @alejandrojnm | | CloudFlare | Beta | | -| RcodeZero | Alpha | | | DigitalOcean | Alpha | | | DNSimple | Alpha | | -| Dyn | Alpha | | | OpenStack Designate | Alpha | | | PowerDNS | Alpha | | | CoreDNS | Alpha | | @@ -131,15 +124,12 @@ The following table clarifies the current status of the providers according to t | RFC2136 | Alpha | | | NS1 | Alpha | | | TransIP | Alpha | | -| VinylDNS | Alpha | | | RancherDNS | Alpha | | | OVH | Alpha | | | Scaleway DNS | Alpha | @Sh4d1 | -| Vultr | Alpha | | | UltraDNS | Alpha | | | GoDaddy | Alpha | | | Gandi | Alpha | @packi | -| SafeDNS | Alpha | @assureddt | | IBMCloud | Alpha | @hughhuangzh | | TencentCloud | Alpha | @Hyzhou | | Plural | Alpha | @michaeljguarino | @@ -171,48 +161,40 @@ The following tutorials are provided: * AWS * [AWS Load Balancer Controller](docs/tutorials/aws-load-balancer-controller.md) * [Route53](docs/tutorials/aws.md) - * [Same domain for public and private Route53 zones](docs/tutorials/public-private-route53.md) + * [Same domain for public and private Route53 zones](docs/tutorials/aws-public-private-route53.md) * [Cloud Map](docs/tutorials/aws-sd.md) * [Kube Ingress AWS Controller](docs/tutorials/kube-ingress-aws.md) * [Azure DNS](docs/tutorials/azure.md) * [Azure Private DNS](docs/tutorials/azure-private-dns.md) * [Civo](docs/tutorials/civo.md) * [Cloudflare](docs/tutorials/cloudflare.md) -* [BlueCat](docs/tutorials/bluecat.md) * [CoreDNS](docs/tutorials/coredns.md) * [DigitalOcean](docs/tutorials/digitalocean.md) * [DNSimple](docs/tutorials/dnsimple.md) -* [Dyn](docs/tutorials/dyn.md) * [Exoscale](docs/tutorials/exoscale.md) * [ExternalName Services](docs/tutorials/externalname.md) * Google Kubernetes Engine * [Using Google's Default Ingress Controller](docs/tutorials/gke.md) - * [Using the Nginx Ingress Controller](docs/tutorials/nginx-ingress.md) + * [Using the Nginx Ingress Controller](docs/tutorials/gke-nginx.md) * [Headless Services](docs/tutorials/hostport.md) -* [Istio Gateway Source](docs/tutorials/istio.md) -* [Kubernetes Security Context](docs/tutorials/security-context.md) +* [Istio Gateway Source](docs/sources/istio.md) * [Linode](docs/tutorials/linode.md) -* [Nginx Ingress Controller](docs/tutorials/nginx-ingress.md) * [NS1](docs/tutorials/ns1.md) -* [NS Record Creation with CRD Source](docs/tutorials/ns-record.md) -* [MX Record Creation with CRD Source](docs/tutorials/mx-record.md) +* [NS Record Creation with CRD Source](docs/sources/ns-record.md) +* [MX Record Creation with CRD Source](docs/sources/mx-record.md) * [OpenStack Designate](docs/tutorials/designate.md) * [Oracle Cloud Infrastructure (OCI) DNS](docs/tutorials/oracle.md) * [PowerDNS](docs/tutorials/pdns.md) -* [RcodeZero](docs/tutorials/rcodezero.md) * [RancherDNS (RDNS)](docs/tutorials/rdns.md) * [RFC2136](docs/tutorials/rfc2136.md) * [TransIP](docs/tutorials/transip.md) -* [VinylDNS](docs/tutorials/vinyldns.md) * [OVH](docs/tutorials/ovh.md) * [Scaleway](docs/tutorials/scaleway.md) -* [Vultr](docs/tutorials/vultr.md) * [UltraDNS](docs/tutorials/ultradns.md) * [GoDaddy](docs/tutorials/godaddy.md) * [Gandi](docs/tutorials/gandi.md) -* [SafeDNS](docs/tutorials/ANS_Group_SafeDNS.md) * [IBM Cloud](docs/tutorials/ibmcloud.md) -* [Nodes as source](docs/tutorials/nodes.md) +* [Nodes as source](docs/sources/nodes.md) * [TencentCloud](docs/tutorials/tencentcloud.md) * [Plural](docs/tutorials/plural.md) * [Pi-hole](docs/tutorials/pihole.md) @@ -304,7 +286,7 @@ show us what you can do! The external-dns project is currently in need of maintainers for specific DNS providers. Ideally each provider would have at least two maintainers. It would be nice if the maintainers run the provider in production, but it -is not strictly required. Provider listed [here](https://github.com/kubernetes-sigs/external-dns#status-of-providers) +is not strictly required. Provider listed [here](https://github.com/kubernetes-sigs/external-dns#status-of-in-tree-providers) that do not have a maintainer listed are in need of assistance. Read the [contributing guidelines](CONTRIBUTING.md) and have a look at [the contributing docs](docs/contributing/getting-started.md) to learn about building the project, the project structure, and the purpose of each package. diff --git a/charts/external-dns/CHANGELOG.md b/charts/external-dns/CHANGELOG.md index 999ad8652..02b467e1d 100644 --- a/charts/external-dns/CHANGELOG.md +++ b/charts/external-dns/CHANGELOG.md @@ -18,6 +18,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [UNRELEASED] +## [v1.15.0] - 2023-09-10 + +### Changed + +- Updated _ExternalDNS_ OCI image version to [v0.15.0](https://github.com/kubernetes-sigs/external-dns/releases/tag/v0.15.0). ([#xxxx](https://github.com/kubernetes-sigs/external-dns/pull/xxxx)) _@stevehipwell_ + +### Fixed + +- Fixed `provider.webhook.resources` behavior to correctly leverage resource limits. ([#4560](https://github.com/kubernetes-sigs/external-dns/pull/4560)) _@crutonjohn_ +- Fixed `provider.webhook.imagePullPolicy` behavior to correctly leverage pull policy. ([#4643](https://github.com/kubernetes-sigs/external-dns/pull/4643)) _@kimsondrup_ +- Fixed to add correct webhook metric port to `Service` and `ServiceMonitor`. ([#4643](https://github.com/kubernetes-sigs/external-dns/pull/4643)) _@kimsondrup_ +- Fixed to no longer require the unauthenticated webhook provider port to be exposed for health probes. ([#4691](https://github.com/kubernetes-sigs/external-dns/pull/4691)) _@kimsondrup_ & _@hatrx_ + ## [v1.14.5] - 2023-06-10 ### Added @@ -58,7 +71,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Restore template support in `.Values.provider` and `.Values.provider.name` +- Restore template support in `.Values.provider` and `.Values.provider.name` ## [v1.14.1] - 2024-01-11 @@ -187,6 +200,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 RELEASE LINKS --> [UNRELEASED]: https://github.com/kubernetes-sigs/external-dns/tree/master/charts/external-dns +[v1.15.0]: https://github.com/kubernetes-sigs/external-dns/releases/tag/external-dns-helm-chart-1.15.0 [v1.14.5]: https://github.com/kubernetes-sigs/external-dns/releases/tag/external-dns-helm-chart-1.14.5 [v1.14.4]: https://github.com/kubernetes-sigs/external-dns/releases/tag/external-dns-helm-chart-1.14.4 [v1.14.3]: https://github.com/kubernetes-sigs/external-dns/releases/tag/external-dns-helm-chart-1.14.3 diff --git a/charts/external-dns/Chart.yaml b/charts/external-dns/Chart.yaml index 51f284c8e..ebde66ee3 100644 --- a/charts/external-dns/Chart.yaml +++ b/charts/external-dns/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: external-dns description: ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers. type: application -version: 1.14.5 -appVersion: 0.14.2 +version: 1.15.0 +appVersion: 0.15.0 keywords: - kubernetes - externaldns @@ -20,15 +20,13 @@ maintainers: email: steve.hipwell@gmail.com annotations: artifacthub.io/changes: | - - kind: added - description: "Added support for `extraContainers` argument." - - kind: added - description: "Added support for setting `excludeDomains` argument." - kind: changed - description: "Updated _ExternalDNS_ OCI image version to [v0.14.2](https://github.com/kubernetes-sigs/external-dns/releases/tag/v0.14.2)." - - kind: changed - description: "Updated `DNSEndpoint` CRD." - - kind: changed - description: "Changed the implementation for `revisionHistoryLimit` to be more generic." + description: "Updated _ExternalDNS_ OCI image version to [v0.15.0](https://github.com/kubernetes-sigs/external-dns/releases/tag/v0.15.0)." - kind: fixed - description: "Fixed the `ServiceMonitor` job name to correctly use the instance label." + description: "Fixed `provider.webhook.resources` behavior to correctly leverage resource limits." + - kind: fixed + description: "Fixed `provider.webhook.imagePullPolicy` behavior to correctly leverage pull policy." + - kind: fixed + description: "Fixed to add correct webhook metric port to `Service` and `ServiceMonitor`." + - kind: fixed + description: "Fixed to no longer require the unauthenticated webhook provider port to be exposed for health probes." diff --git a/charts/external-dns/README.md b/charts/external-dns/README.md index 8291bd1be..9b21ecdec 100644 --- a/charts/external-dns/README.md +++ b/charts/external-dns/README.md @@ -1,6 +1,6 @@ # external-dns -![Version: 1.14.5](https://img.shields.io/badge/Version-1.14.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.14.2](https://img.shields.io/badge/AppVersion-0.14.2-informational?style=flat-square) +![Version: 1.15.0](https://img.shields.io/badge/Version-1.15.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.15.0](https://img.shields.io/badge/AppVersion-0.15.0-informational?style=flat-square) ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers. @@ -27,7 +27,7 @@ helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/ After you've installed the repo you can install the chart. ```shell -helm upgrade --install external-dns external-dns/external-dns --version 1.14.5 +helm upgrade --install external-dns external-dns/external-dns --version 1.15.0 ``` ## Providers @@ -52,7 +52,6 @@ For set up for a specific provider using the Helm chart, see the following links - [godaddy](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/godaddy.md#using-helm) - [ns1](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/ns1.md#using-helm) - [plural](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/plural.md#using-helm) -- [vultr](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/vultr.md#using-helm) ## Namespaced Scoped Installation @@ -134,6 +133,7 @@ If `namespaced` is set to `true`, please ensure that `sources` my only contains | provider.webhook.readinessProbe | object | See _values.yaml_ | [Readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) configuration for the `webhook` container. | | provider.webhook.resources | object | `{}` | [Resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the `webhook` container. | | provider.webhook.securityContext | object | See _values.yaml_ | [Pod security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) for the `webhook` container. | +| provider.webhook.service.port | int | `8080` | Webhook exposed HTTP port for the service. | | provider.webhook.serviceMonitor | object | See _values.yaml_ | Optional [Service Monitor](https://prometheus-operator.dev/docs/operator/design/#servicemonitor) configuration for the `webhook` container. | | rbac.additionalPermissions | list | `[]` | Additional rules to add to the `ClusterRole`. | | rbac.create | bool | `true` | If `true`, create a `ClusterRole` & `ClusterRoleBinding` with access to the Kubernetes API. | diff --git a/charts/external-dns/README.md.gotmpl b/charts/external-dns/README.md.gotmpl index dc6103144..e313a2ba2 100644 --- a/charts/external-dns/README.md.gotmpl +++ b/charts/external-dns/README.md.gotmpl @@ -47,7 +47,6 @@ For set up for a specific provider using the Helm chart, see the following links - [godaddy](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/godaddy.md#using-helm) - [ns1](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/ns1.md#using-helm) - [plural](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/plural.md#using-helm) -- [vultr](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/vultr.md#using-helm) ## Namespaced Scoped Installation diff --git a/charts/external-dns/templates/deployment.yaml b/charts/external-dns/templates/deployment.yaml index 71b00937f..02e9b397a 100644 --- a/charts/external-dns/templates/deployment.yaml +++ b/charts/external-dns/templates/deployment.yaml @@ -147,7 +147,7 @@ spec: {{- with .Values.provider.webhook }} - name: webhook image: {{ include "external-dns.webhookImage" . }} - imagePullPolicy: {{ $.Values.image.pullPolicy }} + imagePullPolicy: {{ .image.pullPolicy }} {{- with .env }} env: {{- toYaml . | nindent 12 }} @@ -158,9 +158,6 @@ spec: {{- end }} ports: - name: http-webhook - protocol: TCP - containerPort: 8888 - - name: http-wh-metrics protocol: TCP containerPort: 8080 livenessProbe: @@ -173,6 +170,10 @@ spec: {{- toYaml . | nindent 12 }} {{- end }} {{- end }} + {{- with .resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} {{- with .securityContext }} securityContext: {{- toYaml . | nindent 12 }} diff --git a/charts/external-dns/templates/service.yaml b/charts/external-dns/templates/service.yaml index d3cc1941d..e55e2a368 100644 --- a/charts/external-dns/templates/service.yaml +++ b/charts/external-dns/templates/service.yaml @@ -1,3 +1,4 @@ +{{- $providerName := include "external-dns.providerName" . }} apiVersion: v1 kind: Service metadata: @@ -25,3 +26,11 @@ spec: port: {{ .Values.service.port }} targetPort: http protocol: TCP + {{- if eq $providerName "webhook" }} + {{- with .Values.provider.webhook.service }} + - name: http-webhook + port: {{ .port }} + targetPort: http-webhook + protocol: TCP + {{- end }} + {{- end }} diff --git a/charts/external-dns/templates/servicemonitor.yaml b/charts/external-dns/templates/servicemonitor.yaml index 95ff2f0fa..004756c7b 100644 --- a/charts/external-dns/templates/servicemonitor.yaml +++ b/charts/external-dns/templates/servicemonitor.yaml @@ -51,7 +51,7 @@ spec: {{- end }} {{- if eq $providerName "webhook" }} {{- with .Values.provider.webhook.serviceMonitor }} - - port: webhook-metrics + - port: http-webhook path: /metrics {{- with .interval }} interval: {{ . }} diff --git a/charts/external-dns/values.yaml b/charts/external-dns/values.yaml index 060dd1ffe..9d7dea1bb 100644 --- a/charts/external-dns/values.yaml +++ b/charts/external-dns/values.yaml @@ -269,6 +269,9 @@ provider: timeoutSeconds: 5 failureThreshold: 6 successThreshold: 1 + service: + # -- Webhook exposed HTTP port for the service. + port: 8080 # -- Optional [Service Monitor](https://prometheus-operator.dev/docs/operator/design/#servicemonitor) configuration for the `webhook` container. # @default -- See _values.yaml_ serviceMonitor: diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 63f96d076..5f5ecb08d 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -4,7 +4,7 @@ options: substitution_option: ALLOW_LOOSE machineType: 'N1_HIGHCPU_8' steps: - - name: 'docker.io/library/golang:1.22.4-bookworm' + - name: 'docker.io/library/golang:1.23-bookworm' entrypoint: make env: - VERSION=$_GIT_TAG diff --git a/controller/controller.go b/controller/controller.go index a3ef2e8b2..2521b4436 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -186,11 +186,13 @@ type Controller struct { // The interval between individual synchronizations Interval time.Duration // The DomainFilter defines which DNS records to keep or exclude - DomainFilter endpoint.DomainFilter + DomainFilter endpoint.DomainFilterInterface // The nextRunAt used for throttling and batching reconciliation nextRunAt time.Time - // The nextRunAtMux is for atomic updating of nextRunAt - nextRunAtMux sync.Mutex + // The runAtMutex is for atomic updating of nextRunAt and lastRunAt + runAtMutex sync.Mutex + // The lastRunAt used for throttling and batching reconciliation + lastRunAt time.Time // MangedRecordTypes are DNS record types that will be considered for management. ManagedRecordTypes []string // ExcludeRecordTypes are DNS record types that will be excluded from management. @@ -203,6 +205,10 @@ type Controller struct { func (c *Controller) RunOnce(ctx context.Context) error { lastReconcileTimestamp.SetToCurrentTime() + c.runAtMutex.Lock() + c.lastRunAt = time.Now() + c.runAtMutex.Unlock() + records, err := c.Registry.Records(ctx) if err != nil { registryErrorsTotal.Inc() @@ -239,7 +245,7 @@ func (c *Controller) RunOnce(ctx context.Context) error { Policies: []plan.Policy{c.Policy}, Current: records, Desired: endpoints, - DomainFilter: endpoint.MatchAllDomainFilters{&c.DomainFilter, ®istryFilter}, + DomainFilter: endpoint.MatchAllDomainFilters{c.DomainFilter, registryFilter}, ManagedRecords: c.ManagedRecordTypes, ExcludeRecords: c.ExcludeRecordTypes, OwnerID: c.Registry.OwnerID(), @@ -264,6 +270,24 @@ func (c *Controller) RunOnce(ctx context.Context) error { return nil } +func earliest(r time.Time, times ...time.Time) time.Time { + for _, t := range times { + if t.Before(r) { + r = t + } + } + return r +} + +func latest(r time.Time, times ...time.Time) time.Time { + for _, t := range times { + if t.After(r) { + r = t + } + } + return r +} + // Counts the intersections of A and AAAA records in endpoint and registry. func countMatchingAddressRecords(endpoints []*endpoint.Endpoint, registryRecords []*endpoint.Endpoint) (int, int) { recordsMap := make(map[string]map[string]struct{}) @@ -306,18 +330,20 @@ func countAddressRecords(endpoints []*endpoint.Endpoint) (int, int) { // ScheduleRunOnce makes sure execution happens at most once per interval. func (c *Controller) ScheduleRunOnce(now time.Time) { - c.nextRunAtMux.Lock() - defer c.nextRunAtMux.Unlock() - // schedule only if a reconciliation is not already planned - // to happen in the following c.MinEventSyncInterval - if !c.nextRunAt.Before(now.Add(c.MinEventSyncInterval)) { - c.nextRunAt = now.Add(c.MinEventSyncInterval) - } + c.runAtMutex.Lock() + defer c.runAtMutex.Unlock() + c.nextRunAt = latest( + c.lastRunAt.Add(c.MinEventSyncInterval), + earliest( + now.Add(5*time.Second), + c.nextRunAt, + ), + ) } func (c *Controller) ShouldRunOnce(now time.Time) bool { - c.nextRunAtMux.Lock() - defer c.nextRunAtMux.Unlock() + c.runAtMutex.Lock() + defer c.runAtMutex.Unlock() if now.Before(c.nextRunAt) { return false } diff --git a/controller/controller_test.go b/controller/controller_test.go index 7fa83f501..c6074f833 100644 --- a/controller/controller_test.go +++ b/controller/controller_test.go @@ -57,7 +57,7 @@ type errorMockProvider struct { mockProvider } -func (p *filteredMockProvider) GetDomainFilter() endpoint.DomainFilter { +func (p *filteredMockProvider) GetDomainFilter() endpoint.DomainFilterInterface { return p.domainFilter } @@ -278,15 +278,17 @@ func valueFromMetric(metric prometheus.Gauge) uint64 { } func TestShouldRunOnce(t *testing.T) { - ctrl := &Controller{Interval: 10 * time.Minute, MinEventSyncInterval: 5 * time.Second} + ctrl := &Controller{Interval: 10 * time.Minute, MinEventSyncInterval: 15 * time.Second} now := time.Now() // First run of Run loop should execute RunOnce assert.True(t, ctrl.ShouldRunOnce(now)) + assert.Equal(t, now.Add(10*time.Minute), ctrl.nextRunAt) // Second run should not assert.False(t, ctrl.ShouldRunOnce(now)) + ctrl.lastRunAt = now now = now.Add(10 * time.Second) // Changes happen in ingresses or services @@ -316,12 +318,17 @@ func TestShouldRunOnce(t *testing.T) { assert.False(t, ctrl.ShouldRunOnce(now)) // Multiple ingresses or services changes, closer than MinInterval from each other + ctrl.lastRunAt = now firstChangeTime := now secondChangeTime := firstChangeTime.Add(time.Second) // First change ctrl.ScheduleRunOnce(firstChangeTime) // Second change ctrl.ScheduleRunOnce(secondChangeTime) + + // Executions should be spaced by at least MinEventSyncInterval + assert.False(t, ctrl.ShouldRunOnce(now.Add(5*time.Second))) + // Should not postpone the reconciliation further than firstChangeTime + MinInterval now = now.Add(ctrl.MinEventSyncInterval) assert.True(t, ctrl.ShouldRunOnce(now)) diff --git a/docs/annotations/annotations.md b/docs/annotations/annotations.md index 6744abc6a..7c2d1f902 100644 --- a/docs/annotations/annotations.md +++ b/docs/annotations/annotations.md @@ -59,7 +59,10 @@ Otherwise, use the `IP` of each of the `Service`'s `Endpoints`'s `Addresses`. ## external-dns.alpha.kubernetes.io/hostname -Specifies the domain for the resource's DNS records. +Specifies the domain for the resource's DNS records. + +Multiple hostnames can be specified through a comma-separated list, e.g. +`svc.mydomain1.com,svc.mydomain2.com`. ## external-dns.alpha.kubernetes.io/ingress-hostname-source diff --git a/docs/contributing/getting-started.md b/docs/contributing/getting-started.md index 3f09c927f..d656d6516 100644 --- a/docs/contributing/getting-started.md +++ b/docs/contributing/getting-started.md @@ -1,7 +1,7 @@ # Quick Start - [Git](https://git-scm.com/downloads) -- [Go 1.22+](https://golang.org/dl/) +- [Go 1.23+](https://golang.org/dl/) - [Go modules](https://github.com/golang/go/wiki/Modules) - [golangci-lint](https://github.com/golangci/golangci-lint) - [ko](https://ko.build/) diff --git a/docs/faq.md b/docs/faq.md index 2e51d4cc6..d8666f363 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -28,7 +28,7 @@ ExternalDNS can solve this for you as well. ### Which DNS providers are supported? -Please check the [provider status table](https://github.com/kubernetes-sigs/external-dns#status-of-providers) for the list of supported providers and their status. +Please check the [provider status table](https://github.com/kubernetes-sigs/external-dns#status-of-in-tree-providers) for the list of supported providers and their status. As stated in the README, we are currently looking for stable maintainers for those providers, to ensure that bugfixes and new features will be available for all of those. @@ -221,7 +221,7 @@ $ docker run \ -e EXTERNAL_DNS_SOURCE=$'service\ningress' \ -e EXTERNAL_DNS_PROVIDER=google \ -e EXTERNAL_DNS_DOMAIN_FILTER=$'foo.com\nbar.com' \ - registry.k8s.io/external-dns/external-dns:v0.14.2 + registry.k8s.io/external-dns/external-dns:v0.15.0 time="2017-08-08T14:10:26Z" level=info msg="config: &{APIServerURL: KubeConfig: Sources:[service ingress] Namespace: ... ``` diff --git a/docs/nat64.md b/docs/nat64.md new file mode 100644 index 000000000..9edd4afbb --- /dev/null +++ b/docs/nat64.md @@ -0,0 +1,21 @@ +Configure NAT64 DNS Records +======================================= + +Some NAT64 configurations are entirely handled outside the Kubernetes cluster, therefore Kubernetes does not know anything about the associated IPv4 addresses. ExternalDNS should also be able to create A records for those cases. +Therefore, we can configure `nat64-networks`, which **must** be a /96 network. You can also specify multiple `nat64-networks` for more complex setups. +This creates an additional A record with a NAT64-translated IPv4 address for each AAAA record pointing to an IPv6 address within the given `nat64-networks`. + +This can be configured with the following flag passed to the operator binary. You can also pass multiple `nat64-networks` by using a comma as seperator. +```sh +--nat64-networks="2001:db8:96::/96" +``` + + +## Setup Example + +We use an external NAT64 resolver and SIIT (Stateless IP/ICMP Translation). Therefore, our nodes only have IPv6 IP adresses but can reach IPv4 addresses *and* can be reached via IPv4. +Outgoing connections are a classic NAT64 setup, where all IPv6 addresses gets translated to a small pool of IPv4 addresses. +Incoming connnections are mapped on a different IPv4 pool, e.g. `198.51.100.0/24`, which can get translated one-to-one to IPv6 addresses. We dedicate a `/96` network for this, for example `2001:db8:96::/96`, so `198.51.100.0/24` can translated to `2001:db8:96::c633:6400/120`. Note: `/120` IPv6 network has exactly as many IP addresses as `/24` IPv4 network. + +Therefore, the `/96` network can be configured as `nat64-networks`. This means, that `2001:0DB8:96::198.51.100.10` or `2001:db8:96::c633:640a` can be translated to `198.51.100.10`. +Any source can point a record to an IPv6 address within the given `nat64-networks`, for example `2001:db8:96::c633:640a`. This creates by default an AAAA record and - if `nat64-networks` is configured - also an A record with `198.51.100.10` as target. \ No newline at end of file diff --git a/docs/rate-limits.md b/docs/rate-limits.md new file mode 100644 index 000000000..e50e7e95b --- /dev/null +++ b/docs/rate-limits.md @@ -0,0 +1,76 @@ +DNS provider API rate limits considerations +=========================================== + +## Introduction + +By design, external-dns refreshes all the records of a zone using API calls. +This refresh may happen peridically and upon any changed object if the flag `--events` is enabled. + +Depending on the size of the zone and the infrastructure deployment, this may lead to external-dns +hitting the DNS provider's rate-limits more easily. + +In particular, it has been found that with 200k records in an AWS Route53 zone, each refresh triggers around +70 API calls to retrieve all the records, making it more likely to hit the AWS Route53 API rate limits. + +To prevent this problem from happening, external-dns has implemented a cache to reduce the pressure on the DNS +provider APIs. + +This cache is optional and systematically invalidated when DNS records have been changed in the cluster +(new or deleted domains or changed target). + +## Trade-offs + +The major trade-off of this setting relies in the ability to recover from a deleted record on the DNS provider side. +As the DNS records are cached in memory, external-dns will not be made aware of the missing records and will hence +take a longer time to restore the deleted or modified record on the provider side. + +This option is enabled using the `--provider-cache-time=15m` command line argument, and turned off when `--provider-cache-time=0m` + +## Monitoring + +You can evaluate the behaviour of the cache thanks to the built-in metrics + +* `external_dns_provider_cache_records_calls` + * The number of calls to the provider cache Records list. + * The label `from_cache=true` indicates that the records were retrieved from memory and the DNS provider was not reached + * The label `from_cache=false` indicates that the cache was not used and the records were retrieved from the provider +* `external_dns_provider_cache_apply_changes_calls` + * The number of calls to the provider cache ApplyChanges. + * Each ApplyChange systematically invalidates the cache and makes subsequent Records list to be retrieved from the provider without cache. + +## Related options + +This global option is available for all providers and can be used in pair with other global +or provider-specific options to fine-tune the behaviour of external-dns +to match the specific needs of your deployments, with the goal to reduce the number of API calls to your DNS provider. + +* Google + * `--google-batch-change-interval=1s` When using the Google provider, set the interval between batch changes. ($EXTERNAL_DNS_GOOGLE_BATCH_CHANGE_INTERVAL) + * `--google-batch-change-size=1000` When using the Google provider, set the maximum number of changes that will be applied in each batch. +* AWS + * `--aws-batch-change-interval=1s` When using the AWS provider, set the interval between batch changes. + * `--aws-batch-change-size=1000` When using the AWS provider, set the maximum number of changes that will be applied in each batch. + * `--aws-batch-change-size-bytes=32000` When using the AWS provider, set the maximum byte size that will be applied in each batch. + * `--aws-batch-change-size-values=1000` When using the AWS provider, set the maximum total record values that will be applied in each batch. + * `--aws-zones-cache-duration=0s` When using the AWS provider, set the zones list cache TTL (0s to disable). + * `--[no-]aws-zone-match-parent` Expand limit possible target by sub-domains +* Cloudflare + * `--cloudflare-dns-records-per-page=100` When using the Cloudflare provider, specify how many DNS records listed per page, max possible 5,000 (default: 100) +* OVH + * `--ovh-api-rate-limit=20` When using the OVH provider, specify the API request rate limit, X operations by seconds (default: 20) + +* Global + * `--registry=txt` The registry implementation to use to keep track of DNS record ownership. Other registry options such as dynamodb can help mitigate rate limits by storing the registry outside of the DNS hosted zone (default: txt, options: txt, noop, dynamodb, aws-sd) + * `--txt-cache-interval=0s` The interval between cache synchronizations in duration format (default: disabled) + * `--interval=1m0s` The interval between two consecutive synchronizations in duration format (default: 1m) + * `--min-event-sync-interval=5s` The minimum interval between two consecutive synchronizations triggered from kubernetes events in duration format (default: 5s) + * `--[no-]events` When enabled, in addition to running every interval, the reconciliation loop will get triggered when supported sources change (default: disabled) + +A general recommendation is to enable `--events` and keep `--min-event-sync-interval` relatively low to have a better responsiveness when records are +created or updated inside the cluster. +This should represent an acceptable propagation time between the creation of your k8s resources and the time they become registered in your DNS server. + +On a general manner, the higher the `--provider-cache-time`, the lower the impact on the rate limits, but also, the slower the recovery in case of a deletion. +The `--provider-cache-time` value should hence be set to an acceptable time to automatically recover restore deleted records. + +✍️ Note that caching is done within the external-dns controller memory. You can invalidate the cache at any point in time by restarting it (for example doing a rolling update). diff --git a/docs/registry/dynamodb.md b/docs/registry/dynamodb.md index 8f5cc4b43..545e09e16 100644 --- a/docs/registry/dynamodb.md +++ b/docs/registry/dynamodb.md @@ -1,19 +1,11 @@ # The DynamoDB registry -The DynamoDB registry stores DNS record metadata in an AWS DynamoDB table. - -## The DynamoDB Table - -By default, the DynamoDB registry stores data in the table named `external-dns`. -A different table may be specified using the `--dynamodb-table` flag. -A different region may be specified using the `--dynamodb-region` flag. - -The table must have a partition (hash) key named `k` and string type. -The table must not have a sort (range) key. +As opposed to the default TXT registry, the DynamoDB registry stores DNS record metadata in an AWS DynamoDB table instead of in TXT records in a hosted zone. +This following tutorial extends [Setting up ExternalDNS for Services on AWS](../tutorials/aws.md) to use the DynamoDB registry instead. ## IAM permissions -The ExternalDNS Role must be granted the following permissions: +The ExternalDNS [IAM Policy](../tutorials/aws.md#iam-policy) must additionally be granted the following permissions: ```json { @@ -31,12 +23,140 @@ The ExternalDNS Role must be granted the following permissions: } ``` -The region and account ID may be specified explicitly specified instead of using wildcards. +The region and account ID may be specified explicitly specified instead of using wildcards. + +## Create a DynamoDB Table + +By default, the DynamoDB registry stores data in the table named `external-dns` and it needs to exist before configuring ExternalDNS to use the DynamoDB registry. +If the DynamoDB table has a different name, it may be specified using the `--dynamodb-table` flag. +If the DynamoDB table is in a different region, it may be specified using the `--dynamodb-region` flag. + +The following command creates a DynamoDB table with the name: `external-dns`: + +> The table must have a partition (HASH) key named `k` of type string (`S`) and the table must NOT have a sort (RANGE) key. + +```bash +aws dynamodb create-table \ + --table-name external-dns \ + --attribute-definitions \ + AttributeName=k,AttributeType=S \ + --key-schema \ + AttributeName=k,KeyType=HASH \ + --provisioned-throughput \ + ReadCapacityUnits=5,WriteCapacityUnits=5 \ + --table-class STANDARD +``` + +## Set up a hosted zone + +Follow [Set up a hosted zone](../tutorials/aws.md#set-up-a-hosted-zone) + +## Modify ExternalDNS deployment + +The ExternalDNS deployment from [Deploy ExternalDNS](../tutorials/aws.md#deploy-externaldns) needs the following modifications: + +* `--registry=txt` should be changed to `--registry=dynamodb` +* Add `--dynamodb-table=external-dns` to specify the name of the DynamoDB table, its value defaults to `external-dns` +* Add `--dynamodb-region=us-east-1` to specify the region of the DynamoDB table + +For example: + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: external-dns + labels: + app.kubernetes.io/name: external-dns +spec: + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: external-dns + template: + metadata: + labels: + app.kubernetes.io/name: external-dns + spec: + containers: + - name: external-dns + image: registry.k8s.io/external-dns/external-dns:v0.15.0 + args: + - --source=service + - --source=ingress + - --domain-filter=example.com # will make ExternalDNS see only the hosted zones matching provided domain, omit to process all available hosted zones + - --provider=aws + - --policy=upsert-only # would prevent ExternalDNS from deleting any records, omit to enable full synchronization + - --aws-zone-type=public # only look at public hosted zones (valid values are public, private or no value for both) + - --registry=dynamodb # previously, --registry=txt + - --dynamodb-table=external-dns # defaults to external-dns + - --dynamodb-region=us-east-1 # set to the region the DynamoDB table in + - --txt-owner-id=my-hostedzone-identifier + env: + - name: AWS_DEFAULT_REGION + value: us-east-1 # change to region where EKS is installed + # # Uncomment below if using static credentials + # - name: AWS_SHARED_CREDENTIALS_FILE + # value: /.aws/credentials + # volumeMounts: + # - name: aws-credentials + # mountPath: /.aws + # readOnly: true + # volumes: + # - name: aws-credentials + # secret: + # secretName: external-dns +``` + +## Validate ExternalDNS works + +Create either a [Service](../tutorials/aws.md#verify-externaldns-works-service-example) or an [Ingress](../tutorials/aws.md#verify-externaldns-works-ingress-example) and + +After roughly two minutes, check that the corresponding entry was created in the DynamoDB table: + +```bash +aws dynamodb scan --table-name external-dns +``` + +This will show something like: +``` +{ + "Items": [ + { + "k": { + "S": "nginx.example.com#A#" + }, + "o": { + "S": "my-identifier" + }, + "l": { + "M": { + "resource": { + "S": "service/default/nginx" + } + } + } + } + ], + "Count": 1, + "ScannedCount": 1, + "ConsumedCapacity": null +} +``` + +## Clean up + +In addition to the clean up steps in [Setting up ExternalDNS for Services on AWS](../tutorials/aws.md#clean-up), delete the DynamoDB table that was used as a registry. + +```bash +aws dynamodb delete-table \ + --table-name external-dns +``` ## Caching -The DynamoDB registry can optionally cache DNS records read from the provider. This can mitigate -rate limits imposed by the provider. +The DynamoDB registry can optionally cache DNS records read from the provider. This can mitigate rate limits imposed by the provider. Caching is enabled by specifying a cache duration with the `--txt-cache-interval` flag. @@ -48,4 +168,4 @@ the metadata therein to the DynamoDB table. If any such TXT records exist, any p must be supplied. If TXT records are in the set of managed record types specified by `--managed-record-types`, -it will then delete the ownership TXT records on a subsequent reconciliation. \ No newline at end of file +it will then delete the ownership TXT records on a subsequent reconciliation. diff --git a/docs/release.md b/docs/release.md index c053df04c..2470712cb 100644 --- a/docs/release.md +++ b/docs/release.md @@ -31,7 +31,7 @@ You must be an official maintainer of the project to be able to do a release. - Branch out from the default branch and run `scripts/kustomize-version-updater.sh` to update the image tag used in the kustomization.yaml. - Create an issue to release the corresponding Helm chart via the chart release process (below) assigned to a chart maintainer - Create a PR with the kustomize change. -- Create a PR to replace all versions for docker images in the tutorials. A possible script to use is `sd registry.k8s.io/external-dns/external-dns:.* registry.k8s.io/external-dns/external-dns:v0.14.2 $(fd --type file)` which uses the `fd` and `sd` utilities. +- Create a PR to replace all versions for docker images in the tutorials. A possible script to use is `sd registry.k8s.io/external-dns/external-dns:v0.15.0` - Once the PR is merged, all is done :-) ## How to release a new chart version diff --git a/docs/sources/sources.md b/docs/sources/about.md similarity index 97% rename from docs/sources/sources.md rename to docs/sources/about.md index b15662491..5a7a6d3bf 100644 --- a/docs/sources/sources.md +++ b/docs/sources/about.md @@ -1,8 +1,8 @@ -# Sources +# About | Source | Resources | annotation-filter | label-filter | |---------------------------------|-------------------------------------------------------------------------------|-------------------|--------------| -| ambassador-host | Host.getambassador.io | | | +| ambassador-host | Host.getambassador.io | Yes | Yes | | connector | | | | | contour-httpproxy | HttpProxy.projectcontour.io | Yes | | | cloudfoundry | | | | diff --git a/docs/tutorials/f5-virtualserver.md b/docs/sources/f5-virtualserver.md similarity index 93% rename from docs/tutorials/f5-virtualserver.md rename to docs/sources/f5-virtualserver.md index f91acabec..5df99cdf3 100644 --- a/docs/tutorials/f5-virtualserver.md +++ b/docs/sources/f5-virtualserver.md @@ -1,4 +1,4 @@ -# Configuring ExternalDNS to use the F5 Networks VirtualServer Source +# F5 Networks VirtualServer Source This tutorial describes how to configure ExternalDNS to use the F5 Networks VirtualServer Source. It is meant to supplement the other provider-specific setup tutorials. The F5 Networks VirtualServer CRD is part of [this](https://github.com/F5Networks/k8s-bigip-ctlr) project. See more in-depth info regarding the VirtualServer CRD [here](https://github.com/F5Networks/k8s-bigip-ctlr/blob/master/docs/config_examples/customResource/CustomResource.md#virtualserver). @@ -30,4 +30,4 @@ Note that, in case you're not installing via Helm, you'll need the following in - get - list - watch -``` \ No newline at end of file +``` diff --git a/docs/tutorials/gateway-api.md b/docs/sources/gateway-api.md similarity index 69% rename from docs/tutorials/gateway-api.md rename to docs/sources/gateway-api.md index 722b637c5..534cc0363 100644 --- a/docs/tutorials/gateway-api.md +++ b/docs/sources/gateway-api.md @@ -1,14 +1,29 @@ -# Configuring ExternalDNS to use Gateway API Route Sources +# Gateway API Route Sources This describes how to configure ExternalDNS to use Gateway API Route sources. It is meant to supplement the other provider-specific setup tutorials. ## Supported API Versions -As the Gateway API is still in an experimental phase, ExternalDNS makes no backwards -compatibilty guarantees regarding its support. However, it currently supports a mixture of -v1alpha2, v1beta1, v1 APIs. Gateways and HTTPRoutes are supported using the v1 and v1beta1 API (which is converted to v1 when using the latest CRDs). -GRPCRoutes, TLSRoutes, TCPRoutes, and UDPRoutes are supported using the v1alpha2 API. +ExternalDNS currently supports a mixture of v1alpha2, v1beta1, v1 APIs. + +Gateway API has two release channels: Standard and Experimental. +The Experimental channel includes v1alpha2, v1beta2, and v1 APIs. +The Standard channel only includes v1beta2 and v1 APIs, not v1alpha2. + +TCPRoutes, TLSRoutes, and UDPRoutes only exist in v1alpha2 and continued support for +these versions is NOT guaranteed. At some time in the future, Gateway API will graduate +these Routes to v1. ExternalDNS will likely follow that upgrade and move to the v1 API, +where they will be available in the Standard release channel. This will be a breaking +change if your Experimental CRDs are not updated to include the new v1 API. + +Gateways and HTTPRoutes are available in v1alpha2, v1beta1, and v1 APIs. +However, some notable environments are behind in upgrading their CRDs to include the v1 API. +For compatibility reasons Gateways and HTTPRoutes use the v1beta1 API. + +GRPCRoutes are available in v1alpha2 and v1 APIs, not v1beta2. +Therefore, GRPCRoutes use the v1 API which is available in both release channels. +Unfortunately, this means they will not be available in environments with old CRDs. ## Hostnames @@ -72,7 +87,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: # Add desired Gateway API Route sources. - --source=gateway-httproute diff --git a/docs/sources/gateway.md b/docs/sources/gateway.md index 7482aaa58..61913e84f 100644 --- a/docs/sources/gateway.md +++ b/docs/sources/gateway.md @@ -5,7 +5,7 @@ sources create DNS entries based on their respective `gateway.networking.k8s.io` ## Filtering the Routes considered -These sources support the `--label-filter` flag, which filters *Route resources +These sources support the `--label-filter` flag, which filters \*Route resources by a set of labels. ## Domain names @@ -16,67 +16,103 @@ of [domain names from the *Route](#domain-names-from-route). It then iterates over each of the `status.parents` with a [matching Gateway](#matching-gateways) and at least one [matching listener](#matching-listeners). For each matching listener, if the -listener has a `hostname`, it narrows the set of domain names from the *Route to the portion +listener has a `hostname`, it narrows the set of domain names from the \*Route to the portion that overlaps the `hostname`. If a matching listener does not have a `hostname`, it uses the un-narrowed set of domain names. ### Domain names from Route -The set of domain names from a *Route is sourced from the following places: +The set of domain names from a \*Route is sourced from the following places: -* If the *Route is a GRPCRoute, HTTPRoute, or TLSRoute, adds each of the`spec.hostnames`. +- If the \*Route is a GRPCRoute, HTTPRoute, or TLSRoute, adds each of the`spec.hostnames`. -* Adds the hostnames from any `external-dns.alpha.kubernetes.io/hostname` annotation on the *Route. -This behavior is suppressed if the `--ignore-hostname-annotation` flag was specified. +- Adds the hostnames from any `external-dns.alpha.kubernetes.io/hostname` annotation on the \*Route. + This behavior is suppressed if the `--ignore-hostname-annotation` flag was specified. -* If no endpoints were produced by the previous steps -or the `--combine-fqdn-annotation` flag was specified, then adds hostnames -generated from any`--fqdn-template` flag. +- If no endpoints were produced by the previous steps + or the `--combine-fqdn-annotation` flag was specified, then adds hostnames + generated from any`--fqdn-template` flag. -* If no endpoints were produced by the previous steps, each -attached Gateway listener will use its `hostname`, if present. +- If no endpoints were produced by the previous steps, each + attached Gateway listener will use its `hostname`, if present. ### Matching Gateways -Matching Gateways are discovered by iterating over the *Route's `status.parents`: +Matching Gateways are discovered by iterating over the \*Route's `status.parents`: -* Ignores parents with a `parentRef.group` other than -`gateway.networking.k8s.io` or a `parentRef.kind` other than `Gateway`. +- Ignores parents with a `parentRef.group` other than + `gateway.networking.k8s.io` or a `parentRef.kind` other than `Gateway`. -* If the `--gateway-namespace` flag was specified, ignores parents with a `parentRef.namespace` other -than the specified value. +- If the `--gateway-namespace` flag was specified, ignores parents with a `parentRef.namespace` other + than the specified value. -* If the `--gateway-label-filter` flag was specified, ignores parents whose Gateway does not match the -specified label filter. +- If the `--gateway-label-filter` flag was specified, ignores parents whose Gateway does not match the + specified label filter. -* Ignores parents whose Gateway either does not exist or has not accepted the route. +- Ignores parents whose Gateway either does not exist or has not accepted the route. ### Matching listeners Iterates over all listeners for the parent's `parentRef.sectionName`: -* Ignores listeners whose `protocol` field does not match the kind of the *Route per the following table: +- Ignores listeners whose `protocol` field does not match the kind of the \*Route per the following table: -| kind | protocols | -|------------|-------------| -| GRPCRoute | HTTP, HTTPS | -| HTTPRoute | HTTP, HTTPS | -| TCPRoute | TCP | -| TLSRoute | TLS | -| UDPRoute | UDP | +| kind | protocols | +| --------- | ----------- | +| GRPCRoute | HTTP, HTTPS | +| HTTPRoute | HTTP, HTTPS | +| TCPRoute | TCP | +| TLSRoute | TLS | +| UDPRoute | UDP | -* If the parent's `parentRef.port` port is specified, ignores listeners without a matching `port`. +- If the parent's `parentRef.port` port is specified, ignores listeners without a matching `port`. -* Ignores listeners which specify an `allowedRoutes` which does not allow the route. +- Ignores listeners which specify an `allowedRoutes` which does not allow the route. ## Targets -The targets of the DNS entries created from a *Route are sourced from the following places: +The targets of the DNS entries created from a \*Route are sourced from the following places: -1. If a matching parent Gateway has an `external-dns.alpha.kubernetes.io/target` annotation, uses -the values from that. +1. If a matching parent Gateway has an `external-dns.alpha.kubernetes.io/target` annotation, uses + the values from that. -2. Otherwise, iterates over that parent Gateway's `status.addresses`, -adding each address's `value`. +2. Otherwise, iterates over that parent Gateway's `status.addresses`, + adding each address's `value`. -The targets from each parent Gateway matching the *Route are then combined and de-duplicated. +The targets from each parent Gateway matching the \*Route are then combined and de-duplicated. + +## Dualstack Routes + +Gateway resources may be served from an external-loadbalancer which may support both IPv4 and "dualstack" (both IPv4 and IPv6) interfaces. +External DNS Controller uses the `external-dns.alpha.kubernetes.io/dualstack` annotation to determine this. If this annotation is +set to `true` then ExternalDNS will create two records (one A record +and one AAAA record) for each hostname associated with the Route resource. + +Example: + +```yaml +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + annotations: + external-dns.alpha.kubernetes.io/dualstack: "true" + name: echo +spec: + hostnames: + - echoserver.example.org + rules: + - backendRefs: + - group: "" + kind: Service + name: echo + port: 1027 + weight: 1 + matches: + - path: + type: PathPrefix + value: /echo +``` + +The above HTTPRoute resource is backed by a dualstack Gateway. +ExternalDNS will create both an A `echoserver.example.org` record and +an AAAA record of the same name, that each are aliases for the same LB. diff --git a/docs/tutorials/gloo-proxy.md b/docs/sources/gloo-proxy.md similarity index 92% rename from docs/tutorials/gloo-proxy.md rename to docs/sources/gloo-proxy.md index 077372c78..79e9f4045 100644 --- a/docs/tutorials/gloo-proxy.md +++ b/docs/sources/gloo-proxy.md @@ -1,4 +1,4 @@ -# Configuring ExternalDNS to use the Gloo Proxy Source +# Gloo Proxy Source This tutorial describes how to configure ExternalDNS to use the Gloo Proxy source. It is meant to supplement the other provider-specific setup tutorials. @@ -22,7 +22,7 @@ spec: containers: - name: external-dns # update this to the desired external-dns version - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=gloo-proxy - --gloo-namespace=custom-gloo-system # gloo system namespace. Specify multiple times for multiple namespaces. Omit to use the default (gloo-system) @@ -90,7 +90,7 @@ spec: containers: - name: external-dns # update this to the desired external-dns version - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=gloo-proxy - --gloo-namespace=custom-gloo-system # gloo system namespace. Specify multiple times for multiple namespaces. Omit to use the default (gloo-system) diff --git a/docs/tutorials/istio.md b/docs/sources/istio.md similarity index 97% rename from docs/tutorials/istio.md rename to docs/sources/istio.md index f46876ba2..20ce2b7cc 100644 --- a/docs/tutorials/istio.md +++ b/docs/sources/istio.md @@ -1,4 +1,5 @@ -# Configuring ExternalDNS to use the Istio Gateway and/or Istio Virtual Service Source +# Istio Gateway / Virtual Service Source + This tutorial describes how to configure ExternalDNS to use the Istio Gateway source. It is meant to supplement the other provider-specific setup tutorials. @@ -28,7 +29,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -43,6 +44,7 @@ spec: ``` ### Manifest (for clusters with RBAC enabled) + ```yaml apiVersion: v1 kind: ServiceAccount @@ -58,7 +60,7 @@ rules: resources: ["services","endpoints","pods"] verbs: ["get","watch","list"] - apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] + resources: ["ingresses"] verbs: ["get","watch","list"] - apiGroups: [""] resources: ["nodes"] @@ -98,7 +100,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -134,7 +136,7 @@ kubectl patch clusterrole external-dns --type='json' \ ### Verify that Istio Gateway/VirtualService Source works -Follow the [Istio ingress traffic tutorial](https://istio.io/docs/tasks/traffic-management/ingress/) +Follow the [Istio ingress traffic tutorial](https://istio.io/docs/tasks/traffic-management/ingress/) to deploy a sample service that will be exposed outside of the service mesh. The following are relevant snippets from that tutorial. @@ -150,7 +152,9 @@ $ kubectl apply -f <(istioctl kube-inject -f https://raw.githubusercontent.com/i ``` #### Using a Gateway as a source + ##### Create an Istio Gateway: + ```bash $ cat <=0.11.0** version of ExternalDNS for this tutorial. - -## Managing DNS with SafeDNS - -If you want to learn about how to use the SafeDNS service read the following tutorials: -To learn more about the use of SafeDNS in general, see the following page: - -[ANS Group's SafeDNS documentation](https://docs.ukfast.co.uk/domains/safedns/index.html). - -## Creating SafeDNS credentials - -Generate a fresh API token for use with ExternalDNS, following the instructions -at the ANS Group developer [Getting-Started](https://developers.ukfast.io/getting-started) -page. You will need to grant read/write access to the SafeDNS API. No access to -any other ANS Group service is required. - -The environment variable `SAFEDNS_TOKEN` must have a value of this token to run -ExternalDNS with SafeDNS integration. - -## Deploy ExternalDNS - -Connect your `kubectl` client to the cluster you want to test ExternalDNS with. -Then apply one of the following manifests file to deploy ExternalDNS. - -### Manifest (for clusters without RBAC enabled) - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - containers: - - name: external-dns - # You will need to check what the latest version is yourself: - # https://github.com/kubernetes-sigs/external-dns/releases - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=service # ingress is also possible - # (optional) limit to only example.com domains; change to match the - # zone created above. - - --domain-filter=example.com - - --provider=safedns - env: - - name: SAFEDNS_TOKEN - value: "SAFEDNSTOKENSAFEDNSTOKEN" -``` - -### Manifest (for clusters with RBAC enabled) - -```yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - name: external-dns ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: external-dns -rules: -- apiGroups: [""] - resources: ["services","endpoints","pods"] - verbs: ["get","watch","list"] -- apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] - verbs: ["get","watch","list"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: external-dns-viewer -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: external-dns -subjects: -- kind: ServiceAccount - name: external-dns - namespace: default ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - serviceAccountName: external-dns - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=service # ingress is also possible - # (optional) limit to only example.com domains; change to match the - # zone created above. - - --domain-filter=example.com - - --provider=safedns - env: - - name: SAFEDNS_TOKEN - value: "SAFEDNSTOKENSAFEDNSTOKEN" -``` - -## Deploying an Nginx Service - -Create a service file called 'nginx.yaml' with the following contents: - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: nginx -spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - image: nginx - name: nginx - ports: - - containerPort: 80 ---- -apiVersion: v1 -kind: Service -metadata: - name: nginx - annotations: - external-dns.alpha.kubernetes.io/hostname: my-app.example.com -spec: - selector: - app: nginx - type: LoadBalancer - ports: - - protocol: TCP - port: 80 - targetPort: 80 -``` - -Note the annotation on the service; use a hostname that matches the domain -filter specified above. - -ExternalDNS uses this annotation to determine what services should be registered -with DNS. Removing the annotation will cause ExternalDNS to remove the -corresponding DNS records. - -Create the deployment and service: - -```console -$ kubectl create -f nginx.yaml -``` - -Depending where you run your service it can take a little while for your cloud -provider to create an external IP for the service. - -Once the service has an external IP assigned, ExternalDNS will notice the new -service IP address and synchronize the SafeDNS records. - -## Verifying SafeDNS records - -Check your [SafeDNS UI](https://my.ukfast.co.uk/safedns/index.php) and select -the appropriate domain to view the records for your SafeDNS zone. - -This should show the external IP address of the service as the A record for your -domain. - -Alternatively, you can perform a DNS lookup for the hostname specified: -```console -$ dig +short my-app.example.com -an.ip.addr.ess -``` - -## Cleanup - -Now that we have verified that ExternalDNS will automatically manage SafeDNS -records, we can delete the tutorial's example: - -``` -$ kubectl delete service -f nginx.yaml -$ kubectl delete service -f externaldns.yaml -``` diff --git a/docs/tutorials/akamai-edgedns.md b/docs/tutorials/akamai-edgedns.md index 97ac33b37..104b1503f 100644 --- a/docs/tutorials/akamai-edgedns.md +++ b/docs/tutorials/akamai-edgedns.md @@ -1,4 +1,4 @@ -# Setting up External-DNS for Services on Akamai Edge DNS +# Akamai Edge DNS ## Prerequisites @@ -104,7 +104,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # or ingress or both - --provider=akamai @@ -190,7 +190,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # or ingress or both - --provider=akamai diff --git a/docs/tutorials/alibabacloud.md b/docs/tutorials/alibabacloud.md index 6fec8dde6..d143e0e6d 100644 --- a/docs/tutorials/alibabacloud.md +++ b/docs/tutorials/alibabacloud.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Alibaba Cloud +# Alibaba Cloud This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster on Alibaba Cloud. Make sure to use **>=0.5.6** version of ExternalDNS for this tutorial @@ -113,7 +113,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -187,7 +187,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress diff --git a/docs/tutorials/aws-load-balancer-controller.md b/docs/tutorials/aws-load-balancer-controller.md index 98bc5da69..7cd6285e7 100644 --- a/docs/tutorials/aws-load-balancer-controller.md +++ b/docs/tutorials/aws-load-balancer-controller.md @@ -1,4 +1,4 @@ -# Using ExternalDNS with aws-load-balancer-controller +# AWS Load Balancer Controller This tutorial describes how to use ExternalDNS with the [aws-load-balancer-controller][1]. diff --git a/docs/tutorials/public-private-route53.md b/docs/tutorials/aws-public-private-route53.md similarity index 96% rename from docs/tutorials/public-private-route53.md rename to docs/tutorials/aws-public-private-route53.md index a93d4e4d9..bf87dfccf 100644 --- a/docs/tutorials/public-private-route53.md +++ b/docs/tutorials/aws-public-private-route53.md @@ -1,10 +1,10 @@ -# Setting up ExternalDNS using the same domain for public and private Route53 zones +# AWS Route53 with same domain for public and private zones This tutorial describes how to setup ExternalDNS using the same domain for public and private Route53 zones and [nginx-ingress-controller](https://github.com/kubernetes/ingress-nginx). It also outlines how to use [cert-manager](https://github.com/jetstack/cert-manager) to automatically issue SSL certificates from [Let's Encrypt](https://letsencrypt.org/) for both public and private records. ## Deploy public nginx-ingress-controller -Consult [External DNS nginx ingress docs](nginx-ingress.md) for installation guidelines. +You may be interested with [GKE with nginx ingress](gke-nginx.md) for installation guidelines. Specify `ingress-class` in nginx-ingress-controller container args: @@ -107,8 +107,6 @@ spec: ## Deploy private nginx-ingress-controller -Consult [External DNS nginx ingress docs](nginx-ingress.md) for installation guidelines. - Make sure to specify `ingress-class` in nginx-ingress-controller container args: ```yaml @@ -243,7 +241,7 @@ spec: - --txt-owner-id=external-dns - --ingress-class=external-ingress - --aws-zone-type=public - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 name: external-dns-public ``` @@ -281,7 +279,7 @@ spec: - --txt-owner-id=dev.k8s.nexus - --ingress-class=internal-ingress - --aws-zone-type=private - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 name: external-dns-private ``` diff --git a/docs/tutorials/aws-sd.md b/docs/tutorials/aws-sd.md index 5f0eb76c1..c12616931 100644 --- a/docs/tutorials/aws-sd.md +++ b/docs/tutorials/aws-sd.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS using AWS Cloud Map API +# AWS Cloud Map API This tutorial describes how to set up ExternalDNS for usage within a Kubernetes cluster with [AWS Cloud Map API](https://docs.aws.amazon.com/cloud-map/). @@ -81,7 +81,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 env: - name: AWS_REGION value: us-east-1 # put your CloudMap NameSpace region @@ -148,7 +148,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 env: - name: AWS_REGION value: us-east-1 # put your CloudMap NameSpace region @@ -221,7 +221,7 @@ metadata: name: nginx annotations: external-dns.alpha.kubernetes.io/hostname: nginx.external-dns-test.my-org.com - external-dns.alpha.kubernetes.io/ttl: 60 + external-dns.alpha.kubernetes.io/ttl: "60" spec: ... ``` diff --git a/docs/tutorials/aws.md b/docs/tutorials/aws.md index d4ac65741..c5797092b 100644 --- a/docs/tutorials/aws.md +++ b/docs/tutorials/aws.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on AWS +# AWS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster on AWS. Make sure to use **>=0.15.0** version of ExternalDNS for this tutorial @@ -418,7 +418,7 @@ Finally, install the ExternalDNS chart with Helm using the configuration specifi helm upgrade --install external-dns external-dns/external-dns --values values.yaml ``` -### Manifest (for clusters without RBAC enabled) +### When using clusters without RBAC enabled Save the following below as `externaldns-no-rbac.yaml`. @@ -442,7 +442,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -475,99 +475,40 @@ kubectl create --filename externaldns-no-rbac.yaml \ --namespace ${EXTERNALDNS_NS:-"default"} ``` -### Manifest (for clusters with RBAC enabled) +### When using clusters with RBAC enabled -Save the following below as `externaldns-with-rbac.yaml`. +If you're using EKS, you can update the `values.yaml` file you created earlier to include the annotations to link the Role ARN you created before. ```yaml -# comment out sa if it was previously created -apiVersion: v1 -kind: ServiceAccount -metadata: - name: external-dns - labels: - app.kubernetes.io/name: external-dns ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: external-dns - labels: - app.kubernetes.io/name: external-dns -rules: - - apiGroups: [""] - resources: ["services","endpoints","pods","nodes"] - verbs: ["get","watch","list"] - - apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] - verbs: ["get","watch","list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: external-dns-viewer - labels: - app.kubernetes.io/name: external-dns -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: external-dns -subjects: - - kind: ServiceAccount - name: external-dns - namespace: default # change to desired namespace: externaldns, kube-addons ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns - labels: - app.kubernetes.io/name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app.kubernetes.io/name: external-dns - template: - metadata: - labels: - app.kubernetes.io/name: external-dns - spec: - serviceAccountName: external-dns - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=service - - --source=ingress - - --domain-filter=example.com # will make ExternalDNS see only the hosted zones matching provided domain, omit to process all available hosted zones - - --provider=aws - - --policy=upsert-only # would prevent ExternalDNS from deleting any records, omit to enable full synchronization - - --aws-zone-type=public # only look at public hosted zones (valid values are public, private or no value for both) - - --registry=txt - - --txt-owner-id=external-dns - env: - - name: AWS_DEFAULT_REGION - value: us-east-1 # change to region where EKS is installed - # # Uncommend below if using static credentials - # - name: AWS_SHARED_CREDENTIALS_FILE - # value: /.aws/credentials - # volumeMounts: - # - name: aws-credentials - # mountPath: /.aws - # readOnly: true - # volumes: - # - name: aws-credentials - # secret: - # secretName: external-dns +provider: + name: aws +serviceAccount: + annotations: + eks.amazonaws.com/role-arn: arn:aws:iam::${ACCOUNT_ID}:role/${EXTERNALDNS_ROLE_NAME:-"external-dns"} ``` -When ready deploy: +If you need to provide credentials directly using a secret (ie. You're not using EKS), you can change the `values.yaml` file to include volume and volume mounts. -```bash -kubectl create --filename externaldns-with-rbac.yaml \ - --namespace ${EXTERNALDNS_NS:-"default"} +```yaml +provider: + name: aws +env: + - name: AWS_SHARED_CREDENTIALS_FILE + value: /etc/aws/credentials/my_credentials +extraVolumes: + - name: aws-credentials + secret: + secretName: external-dns # In this example, the secret will have the data stored in a key named `my_credentials` +extraVolumeMounts: + - name: aws-credentials + mountPath: /etc/aws/credentials + readOnly: true +``` + +When ready, update your Helm installation: + +```shell +helm upgrade --install external-dns external-dns/external-dns --values values.yaml ``` ## Arguments @@ -584,7 +525,7 @@ Annotations which are specific to AWS. ### alias -`external-dns.alpha.kubernetes.io/alias` if set to `true` on an ingress, it will create an ALIAS record when the target is an ALIAS as well. To make the target an alias, the ingress needs to be configured correctly as described in [the docs](./nginx-ingress.md#with-a-separate-tcp-load-balancer). In particular, the argument `--publish-service=default/nginx-ingress-controller` has to be set on the `nginx-ingress-controller` container. If one uses the `nginx-ingress` Helm chart, this flag can be set with the `controller.publishService.enabled` configuration option. +`external-dns.alpha.kubernetes.io/alias` if set to `true` on an ingress, it will create an ALIAS record when the target is an ALIAS as well. To make the target an alias, the ingress needs to be configured correctly as described in [the docs](./gke-nginx.md#with-a-separate-tcp-load-balancer). In particular, the argument `--publish-service=default/nginx-ingress-controller` has to be set on the `nginx-ingress-controller` container. If one uses the `nginx-ingress` Helm chart, this flag can be set with the `controller.publishService.enabled` configuration option. ### target-hosted-zone @@ -915,6 +856,10 @@ env: key: {{ YOUR_SECRET_KEY }} ``` +## DynamoDB Registry + +The DynamoDB Registry can be used to store dns records metadata. See the [DynamoDB Registry Tutorial](../registry/dynamodb.md) for more information. + ## Clean up Make sure to delete all Service objects before terminating the cluster so all load balancers get cleaned up correctly. @@ -971,8 +916,11 @@ Route53 has a [5 API requests per second per account hard quota](https://docs.aw Running several fast polling ExternalDNS instances in a given account can easily hit that limit. Some ways to reduce the request rate include: * Reduce the polling loop's synchronization interval at the possible cost of slower change propagation (but see `--events` below to reduce the impact). * `--interval=5m` (default `1m`) -* Trigger the polling loop on changes to K8s objects, rather than only at `interval`, to have responsive updates with long poll intervals +* Enable a Cache to store the zone records list. It comes with a cost: slower propagation when the zone gets modified from other sources such as the AWS console, terraform, cloudformation or anything similar. + * `--provider-cache-time=15m` (default `0m`) +* Trigger the polling loop on changes to K8s objects, rather than only at `interval` and ensure a minimum of time between events, to have responsive updates with long poll intervals * `--events` + * `--min-event-sync-interval=5m` (default `5s`) * Limit the [sources watched](https://github.com/kubernetes-sigs/external-dns/blob/master/pkg/apis/externaldns/types.go#L364) when the `--events` flag is specified to specific types, namespaces, labels, or annotations * `--source=ingress --source=service` - specify multiple times for multiple sources * `--namespace=my-app` @@ -1003,7 +951,7 @@ A simple way to implement randomised startup is with an init container: spec: initContainers: - name: init-jitter - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 command: - /bin/sh - -c diff --git a/docs/tutorials/azure-private-dns.md b/docs/tutorials/azure-private-dns.md index dc588ee0a..d10799583 100644 --- a/docs/tutorials/azure-private-dns.md +++ b/docs/tutorials/azure-private-dns.md @@ -1,4 +1,4 @@ -# Set up ExternalDNS for Azure Private DNS +# Azure Private DNS This tutorial describes how to set up ExternalDNS for managing records in Azure Private DNS. @@ -130,7 +130,7 @@ spec: spec: containers: - name: externaldns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -201,7 +201,7 @@ spec: serviceAccountName: externaldns containers: - name: externaldns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -272,7 +272,7 @@ spec: serviceAccountName: externaldns containers: - name: externaldns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -330,12 +330,12 @@ Apply the following manifest to create a service of type `LoadBalancer`. This wi --- apiVersion: v1 kind: Service -annotations: - service.beta.kubernetes.io/azure-load-balancer-internal: "true" - external-dns.alpha.kubernetes.io/hostname: server.example.com - external-dns.alpha.kubernetes.io/internal-hostname: server-clusterip.example.com metadata: name: nginx-svc + annotations: + service.beta.kubernetes.io/azure-load-balancer-internal: "true" + external-dns.alpha.kubernetes.io/hostname: server.example.com + external-dns.alpha.kubernetes.io/internal-hostname: server-clusterip.example.com spec: ports: - port: 80 diff --git a/docs/tutorials/azure.md b/docs/tutorials/azure.md index ab6ad77f9..e6d277e18 100644 --- a/docs/tutorials/azure.md +++ b/docs/tutorials/azure.md @@ -1,5 +1,4 @@ - -# Setting up ExternalDNS for Services on Azure +# Azure DNS This tutorial describes how to setup ExternalDNS for [Azure DNS](https://azure.microsoft.com/services/dns/) with [Azure Kubernetes Service](https://docs.microsoft.com/azure/aks/). @@ -518,7 +517,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -586,7 +585,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -657,7 +656,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress diff --git a/docs/tutorials/bluecat.md b/docs/tutorials/bluecat.md deleted file mode 100644 index 4bcda2597..000000000 --- a/docs/tutorials/bluecat.md +++ /dev/null @@ -1,152 +0,0 @@ -# Setting up external-dns for BlueCat - -The first external-dns release with with BlueCat provider support is v0.8.0. - -## Prerequisites -Install the BlueCat Gateway product and deploy the [community gateway workflows](https://github.com/bluecatlabs/gateway-workflows). - -## Configuration Options - -There are two ways to pass configuration options to the Bluecat Provider JSON configuration file and command line flags. Currently if a valid configuration file is used all -BlueCat provider configurations will be taken from the configuration file. If a configuraiton file is not provided or cannot be read then all BlueCat provider configurations will -be taken from the command line flags. In the future an enhancement will be made to merge configuration options from the configuration file and command line flags if both are provided. - -BlueCat provider supports getting the proxy URL from the environment variables. The format is the one specified by golang's [http.ProxyFromEnvironment](https://pkg.go.dev/net/http#ProxyFromEnvironment). - -### Using CLI Flags -When using CLI flags to configure the Bluecat Provider the BlueCat Gateway credentials are passed in using environment variables `BLUECAT_USERNAME` and `BLUECAT_PASSWORD`. - -#### Deploy -Setup up namespace, deployment, and service account: -``` -kubectl create namespace bluecat-example -kubectl create secret generic bluecat-credentials --from-literal=username=bluecatuser --from-literal=password=bluecatpassword -n bluecat-example -cat << EOF > ~/bluecat.yml ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: external-dns ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - selector: - matchLabels: - app: external-dns - strategy: - type: Recreate - template: - metadata: - labels: - app: external-dns - spec: - serviceAccountName: external-dns - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --log-level=debug - - --source=service - - --provider=bluecat - - --txt-owner-id=bluecat-example - - --bluecat-dns-configuration=Example - - --bluecat-dns-view=Internal - - --bluecat-gateway-host=https://bluecatgw.example.com - - --bluecat-root-zone=example.com - env: - - name: BLUECAT_USERNAME - valueFrom: - secretKeyRef: - name: bluecat-credentials - key: username - - name: BLUECAT_PASSWORD - valueFrom: - secretKeyRef: - name: bluecat-credentials - key: password -EOF -kubectl apply -f ~/bluecat.yml -n bluecat-example -``` - - -### Using JSON Configuration File -The options for configuring the Bluecat Provider are available through the JSON file provided to External-DNS via the flag `--bluecat-config-file`. - -| Key | Required | -| ----------------- | ------------------ | -| gatewayHost | Yes | -| gatewayUsername | No | -| gatewayPassword | No | -| dnsConfiguration | Yes | -| dnsView | Yes | -| rootZone | Yes | -| dnsServerName | No | -| dnsDeployType | No | -| skipTLSVerify | No (default false) | - -#### Deploy -Setup configuration file as k8s `Secret`. -``` -cat << EOF > ~/bluecat.json -{ - "gatewayHost": "https://bluecatgw.example.com", - "gatewayUsername": "user", - "gatewayPassword": "pass", - "dnsConfiguration": "Example", - "dnsView": "Internal", - "rootZone": "example.com", - "skipTLSVerify": false -} -EOF -kubectl create secret generic bluecatconfig --from-file ~/bluecat.json -n bluecat-example -``` - -Setup up namespace, deployment, and service account: -``` -kubectl create namespace bluecat-example -cat << EOF > ~/bluecat.yml ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: external-dns ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - selector: - matchLabels: - app: external-dns - strategy: - type: Recreate - template: - metadata: - labels: - app: external-dns - spec: - serviceAccountName: external-dns - volumes: - - name: bluecatconfig - secret: - secretName: bluecatconfig - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - volumeMounts: - - name: bluecatconfig - mountPath: "/etc/external-dns/" - readOnly: true - args: - - --log-level=debug - - --source=service - - --provider=bluecat - - --txt-owner-id=bluecat-example - - --bluecat-config-file=/etc/external-dns/bluecat.json -EOF -kubectl apply -f ~/bluecat.yml -n bluecat-example -``` diff --git a/docs/tutorials/civo.md b/docs/tutorials/civo.md index 057a12694..8922a9ebd 100644 --- a/docs/tutorials/civo.md +++ b/docs/tutorials/civo.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Civo +# Civo DNS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Civo DNS Manager. @@ -40,7 +40,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -104,7 +104,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -183,4 +183,4 @@ Now that we have verified that ExternalDNS will automatically manage Civo DNS re ``` $ kubectl delete service -f nginx.yaml $ kubectl delete service -f externaldns.yaml -``` \ No newline at end of file +``` diff --git a/docs/tutorials/cloudflare.md b/docs/tutorials/cloudflare.md index 418fb1c24..b2a4d40bf 100644 --- a/docs/tutorials/cloudflare.md +++ b/docs/tutorials/cloudflare.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Cloudflare +# Cloudflare DNS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Cloudflare DNS. @@ -57,7 +57,7 @@ Then apply one of the following manifests file to deploy ExternalDNS. Create a values.yaml file to configure ExternalDNS to use CloudFlare as the DNS provider. This file should include the necessary environment variables: -```shell +```yaml provider: name: cloudflare env: @@ -75,7 +75,7 @@ env: Use this in your values.yaml, if you are using API Token: -```shell +```yaml provider: name: cloudflare env: @@ -120,22 +120,22 @@ spec: app: external-dns spec: containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=service # ingress is also possible - - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - - --zone-id-filter=023e105f4ecef8ad9ca31a8372d0c353 # (optional) limit to a specific zone. - - --provider=cloudflare - - --cloudflare-proxied # (optional) enable the proxy feature of Cloudflare (DDOS protection, CDN...) - - --cloudflare-dns-records-per-page=5000 # (optional) configure how many DNS records to fetch per request + - name: external-dns + image: registry.k8s.io/external-dns/external-dns:v0.15.0 + args: + - --source=service # ingress is also possible + - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. + - --zone-id-filter=023e105f4ecef8ad9ca31a8372d0c353 # (optional) limit to a specific zone. + - --provider=cloudflare + - --cloudflare-proxied # (optional) enable the proxy feature of Cloudflare (DDOS protection, CDN...) + - --cloudflare-dns-records-per-page=5000 # (optional) configure how many DNS records to fetch per request env: - - name: CF_API_KEY + - name: CF_API_KEY valueFrom: secretKeyRef: name: cloudflare-api-key key: apiKey - - name: CF_API_EMAIL + - name: CF_API_EMAIL valueFrom: secretKeyRef: name: cloudflare-api-key @@ -155,15 +155,15 @@ kind: ClusterRole metadata: name: external-dns rules: -- apiGroups: [""] - resources: ["services","endpoints","pods"] - verbs: ["get","watch","list"] -- apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] - verbs: ["get","watch","list"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["list", "watch"] + - apiGroups: [""] + resources: ["services","endpoints","pods"] + verbs: ["get","watch","list"] + - apiGroups: ["extensions","networking.k8s.io"] + resources: ["ingresses"] + verbs: ["get","watch","list"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding @@ -195,26 +195,26 @@ spec: spec: serviceAccountName: external-dns containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=service # ingress is also possible - - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - - --zone-id-filter=023e105f4ecef8ad9ca31a8372d0c353 # (optional) limit to a specific zone. - - --provider=cloudflare - - --cloudflare-proxied # (optional) enable the proxy feature of Cloudflare (DDOS protection, CDN...) - - --cloudflare-dns-records-per-page=5000 # (optional) configure how many DNS records to fetch per request - env: - - name: CF_API_KEY - valueFrom: - secretKeyRef: - name: cloudflare-api-key - key: apiKey - - name: CF_API_EMAIL - valueFrom: - secretKeyRef: - name: cloudflare-api-key - key: email + - name: external-dns + image: registry.k8s.io/external-dns/external-dns:v0.15.0 + args: + - --source=service # ingress is also possible + - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. + - --zone-id-filter=023e105f4ecef8ad9ca31a8372d0c353 # (optional) limit to a specific zone. + - --provider=cloudflare + - --cloudflare-proxied # (optional) enable the proxy feature of Cloudflare (DDOS protection, CDN...) + - --cloudflare-dns-records-per-page=5000 # (optional) configure how many DNS records to fetch per request + env: + - name: CF_API_KEY + valueFrom: + secretKeyRef: + name: cloudflare-api-key + key: apiKey + - name: CF_API_EMAIL + valueFrom: + secretKeyRef: + name: cloudflare-api-key + key: email ``` ## Deploying an Nginx Service @@ -270,7 +270,7 @@ will cause ExternalDNS to remove the corresponding DNS records. Create the deployment and service: -``` +```shell $ kubectl create -f nginx.yaml ``` @@ -291,7 +291,7 @@ This should show the external IP address of the service as the A record for your Now that we have verified that ExternalDNS will automatically manage Cloudflare DNS records, we can delete the tutorial's example: -``` +```shell $ kubectl delete -f nginx.yaml $ kubectl delete -f externaldns.yaml ``` diff --git a/docs/tutorials/contour.md b/docs/tutorials/contour.md index c2f85d8a1..edd1484af 100644 --- a/docs/tutorials/contour.md +++ b/docs/tutorials/contour.md @@ -1,4 +1,4 @@ -# Setting up External DNS with Contour +# Contour HTTPProxy This tutorial describes how to configure External DNS to use the Contour `HTTPProxy` source. Using the `HTTPProxy` resource with External DNS requires Contour version 1.5 or greater. @@ -24,7 +24,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress @@ -93,7 +93,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress diff --git a/docs/tutorials/coredns.md b/docs/tutorials/coredns.md index 38d8f5b7d..37552b577 100644 --- a/docs/tutorials/coredns.md +++ b/docs/tutorials/coredns.md @@ -1,39 +1,56 @@ -# Setting up ExternalDNS for CoreDNS with minikube +# CoreDNS with minikube + +:warning: This tutorial is out of date. + +:information_source: PRs to update it are welcome ! + This tutorial describes how to setup ExternalDNS for usage within a [minikube](https://github.com/kubernetes/minikube) cluster that makes use of [CoreDNS](https://github.com/coredns/coredns) and [nginx ingress controller](https://github.com/kubernetes/ingress-nginx). + You need to: + * install CoreDNS with [etcd](https://github.com/etcd-io/etcd) enabled * install external-dns with coredns as a provider * enable ingress controller for the minikube cluster - ## Creating a cluster -``` + +```shell minikube start ``` ## Installing CoreDNS with etcd enabled + Helm chart is used to install etcd and CoreDNS. + ### Initializing helm chart -``` + +```shell helm init ``` + ### Installing etcd + [etcd operator](https://github.com/coreos/etcd-operator) is used to manage etcd clusters. ``` helm install stable/etcd-operator --name my-etcd-op ``` + etcd cluster is installed with example yaml from etcd operator website. -``` + +```shell kubectl apply -f https://raw.githubusercontent.com/coreos/etcd-operator/HEAD/example/example-etcd-cluster.yaml ``` ### Installing CoreDNS + In order to make CoreDNS work with etcd backend, values.yaml of the chart should be changed with corresponding configurations. + ``` wget https://raw.githubusercontent.com/helm/charts/HEAD/stable/coredns/values.yaml ``` You need to edit/patch the file with below diff + ```diff diff --git a/values.yaml b/values.yaml index 964e72b..e2fa934 100644 @@ -68,23 +85,29 @@ index 964e72b..e2fa934 100644 # Complete example with all the options: # - zones: # the `zones` block can be left out entirely, defaults to "." ``` + **Note**: + * IP address of etcd's endpoint should be get from etcd client service. It should be "example-etcd-cluster-client" in this example. This IP address is used through this document for etcd endpoint configuration. -``` + +```shell $ kubectl get svc example-etcd-cluster-client NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE example-etcd-cluster-client ClusterIP 10.105.68.165 2379/TCP 16m ``` + * Parameters should configure your own domain. "example.org" is used in this example. - After configuration done in values.yaml, you can install coredns chart. -``` + +```shell helm install --name my-coredns --values values.yaml stable/coredns ``` ## Installing ExternalDNS + ### Install external ExternalDNS + ETCD_URLS is configured to etcd client service address. Optionally, you can configure ETCD_USERNAME and ETCD_PASSWORD for authenticating to etcd. It is also possible to connect to the etcd cluster via HTTPS using the following environment variables: ETCD_CA_FILE, ETCD_CERT_FILE, ETCD_KEY_FILE, ETCD_TLS_SERVER_NAME, ETCD_TLS_INSECURE. @@ -109,7 +132,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=ingress - --provider=coredns @@ -176,7 +199,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=ingress - --provider=coredns @@ -187,13 +210,16 @@ spec: ``` ## Enable the ingress controller + You can use the ingress controller in minikube cluster. It needs to enable ingress addon in the cluster. -``` + +```shell minikube addons enable ingress ``` ## Testing ingress example -``` + +```shell $ cat ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress @@ -213,9 +239,9 @@ $ kubectl apply -f ingress.yaml ingress.extensions "nginx" created ``` - Wait a moment until DNS has the ingress IP. The DNS service IP is from CoreDNS service. It is "my-coredns-coredns" in this example. -``` + +```shell $ kubectl get svc my-coredns-coredns NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-coredns-coredns ClusterIP 10.100.4.143 53/UDP 12m diff --git a/docs/tutorials/designate.md b/docs/tutorials/designate.md index 9d84c6130..381fde7e1 100644 --- a/docs/tutorials/designate.md +++ b/docs/tutorials/designate.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on OpenStack Designate +# Designate DNS from OpenStack This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using OpenStack Designate DNS. @@ -59,7 +59,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -136,7 +136,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. diff --git a/docs/tutorials/digitalocean.md b/docs/tutorials/digitalocean.md index 705c8f433..e6383f2bf 100644 --- a/docs/tutorials/digitalocean.md +++ b/docs/tutorials/digitalocean.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on DigitalOcean +# DigitalOcean DNS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using DigitalOcean DNS. @@ -68,7 +68,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -135,7 +135,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. diff --git a/docs/tutorials/dnsimple.md b/docs/tutorials/dnsimple.md index dee483a72..1f0626971 100644 --- a/docs/tutorials/dnsimple.md +++ b/docs/tutorials/dnsimple.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on DNSimple +# DNSimple This tutorial describes how to setup ExternalDNS for usage with DNSimple. @@ -39,7 +39,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone you create in DNSimple. @@ -108,7 +108,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone you create in DNSimple. diff --git a/docs/tutorials/dyn.md b/docs/tutorials/dyn.md deleted file mode 100644 index d4d9a0f07..000000000 --- a/docs/tutorials/dyn.md +++ /dev/null @@ -1,149 +0,0 @@ -# Setting up ExternalDNS for Dyn - -## Creating a Dyn Configuration Secret - -For ExternalDNS to access the Dyn API, create a Kubernetes secret. - -To create the secret: - -``` -$ kubectl create secret generic external-dns \ - --from-literal=EXTERNAL_DNS_DYN_CUSTOMER_NAME=${DYN_CUSTOMER_NAME} \ - --from-literal=EXTERNAL_DNS_DYN_USERNAME=${DYN_USERNAME} \ - --from-literal=EXTERNAL_DNS_DYN_PASSWORD=${DYN_PASSWORD} -``` - -The credentials are the same ones created during account registration. As best practise, you are advised to -create an API-only user that is entitled to only the zones intended to be changed by ExternalDNS - -## Deploy ExternalDNS -The rest of this tutorial assumes you own `example.com` domain and your DNS provider is Dyn. Change `example.com` -with a domain/zone that you really own. - -In case of the dyn provider, the flag `--zone-id-filter` is mandatory as it specifies which zones to scan for records. Without it - - -Create a deployment file called `externaldns.yaml` with the following contents: - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=ingress - - --txt-prefix=_d - - --namespace=example - - --zone-id-filter=example.com - - --domain-filter=example.com - - --provider=dyn - env: - - name: EXTERNAL_DNS_DYN_CUSTOMER_NAME - valueFrom: - secretKeyRef: - name: external-dns - key: EXTERNAL_DNS_DYN_CUSTOMER_NAME - - name: EXTERNAL_DNS_DYN_USERNAME - valueFrom: - secretKeyRef: - name: external-dns - key: EXTERNAL_DNS_DYN_USERNAME - - name: EXTERNAL_DNS_DYN_PASSWORD - valueFrom: - secretKeyRef: - name: external-dns - key: EXTERNAL_DNS_DYN_PASSWORD -EOF -``` - -As we'll be creating an Ingress resource, you need `--txt-prefix=_d` as a CNAME cannot coexist with a TXT record. You can change the prefix to -any valid start of a FQDN. - -Create the deployment for ExternalDNS: - -``` -$ kubectl create -f externaldns.yaml -``` - -## Running a locally build version -If you just want to test ExternalDNS in dry-run mode locally without doing the above deployment you can also do it. -Make sure your kubectl is configured correctly . Assuming you have the sources, build and run it like so: - -```bash -make -# output skipped - -./build/external-dns \ - --provider=dyn \ - --dyn-customer-name=${DYN_CUSTOMER_NAME} \ - --dyn-username=${DYN_USERNAME} \ - --dyn-password=${DYN_PASSWORD} \ - --domain-filter=example.com \ - --zone-id-filter=example.com \ - --namespace=example \ - --log-level=debug \ - --txt-prefix=_ \ - --dry-run=true -INFO[0000] running in dry-run mode. No changes to DNS records will be made. -INFO[0000] Connected to cluster at https://some-k8s-cluster.example.com -INFO[0001] Zones: [example.com] -# output skipped -``` - -Having `--dry-run=true` and `--log-level=debug` is a great way to see _exactly_ what DynamicDNS is doing or is about to do. - -## Deploying an Ingress Resource - -Create a file called 'test-ingress.yaml' with the following contents: - -```yaml -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: test-ingress - namespace: example -spec: - rules: - - host: test-ingress.example.com - http: - paths: - - backend: - service: - name: my-awesome-service - port: - number: 8080 - pathType: Prefix -``` - -As the DNS name `test-ingress.example.com` matches the filter, external-dns will create two records: -a CNAME for test-ingress.example.com and TXT for _dtest-ingress.example.com. - -Create the Ingress: - -``` -$ kubectl create -f test-ingress.yaml -``` - -By default external-dns scans for changes every minute so give it some time to catch up with the -## Verifying Dyn DNS records - -Login to the console at https://portal.dynect.net/login/ and verify records are created - -## Clean up - -Login to the console at https://portal.dynect.net/login/ and delete the records created. Alternatively, just delete the sample -Ingress resources and external-dns will delete the records. diff --git a/docs/tutorials/exoscale.md b/docs/tutorials/exoscale.md index 6b991e7de..2201d831c 100644 --- a/docs/tutorials/exoscale.md +++ b/docs/tutorials/exoscale.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Exoscale +# Exoscale ## Prerequisites @@ -40,7 +40,7 @@ spec: # serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=ingress # or service or both - --provider=exoscale diff --git a/docs/tutorials/externalname.md b/docs/tutorials/externalname.md index 0dd8e5ebe..e4fd2d939 100644 --- a/docs/tutorials/externalname.md +++ b/docs/tutorials/externalname.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for ExternalName Services +# ExternalName Services This tutorial describes how to setup ExternalDNS for usage in conjunction with an ExternalName service. @@ -27,7 +27,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --log-level=debug - --source=service diff --git a/docs/tutorials/gandi.md b/docs/tutorials/gandi.md index 52c674858..b9de48b75 100644 --- a/docs/tutorials/gandi.md +++ b/docs/tutorials/gandi.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Gandi +# Gandi This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Gandi. @@ -41,7 +41,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -105,7 +105,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. diff --git a/docs/tutorials/nginx-ingress.md b/docs/tutorials/gke-nginx.md similarity index 99% rename from docs/tutorials/nginx-ingress.md rename to docs/tutorials/gke-nginx.md index ca67a6a64..ea13edcb3 100644 --- a/docs/tutorials/nginx-ingress.md +++ b/docs/tutorials/gke-nginx.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS on GKE with nginx-ingress-controller +# GKE with nginx-ingress-controller This tutorial describes how to setup ExternalDNS for usage within a GKE cluster that doesn't make use of Google's [default ingress controller](https://github.com/kubernetes/ingress-gce) but rather uses [nginx-ingress-controller](https://github.com/kubernetes/ingress-nginx) for that task. @@ -273,7 +273,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=ingress - --domain-filter=external-dns-test.gcp.zalan.do @@ -568,7 +568,7 @@ spec: - --google-project=zalando-external-dns-test - --registry=txt - --txt-owner-id=my-identifier - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 name: external-dns securityContext: fsGroup: 65534 diff --git a/docs/tutorials/gke.md b/docs/tutorials/gke.md index 8e89d4326..5f5862091 100644 --- a/docs/tutorials/gke.md +++ b/docs/tutorials/gke.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS on Google Kubernetes Engine +# GKE with default controller This tutorial describes how to setup ExternalDNS for usage within a [GKE](https://cloud.google.com/kubernetes-engine) ([Google Kuberentes Engine](https://cloud.google.com/kubernetes-engine)) cluster. Make sure to use **>=0.11.0** version of ExternalDNS for this tutorial @@ -375,7 +375,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress diff --git a/docs/tutorials/godaddy.md b/docs/tutorials/godaddy.md index de74c749c..bd97dce9e 100644 --- a/docs/tutorials/godaddy.md +++ b/docs/tutorials/godaddy.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on GoDaddy +# GoDaddy This tutorial describes how to setup ExternalDNS for use within a Kubernetes cluster using GoDaddy DNS. @@ -64,7 +64,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -135,7 +135,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. diff --git a/docs/tutorials/hostport.md b/docs/tutorials/hostport.md index 67c9e2fb3..339832560 100644 --- a/docs/tutorials/hostport.md +++ b/docs/tutorials/hostport.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Headless Services +# Headless Services This tutorial describes how to setup ExternalDNS for usage in conjunction with a Headless service. @@ -31,7 +31,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --log-level=debug - --source=service @@ -96,7 +96,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --log-level=debug - --source=service diff --git a/docs/tutorials/ibmcloud.md b/docs/tutorials/ibmcloud.md index 926435c77..8cf362c24 100644 --- a/docs/tutorials/ibmcloud.md +++ b/docs/tutorials/ibmcloud.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on IBMCloud +# IBMCloud This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using IBMCloud DNS. @@ -69,7 +69,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -142,7 +142,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -259,4 +259,4 @@ Using the `external-dns.alpha.kubernetes.io/ibmcloud-proxied: "true"` annotation By default, IBMCloud DNS Services don't active your private zone with new zone added, with externale DNS, you can use `external-dns.alpha.kubernetes.io/ibmcloud-vpc: "crn:v1:bluemix:public:is:us-south:a/bcf1865e99742d38d2d5fc3fb80a5496::vpc:r006-74353823-a60d-42e4-97c5-5e2551278435"` annotation on your ingress or service, it will active your private zone with in specific VPC for that record created in. this setting won't work if the private zone was active already. -Note: the annotaion value is the VPC CRN, every IBM Cloud service have a valid CRN. \ No newline at end of file +Note: the annotaion value is the VPC CRN, every IBM Cloud service have a valid CRN. diff --git a/docs/tutorials/kops-dns-controller.md b/docs/tutorials/kops-dns-controller.md index 04da968bf..d2facdad1 100644 --- a/docs/tutorials/kops-dns-controller.md +++ b/docs/tutorials/kops-dns-controller.md @@ -1,4 +1,4 @@ -# kOps dns-controller compatibility mode +# kOps dns-controller kOps includes a dns-controller that is primarily used to bootstrap the cluster, but can also be used for provisioning DNS entries for Services and Ingress. @@ -34,4 +34,4 @@ Annotations added to Pods will always result in an A record being created. * For a Service of Type=LoadBalancer, ExternalDNS looks at Status.LoadBalancer.Ingress. It will create CNAMEs to hostnames, and A records for IP addresses. It will do this for both internal and external names -* For a Service of Type=NodePort, ExternalDNS will create A records for the Node's internal/external IP addresses, as appropriate. \ No newline at end of file +* For a Service of Type=NodePort, ExternalDNS will create A records for the Node's internal/external IP addresses, as appropriate. diff --git a/docs/tutorials/kube-ingress-aws.md b/docs/tutorials/kube-ingress-aws.md index 5cf37d4ec..ee9ecd212 100644 --- a/docs/tutorials/kube-ingress-aws.md +++ b/docs/tutorials/kube-ingress-aws.md @@ -1,4 +1,4 @@ -# Using ExternalDNS with kube-ingress-aws-controller +# kube-ingress-aws-controller This tutorial describes how to use ExternalDNS with the [kube-ingress-aws-controller][1]. diff --git a/docs/tutorials/linode.md b/docs/tutorials/linode.md index bc5ad7dc2..097a89196 100644 --- a/docs/tutorials/linode.md +++ b/docs/tutorials/linode.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Linode +# Linode This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Linode DNS Manager. @@ -41,7 +41,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -105,7 +105,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. diff --git a/docs/tutorials/ns1.md b/docs/tutorials/ns1.md index 7d3057b67..6d7300aff 100644 --- a/docs/tutorials/ns1.md +++ b/docs/tutorials/ns1.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on NS1 +# NS1 This tutorial describes how to setup ExternalDNS for use within a Kubernetes cluster using NS1 DNS. @@ -92,7 +92,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -159,7 +159,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. diff --git a/docs/tutorials/oracle.md b/docs/tutorials/oracle.md index 2365f2243..ab6449486 100644 --- a/docs/tutorials/oracle.md +++ b/docs/tutorials/oracle.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Oracle Cloud Infrastructure (OCI) +# Oracle Cloud Infrastructure This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using OCI DNS. @@ -170,7 +170,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress diff --git a/docs/tutorials/ovh.md b/docs/tutorials/ovh.md index dcf1a0265..8a27c1a76 100644 --- a/docs/tutorials/ovh.md +++ b/docs/tutorials/ovh.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on OVH +# OVHcloud This tutorial describes how to setup ExternalDNS for use within a Kubernetes cluster using OVH DNS. @@ -91,7 +91,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -165,7 +165,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. diff --git a/docs/tutorials/pdns.md b/docs/tutorials/pdns.md index 72aa3fc85..365fffb80 100644 --- a/docs/tutorials/pdns.md +++ b/docs/tutorials/pdns.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for PowerDNS +# PowerDNS ## Prerequisites @@ -42,7 +42,7 @@ spec: # serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # or ingress or both - --provider=pdns diff --git a/docs/tutorials/pihole.md b/docs/tutorials/pihole.md index b4e473e47..d9b32e4ad 100644 --- a/docs/tutorials/pihole.md +++ b/docs/tutorials/pihole.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Pi-hole +# Pi-hole This tutorial describes how to setup ExternalDNS to sync records with Pi-hole's Custom DNS. Pi-hole has an internal list it checks last when resolving requests. This list can contain any number of arbitrary A, AAAA or CNAME records. @@ -81,7 +81,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 # If authentication is disabled and/or you didn't create # a secret, you can remove this block. envFrom: diff --git a/docs/tutorials/plural.md b/docs/tutorials/plural.md index cd6afc974..4d85a72ef 100644 --- a/docs/tutorials/plural.md +++ b/docs/tutorials/plural.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Plural +# Plural This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Plural DNS. @@ -61,7 +61,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -131,7 +131,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. diff --git a/docs/tutorials/rcodezero.md b/docs/tutorials/rcodezero.md deleted file mode 100644 index c8dae9009..000000000 --- a/docs/tutorials/rcodezero.md +++ /dev/null @@ -1,206 +0,0 @@ -# Setting up ExternalDNS for Services on RcodeZero - -This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using [RcodeZero Anycast DNS](https://www.rcodezero.at). Make sure to use **>=0.5.0** version of ExternalDNS for this tutorial. - -The following steps are required to use RcodeZero with ExternalDNS: - -1. Sign up for an RcodeZero account (or use an existing account). -2. Add your zone to the RcodeZero DNS -3. Enable the RcodeZero API, and generate an API key. -4. Deploy ExternalDNS to use the RcodeZero provider. -5. Verify the setup bey deploying a test services (optional) - -## Creating a RcodeZero DNS zone - -Before records can be added to your domain name automatically, you need to add your domain name to the set of zones managed by RcodeZero. In order to add the zone, perform the following steps: - -1. Log in to the RcodeZero Dashboard, and move to the [Add Zone](https://my.rcodezero.at/domain/create) page. -2. Select "MASTER" as domain type, and add your domain name there. Use this domain name instead of "example.com" throughout the rest of this tutorial. - -Note that "SECONDARY" domains cannot be managed by ExternalDNS, because this would not allow modification of records in the zone. - -## Enable the API, and create Credentials - -> The RcodeZero Anycast-Network is provisioned via web interface or REST-API. - -Enable the RcodeZero API to generate an API key on [RcodeZero API](https://my.rcodezero.at/enableapi). The API key will be added to the environment variable 'RC0_API_KEY' via one of the Manifest templates (as described below). - -## Deploy ExternalDNS - -Connect your `kubectl` client to the cluster you want to test ExternalDNS with. Choose a Manifest from below, depending on whether or not you have RBAC enabled. Before applying it, modify the Manifest as follows: - -- Replace "example.com" with the domain name you added to RcodeZero. -- Replace YOUR_RCODEZERO_API_KEY with the API key created above. -- Replace YOUR_ENCRYPTION_KEY_STRING with a string to encrypt the TXT records - -### Manifest (for clusters without RBAC enabled) - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=service # ingress is also possible - - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - - --provider=rcodezero - - --rc0-enc-txt # (optional) encrypt TXT records; encryption key has to be provided with RC0_ENC_KEY env var. - env: - - name: RC0_API_KEY - value: "YOUR_RCODEZERO_API_KEY" - - name: RC0_ENC_VAR - value: "YOUR_ENCRYPTION_KEY_STRING" -``` - -### Manifest (for clusters with RBAC enabled) - -```yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - name: external-dns ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: external-dns -rules: -- apiGroups: [""] - resources: ["services","endpoints","pods"] - verbs: ["get","watch","list"] -- apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] - verbs: ["get","watch","list"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: external-dns-viewer -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: external-dns -subjects: -- kind: ServiceAccount - name: external-dns - namespace: default ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - serviceAccountName: external-dns - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=service # ingress is also possible - - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - - --provider=rcodezero - - --rc0-enc-txt # (optional) encrypt TXT records; encryption key has to be provided with RC0_ENC_KEY env var. - env: - - name: RC0_API_KEY - value: "YOUR_RCODEZERO_API_KEY" - - name: RC0_ENC_VAR - value: "YOUR_ENCRYPTION_KEY_STRING" -``` - -## Deploying an Nginx Service - -After you have deployed ExternalDNS with RcodeZero, you can deploy a simple service based on Nginx to test the setup. This is optional, though highly recommended before using ExternalDNS in production. - -Create a service file called 'nginx.yaml' with the following contents: - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: nginx -spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - image: nginx - name: nginx - ports: - - containerPort: 80 ---- -apiVersion: v1 -kind: Service -metadata: - name: nginx - annotations: - external-dns.alpha.kubernetes.io/hostname: example.com - external-dns.alpha.kubernetes.io/ttl: "120" #optional -spec: - selector: - app: nginx - type: LoadBalancer - ports: - - protocol: TCP - port: 80 - targetPort: 80 -``` - -Change the file as follows: - -- Replace the annotation of the service; use the same hostname as the RcodeZero DNS zone created above. The annotation may also be a subdomain -of the DNS zone (e.g. 'www.example.com'). -- Set the TTL annotation of the service. A valid TTL of 120 or above must be given. This annotation is optional, and defaults to "300" if no value is given. - -These annotations will be used to determine what services should be registered with DNS. Removing these annotations will cause ExternalDNS to remove the corresponding DNS records. - -Create the Deployment and Service: - -```bash -$ kubectl create -f nginx.yaml -``` - -Depending on your cloud provider, it might take a while to create an external IP for the service. Once an external IP address is assigned to the service, ExternalDNS will notice the new address and synchronize the RcodeZero DNS records accordingly. - -## Verifying RcodeZero DNS records - -Check your [RcodeZero Configured Zones](https://my.rcodezero.at/domain) and select the respective zone name. The zone should now contain the external IP address of the service as an A record. - -## Cleanup - -Once you have verified that ExternalDNS successfully manages RcodeZero DNS records for external services, you can delete the tutorial example as follows: - -```bash -$ kubectl delete -f nginx.yaml -$ kubectl delete -f externaldns.yaml -``` diff --git a/docs/tutorials/rdns.md b/docs/tutorials/rdns.md index 59b5f5684..7e10403c1 100644 --- a/docs/tutorials/rdns.md +++ b/docs/tutorials/rdns.md @@ -1,6 +1,9 @@ -# Setting up ExternalDNS for RancherDNS(RDNS) with kubernetes +# RancherDNS + This tutorial describes how to setup ExternalDNS for usage within a kubernetes cluster that makes use of [RDNS](https://github.com/rancher/rdns-server) and [nginx ingress controller](https://github.com/kubernetes/ingress-nginx). + You need to: + * install RDNS with [etcd](https://github.com/etcd-io/etcd) enabled * install external-dns with rdns as a provider @@ -54,7 +57,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=ingress - --provider=rdns @@ -123,7 +126,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=ingress - --provider=rdns diff --git a/docs/tutorials/rfc2136.md b/docs/tutorials/rfc2136.md index 0135e107e..a89b39aec 100644 --- a/docs/tutorials/rfc2136.md +++ b/docs/tutorials/rfc2136.md @@ -1,17 +1,21 @@ -# Configuring RFC2136 provider +# RFC2136 provider + This tutorial describes how to use the RFC2136 with either BIND or Windows DNS. ## Using with BIND + To use external-dns with BIND: generate/procure a key, configure DNS and add a deployment of external-dns. ### Server credentials: + - RFC2136 was developed for and tested with [BIND](https://www.isc.org/downloads/bind/) DNS server. This documentation assumes that you already have a configured and working server. If you don't, please check BIND documents or tutorials. - If your DNS is provided for you, ask for a TSIG key authorized to update and transfer the zone you wish to update. The key will look something like below. Skip the next steps wrt BIND setup. + ```text key "externaldns-key" { algorithm hmac-sha256; @@ -25,6 +29,7 @@ a key printed to standard out like above (or in the case of dnssec-keygen in a file called `Kexternaldns......key`). ### BIND Configuration: + If you do not administer your own DNS, skip to RFC provider configuration - Edit your named.conf file (or appropriate included file) and add/change the @@ -75,9 +80,11 @@ following. ### Using external-dns + To use external-dns add an ingress or a LoadBalancer service with a host that is part of the domain-filter. For example both of the following would produce A records. + ```text apiVersion: v1 kind: Service @@ -133,8 +140,8 @@ tutorial and are covered in the main documentation. ### Generate reverse DNS records -If you want to generate reverse DNS records for your services, you have to enable the functionality using the `--rfc2136-create-ptr` -flag. You have also to add the zone to the list of zones managed by ExternalDNS via the `--rfc2136-zone` and `--domain-filter` flags. +If you want to generate reverse DNS records for your services, you have to enable the functionality using the `--rfc2136-create-ptr` +flag. You have also to add the zone to the list of zones managed by ExternalDNS via the `--rfc2136-zone` and `--domain-filter` flags. An example of a valid configuration is the following: ```--domain-filter=157.168.192.in-addr.arpa --rfc2136-zone=157.168.192.in-addr.arpa``` @@ -231,7 +238,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --registry=txt - --txt-prefix=external-dns- @@ -274,7 +281,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --registry=txt - --txt-prefix=external-dns- diff --git a/docs/tutorials/scaleway.md b/docs/tutorials/scaleway.md index 7a948285e..5d5414383 100644 --- a/docs/tutorials/scaleway.md +++ b/docs/tutorials/scaleway.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Scaleway +# Scaleway This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Scaleway DNS. @@ -60,7 +60,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. @@ -140,7 +140,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. diff --git a/docs/tutorials/security-context.md b/docs/tutorials/security-context.md index e34acf426..cb2f3710d 100644 --- a/docs/tutorials/security-context.md +++ b/docs/tutorials/security-context.md @@ -20,7 +20,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - ... # your arguments here securityContext: diff --git a/docs/tutorials/tencentcloud.md b/docs/tutorials/tencentcloud.md index b9ff0b566..5ac087924 100644 --- a/docs/tutorials/tencentcloud.md +++ b/docs/tutorials/tencentcloud.md @@ -1,6 +1,7 @@ -# Setting up ExternalDNS for Tencent Cloud +# Tencent Cloud ## External Dns Version + * Make sure to use **>=0.13.1** version of ExternalDNS for this tutorial ## Set up PrivateDns or DNSPod @@ -8,17 +9,18 @@ Tencent Cloud DNSPod Service is the domain name resolution and management service for public access. Tencent Cloud PrivateDNS Service is the domain name resolution and management service for VPC internal access. -* If you want to use internal dns service in Tencent Cloud. -1. Set up the args `--tencent-cloud-zone-type=private` +* If you want to use internal dns service in Tencent Cloud. +1. Set up the args `--tencent-cloud-zone-type=private` 2. Create a DNS domain in PrivateDNS console. DNS domain which will contain the managed DNS records. * If you want to use public dns service in Tencent Cloud. -1. Set up the args `--tencent-cloud-zone-type=public` +1. Set up the args `--tencent-cloud-zone-type=public` 2. Create a Domain in DnsPod console. DNS domain which will contain the managed DNS records. ## Set up CAM for API Key In Tencent CAM Console. you may get the secretId and secretKey pair. make sure the key pair has those Policy. + ```json { "version": "2.0", @@ -72,7 +74,7 @@ rules: resources: ["services","endpoints","pods"] verbs: ["get","watch","list"] - apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] + resources: ["ingresses"] verbs: ["get","watch","list"] - apiGroups: [""] resources: ["nodes"] @@ -99,7 +101,7 @@ data: tencent-cloud.json: | { "regionId": "ap-shanghai", - "secretId": "******", + "secretId": "******", "secretKey": "******", "vpcId": "vpc-******", "internetEndpoint": false # Default: false. Access the Tencent API through the intranet. If you need to deploy on the public network, you need to change to true @@ -129,7 +131,7 @@ spec: - --policy=sync # set `upsert-only` would prevent ExternalDNS from deleting any records - --tencent-cloud-zone-type=private # only look at private hosted zones. set `public` to use the public dns service. - --tencent-cloud-config-file=/etc/kubernetes/tencent-cloud.json - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 imagePullPolicy: Always name: external-dns resources: {} diff --git a/docs/tutorials/transip.md b/docs/tutorials/transip.md index f9eeedcb5..9de15e4fe 100644 --- a/docs/tutorials/transip.md +++ b/docs/tutorials/transip.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on TransIP +# TransIP This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using TransIP. @@ -36,7 +36,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains @@ -107,7 +107,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service # ingress is also possible - --domain-filter=example.com # (optional) limit to only example.com domains diff --git a/docs/tutorials/ultradns.md b/docs/tutorials/ultradns.md index 68f37aa03..591de6a64 100644 --- a/docs/tutorials/ultradns.md +++ b/docs/tutorials/ultradns.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on UltraDNS +# UltraDNS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using UltraDNS. @@ -44,7 +44,7 @@ spec: spec: containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress # ingress is also possible @@ -116,7 +116,7 @@ spec: serviceAccountName: external-dns containers: - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 + image: registry.k8s.io/external-dns/external-dns:v0.15.0 args: - --source=service - --source=ingress diff --git a/docs/tutorials/vinyldns.md b/docs/tutorials/vinyldns.md deleted file mode 100644 index da191eaaf..000000000 --- a/docs/tutorials/vinyldns.md +++ /dev/null @@ -1,190 +0,0 @@ -# Setting up ExternalDNS for VinylDNS - -This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using VinylDNS. - -The environment vars `VINYLDNS_ACCESS_KEY`, `VINYLDNS_SECRET_KEY`, and `VINYLDNS_HOST` will be needed to run ExternalDNS with VinylDNS. - -## Create a sample deployment and service for external-dns to use - -Run an application and expose it via a Kubernetes Service: - -```console -$ kubectl run nginx --image=nginx --replicas=1 --port=80 -$ kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer -``` - -Annotate the Service with your desired external DNS name. Make sure to change `example.org` to your domain. - -```console -$ kubectl annotate service nginx "external-dns.alpha.kubernetes.io/hostname=nginx.example.org." -``` - -After the service is up and running, it should get an EXTERNAL-IP. At first this may showing as `` - -```console -$ kubectl get svc -NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE -kubernetes 10.0.0.1 443/TCP 1h -nginx 10.0.0.115 80:30543/TCP 10s -``` - -Once it's available - -```console -% kubectl get svc -NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE -kubernetes 10.0.0.1 443/TCP 1h -nginx 10.0.0.115 34.x.x.x 80:30543/TCP 2m -``` - -## Deploy ExternalDNS to Kubernetes - -Connect your `kubectl` client to the cluster you want to test ExternalDNS with. -Then apply one of the following manifests file to deploy ExternalDNS. - -**Note for examples below** - -When using `registry=txt` option, make sure to also use the `txt-prefix` and `txt-owner-id` options as well. If you try to create a `TXT` record in VinylDNS without a prefix, it will try to create a `TXT` record with the same name as your actual DNS record and fail (creating a stranded record `external-dns` cannot manage). - -### Manifest (for clusters without RBAC enabled) - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --provider=vinyldns - - --source=service - - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - - --registry=txt - - --txt-owner-id=grizz - - --txt-prefix=txt- - env: - - name: VINYLDNS_HOST - value: "YOUR_VINYLDNS_HOST" - - name: VINYLDNS_ACCESS_KEY - value: "YOUR_VINYLDNS_ACCESS_KEY" - - name: VINYLDNS_SECRET_KEY - value: "YOUR_VINYLDNS_SECRET_KEY" -``` - -### Manifest (for clusters with RBAC enabled) - -```yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - name: external-dns ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: external-dns -rules: -- apiGroups: [""] - resources: ["services","endpoints","pods"] - verbs: ["get","watch","list"] -- apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] - verbs: ["get","watch","list"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: external-dns-viewer -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: external-dns -subjects: -- kind: ServiceAccount - name: external-dns - namespace: default ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - serviceAccountName: external-dns - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --provider=vinyldns - - --source=service - - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - - --registry=txt - - --txt-owner-id=grizz - - --txt-prefix=txt- - env: - env: - - name: VINYLDNS_HOST - value: "YOUR_VINYLDNS_HOST" - - name: VINYLDNS_ACCESS_KEY - value: "YOUR_VINYLDNS_ACCESS_KEY" - - name: VINYLDNS_SECRET_KEY - value: "YOUR_VINYLDNS_SECRET_KEYY -``` - -## Running a locally built version pointed to the above nginx service -Make sure your kubectl is configured correctly. Assuming you have the sources, build and run it like below. - -The vinyl access details needs to exported to the environment before running. - -```bash -make -# output skipped - -export VINYLDNS_HOST= -export VINYLDNS_ACCESS_KEY= -export VINYLDNS_SECRET_KEY= - -./build/external-dns \ - --provider=vinyldns \ - --source=service \ - --domain-filter=elements.capsps.comcast.net. \ - --zone-id-filter=20e8bfd2-3a70-4e1b-8e11-c9c1948528d3 \ - --registry=txt \ - --txt-owner-id=grizz \ - --txt-prefix=txt- \ - --namespace=default \ - --once \ - --dry-run \ - --log-level debug - -INFO[0000] running in dry-run mode. No changes to DNS records will be made. -INFO[0000] Created Kubernetes client https://some-k8s-cluster.example.com -INFO[0001] Zone: [nginx.example.org.] -# output skipped -``` - -Having `--dry-run=true` and `--log-level=debug` is a great way to see _exactly_ what VinylDNS is doing or is about to do. diff --git a/docs/tutorials/vultr.md b/docs/tutorials/vultr.md deleted file mode 100644 index 546619d30..000000000 --- a/docs/tutorials/vultr.md +++ /dev/null @@ -1,225 +0,0 @@ -# Setting up ExternalDNS for Services on Vultr - -This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Vultr DNS. - -Make sure to use **>=0.6** version of ExternalDNS for this tutorial. - -## Managing DNS with Vultr - -If you want to read up on vultr DNS service you can read the following tutorial: -[Introduction to Vultr DNS](https://www.vultr.com/docs/introduction-to-vultr-dns) - -Create a new DNS Zone where you want to create your records in. For the examples we will be using `example.com` - -## Creating Vultr Credentials - -You will need to create a new API Key which can be found on the [Vultr Dashboard](https://my.vultr.com/settings/#settingsapi). - -The environment variable `VULTR_API_KEY` will be needed to run ExternalDNS with Vultr. - -## Deploy ExternalDNS - -Connect your `kubectl` client to the cluster you want to test ExternalDNS with. - -Begin by creating a Kubernetes secret to securely store your Akamai Edge DNS Access Tokens. This key will enable ExternalDNS to authenticate with Akamai Edge DNS: - -```shell -kubectl create secret generic VULTR_API_KEY --from-literal=VULTR_API_KEY=YOUR_VULTR_API_KEY -``` - -Ensure to replace YOUR_VULTR_API_KEY, with your actual Vultr API key. - - -Then apply one of the following manifests file to deploy ExternalDNS. - -### Using Helm - -reate a values.yaml file to configure ExternalDNS to use Akamai Edge DNS as the DNS provider. This file should include the necessary environment variables: - -```shell -provider: - name: akamai -env: - - name: VULTR_API_KEY - valueFrom: - secretKeyRef: - name: VULTR_API_KEY - key: VULTR_API_KEY -``` - -Finally, install the ExternalDNS chart with Helm using the configuration specified in your values.yaml file: - -```shell -helm upgrade --install external-dns external-dns/external-dns --values values.yaml -``` - -### Manifest (for clusters without RBAC enabled) - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=service # ingress is also possible - - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - - --provider=vultr - env: - - name: VULTR_API_KEY - valueFrom: - secretKeyRef: - name: VULTR_API_KEY - key: VULTR_API_KEY -``` - -### Manifest (for clusters with RBAC enabled) - -```yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - name: external-dns ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: external-dns -rules: -- apiGroups: [""] - resources: ["services","endpoints","pods"] - verbs: ["get","watch","list"] -- apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] - verbs: ["get","watch","list"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: external-dns-viewer -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: external-dns -subjects: -- kind: ServiceAccount - name: external-dns - namespace: default ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - serviceAccountName: external-dns - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - --source=service # ingress is also possible - - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - - --provider=vultr - env: - - name: VULTR_API_KEY - valueFrom: - secretKeyRef: - name: VULTR_API_KEY - key: VULTR_API_KEY -``` - -## Deploying a Nginx Service - -Create a service file called 'nginx.yaml' with the following contents: - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: nginx -spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - image: nginx - name: nginx - ports: - - containerPort: 80 ---- -apiVersion: v1 -kind: Service -metadata: - name: nginx - annotations: - external-dns.alpha.kubernetes.io/hostname: my-app.example.com -spec: - selector: - app: nginx - type: LoadBalancer - ports: - - protocol: TCP - port: 80 - targetPort: 80 -``` - -Note the annotation on the service; use the same hostname as the Vultr DNS zone created above. - -ExternalDNS uses this annotation to determine what services should be registered with DNS. Removing the annotation will cause ExternalDNS to remove the corresponding DNS records. - -Create the deployment and service: - -```console -$ kubectl create -f nginx.yaml -``` - -Depending where you run your service it can take a little while for your cloud provider to create an external IP for the service. - -Once the service has an external IP assigned, ExternalDNS will notice the new service IP address and synchronize the Vultr DNS records. - -## Verifying Vultr DNS records - -Check your [Vultr UI](https://my.vultr.com/dns/) to view the records for your Vultr DNS zone. - -Click on the zone for the one created above if a different domain was used. - -This should show the external IP address of the service as the A record for your domain. - -## Cleanup - -Now that we have verified that ExternalDNS will automatically manage Vultr DNS records, we can delete the tutorial's example: - -``` -$ kubectl delete service -f nginx.yaml -$ kubectl delete service -f externaldns.yaml -``` diff --git a/docs/tutorials/webhook-provider.md b/docs/tutorials/webhook-provider.md index 684ab1acc..e3e52f06b 100644 --- a/docs/tutorials/webhook-provider.md +++ b/docs/tutorials/webhook-provider.md @@ -16,24 +16,32 @@ Providers implementing the HTTP API have to keep in sync with changes to the JSO The following table represents the methods to implement mapped to their HTTP method and route. -| Provider method | HTTP Method | Route | -| --- | --- | --- | -| Records | GET | /records | -| AdjustEndpoints | POST | /adjustendpoints | -| ApplyChanges | POST | /records | -| K8s probe | GET | /healthz | + +### Provider endpoints + +| Provider method | HTTP Method | Route | Description | +| --------------- | ----------- | ---------------- | ---------------------------------------- | +| Negotiate | GET | / | Negotiate `DomainFilter` | +| Records | GET | /records | Get records | +| AdjustEndpoints | POST | /adjustendpoints | Provider specific adjustments of records | +| ApplyChanges | POST | /records | Apply record | ExternalDNS will also make requests to the `/` endpoint for negotiation and for deserialization of the `DomainFilter`. The server needs to respond to those requests by reading the `Accept` header and responding with a corresponding `Content-Type` header specifying the supported media type format and version. -The default recommended port is 8888, and should listen only on localhost (ie: only accessible for k8s probes and external-dns). +The default recommended port for the provider endpoints is `8888`, and should listen only on `localhost` (ie: only accessible for external-dns). **NOTE**: only `5xx` responses will be retried and only `20x` will be considered as successful. All status codes different from those will be considered a failure on ExternalDNS's side. -## Metrics support +### Exposed endpoints -The metrics should listen ":8080" on `/metrics` following [Open Metrics](https://github.com/OpenObservability/OpenMetrics) format. +| Provider method | HTTP Method | Route | Description | +| --------------- | ----------- | -------- | -------------------------------------------------------------------------------------------- | +| K8s probe | GET | /healthz | Used by `livenessProbe` and `readinessProbe` | +| Open Metrics | GET | /metrics | Optional endpoint to expose [Open Metrics](https://github.com/OpenObservability/OpenMetrics) | + +The default recommended port for the exposed endpoints is `8080`, and it should be bound to all interfaces (`0.0.0.0`) ## Custom Annotations diff --git a/endpoint/domain_filter.go b/endpoint/domain_filter.go index 308599d80..3acfbcd93 100644 --- a/endpoint/domain_filter.go +++ b/endpoint/domain_filter.go @@ -25,7 +25,7 @@ import ( "strings" ) -type MatchAllDomainFilters []*DomainFilter +type MatchAllDomainFilters []DomainFilterInterface func (f MatchAllDomainFilters) Match(domain string) bool { for _, filter := range f { @@ -39,6 +39,10 @@ func (f MatchAllDomainFilters) Match(domain string) bool { return true } +type DomainFilterInterface interface { + Match(domain string) bool +} + // DomainFilter holds a lists of valid domain names type DomainFilter struct { // Filters define what domains to match @@ -51,6 +55,8 @@ type DomainFilter struct { regexExclusion *regexp.Regexp } +var _ DomainFilterInterface = &DomainFilter{} + // domainFilterSerde is a helper type for serializing and deserializing DomainFilter. type domainFilterSerde struct { Include []string `json:"include,omitempty"` diff --git a/go.mod b/go.mod index 93bc77ee8..a4350b89c 100644 --- a/go.mod +++ b/go.mod @@ -1,30 +1,37 @@ module sigs.k8s.io/external-dns -go 1.22.4 +go 1.23 require ( - cloud.google.com/go/compute/metadata v0.3.0 - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 + cloud.google.com/go/compute/metadata v0.5.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.2.0 - github.com/F5Networks/k8s-bigip-ctlr/v2 v2.17.0 - github.com/IBM-Cloud/ibm-cloud-cli-sdk v1.4.0 - github.com/IBM/go-sdk-core/v5 v5.17.3 - github.com/IBM/networking-go-sdk v0.47.1 + github.com/F5Networks/k8s-bigip-ctlr/v2 v2.17.1 + github.com/IBM-Cloud/ibm-cloud-cli-sdk v1.5.0 + github.com/IBM/go-sdk-core/v5 v5.17.4 + github.com/IBM/networking-go-sdk v0.49.0 + github.com/Yamashou/gqlgenc v0.24.0 github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2 github.com/alecthomas/kingpin/v2 v2.4.0 - github.com/aliyun/alibaba-cloud-sdk-go v1.62.771 - github.com/ans-group/sdk-go v1.17.0 - github.com/aws/aws-sdk-go v1.54.4 + github.com/aliyun/alibaba-cloud-sdk-go v1.63.0 + github.com/aws/aws-sdk-go-v2 v1.30.3 + github.com/aws/aws-sdk-go-v2/config v1.27.27 + github.com/aws/aws-sdk-go-v2/credentials v1.17.27 + github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.14.10 + github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.4 + github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3 + github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.31.3 + github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 github.com/bodgit/tsig v1.2.2 github.com/cenkalti/backoff/v4 v4.3.0 - github.com/civo/civogo v0.3.70 - github.com/cloudflare/cloudflare-go v0.98.0 + github.com/civo/civogo v0.3.73 + github.com/cloudflare/cloudflare-go v0.102.0 github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381 github.com/datawire/ambassador v1.12.4 github.com/denverdino/aliyungo v0.0.0-20230411124812-ab98a9173ace - github.com/digitalocean/godo v1.118.0 + github.com/digitalocean/godo v1.120.0 github.com/dnsimple/dnsimple-go v1.7.0 github.com/exoscale/egoscale v0.102.3 github.com/ffledgling/pdns-go v0.0.0-20180219074714-524e7daccd99 @@ -32,77 +39,82 @@ require ( github.com/go-logr/logr v1.4.2 github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 - github.com/gophercloud/gophercloud v1.12.0 - github.com/hooklift/gowsdl v0.5.0 + github.com/gophercloud/gophercloud v1.14.0 github.com/linki/instrumented_http v0.3.0 - github.com/linode/linodego v1.35.0 + github.com/linode/linodego v1.39.0 github.com/maxatome/go-testdeep v1.14.0 - github.com/miekg/dns v1.1.61 - github.com/nesv/go-dynect v0.6.0 - github.com/nic-at/rc0go v1.1.1 + github.com/miekg/dns v1.1.62 github.com/onsi/ginkgo v1.16.5 github.com/openshift/api v0.0.0-20230607130528-611114dca681 github.com/openshift/client-go v0.0.0-20230607134213-3cd0021bbee3 - github.com/oracle/oci-go-sdk/v65 v65.67.2 + github.com/oracle/oci-go-sdk/v65 v65.71.1 github.com/ovh/go-ovh v1.6.0 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/errors v0.9.1 - github.com/pluralsh/gqlclient v1.11.0 - github.com/projectcontour/contour v1.29.1 - github.com/prometheus/client_golang v1.19.1 - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.28 + github.com/pluralsh/gqlclient v1.12.2 + github.com/projectcontour/contour v1.30.0 + github.com/prometheus/client_golang v1.20.0 + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 github.com/sirupsen/logrus v1.9.3 github.com/stretchr/testify v1.9.0 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.945 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.945 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.945 - github.com/transip/gotransip/v6 v6.24.0 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.984 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.984 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.984 + github.com/transip/gotransip/v6 v6.25.0 github.com/ultradns/ultradns-sdk-go v1.3.7 - github.com/vinyldns/go-vinyldns v0.9.16 - github.com/vultr/govultr/v2 v2.17.2 - go.etcd.io/etcd/api/v3 v3.5.14 - go.etcd.io/etcd/client/v3 v3.5.14 + go.etcd.io/etcd/api/v3 v3.5.15 + go.etcd.io/etcd/client/v3 v3.5.15 go.uber.org/ratelimit v0.3.1 - golang.org/x/net v0.26.0 - golang.org/x/oauth2 v0.21.0 - golang.org/x/sync v0.7.0 - golang.org/x/time v0.5.0 - google.golang.org/api v0.185.0 - gopkg.in/ns1/ns1-go.v2 v2.11.0 + golang.org/x/net v0.28.0 + golang.org/x/oauth2 v0.22.0 + golang.org/x/sync v0.8.0 + golang.org/x/time v0.6.0 + google.golang.org/api v0.192.0 + gopkg.in/ns1/ns1-go.v2 v2.12.0 gopkg.in/yaml.v2 v2.4.0 - istio.io/api v1.22.1 - istio.io/client-go v1.22.1 - k8s.io/api v0.30.2 - k8s.io/apimachinery v0.30.2 - k8s.io/client-go v0.30.2 - k8s.io/klog/v2 v2.130.0 + istio.io/api v1.23.0 + istio.io/client-go v1.23.0 + k8s.io/api v0.31.0 + k8s.io/apimachinery v0.31.0 + k8s.io/client-go v0.31.0 + k8s.io/klog/v2 v2.130.1 sigs.k8s.io/gateway-api v1.1.0 ) require ( - cloud.google.com/go/auth v0.5.1 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect + cloud.google.com/go/auth v0.8.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect code.cloudfoundry.org/gofileutils v0.0.0-20170111115228-4d0c80011a0f // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0 // indirect + github.com/99designs/gqlgen v0.17.44 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect github.com/Masterminds/semver v1.4.2 // indirect - github.com/Yamashou/gqlgenc v0.14.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/alexbrainman/sspi v0.0.0-20180613141037-e580b900e9f5 // indirect - github.com/ans-group/go-durationstring v1.2.0 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect + github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.22.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.16 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect + github.com/aws/smithy-go v1.20.3 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.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/deepmap/oapi-codegen v1.9.1 // indirect github.com/emicklei/go-restful/v3 v3.12.0 // indirect - github.com/evanphx/json-patch v5.7.0+incompatible // indirect github.com/fatih/structs v1.1.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/errors v0.21.0 // indirect @@ -124,16 +136,15 @@ require ( github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/s2a-go v0.1.7 // indirect + github.com/google/s2a-go v0.1.8 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.4 // indirect + github.com/googleapis/gax-go/v2 v2.13.0 // indirect github.com/gopherjs/gopherjs v1.17.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect - github.com/hashicorp/hcl v1.0.1-vault-5 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/jcmturner/aescts/v2 v2.0.0 // indirect github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect @@ -145,9 +156,9 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect @@ -160,32 +171,24 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/openshift/gssapi v0.0.0-20161010215902-5fb4217df13b // indirect github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/peterhellberg/link v1.1.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.53.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.2.0 // indirect - github.com/sagikazarmark/locafero v0.3.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/schollz/progressbar/v3 v3.8.6 // indirect github.com/shopspring/decimal v1.3.1 // indirect - github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9 // indirect - github.com/smartystreets/gunit v1.3.4 // indirect github.com/sony/gobreaker v0.5.0 // indirect - github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.10.0 // indirect - github.com/spf13/cast v1.5.1 // indirect + github.com/sosodev/duration v1.2.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.17.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/subosito/gotenv v1.6.0 // indirect github.com/terra-farm/udnssdk v1.3.5 // indirect github.com/vektah/gqlparser/v2 v2.5.14 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xhit/go-str2duration/v2 v2.1.0 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.14 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.15 // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect @@ -195,25 +198,23 @@ require ( 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.24.0 // indirect - golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect + golang.org/x/crypto v0.26.0 // indirect golang.org/x/mod v0.18.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect golang.org/x/tools v0.22.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect - google.golang.org/grpc v1.64.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect + google.golang.org/grpc v1.65.0 // indirect google.golang.org/protobuf v1.34.2 // indirect - gopkg.in/go-playground/validator.v9 v9.31.0 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/resty.v1 v1.12.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/kube-openapi v0.0.0-20240423202451-8948a665c108 // indirect - k8s.io/utils v0.0.0-20240423183400-0849a56e8f22 // indirect + k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f // indirect + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect moul.io/http2curl v1.0.0 // indirect sigs.k8s.io/controller-runtime v0.18.4 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect diff --git a/go.sum b/go.sum index 8731741ed..70d598d21 100644 --- a/go.sum +++ b/go.sum @@ -2,58 +2,26 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxo 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.44.3/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.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw= -cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= -cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= -cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo= +cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc= +cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= +cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= code.cloudfoundry.org/gofileutils v0.0.0-20170111115228-4d0c80011a0f h1:UrKzEwTgeiff9vxdrfdqxibzpWjxLnuXDI5m6z3GJAk= code.cloudfoundry.org/gofileutils v0.0.0-20170111115228-4d0c80011a0f/go.mod h1:sk5LnIjB/nIEU7yP5sDQExVm62wu0pBh3yrElngUisI= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= git.lukeshu.com/go/libsystemd v0.5.3/go.mod h1:FfDoP0i92r4p5Vn4NCLxvjkd7rCOe6otPa4L6hZg9WM= +github.com/99designs/gqlgen v0.17.44 h1:OS2wLk/67Y+vXM75XHbwRnNYJcbuJd4OBL76RX3NQQA= +github.com/99designs/gqlgen v0.17.44/go.mod h1:UTCu3xpK2mLI5qcMNw+HKDiEL77it/1XtAjisC4sLwM= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible h1:KnPIugL51v3N3WwvaSmZbxukD1WuWXOiE9fRdu32f2I= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 h1:1nGuui+4POelzDwI7RG56yfQJHCnKvwfMoU7VsEp+Zg= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0/go.mod h1:99EvauvlcJ1U06amZiksfYz/3aFGyIhWGHVyiZXtBAI= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6ZyqF3UOWJZ12zIm8zECAFfg= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0 h1:H+U3Gk9zY56G3u872L82bk4thcsy2Gghb9ExT4Zvm1o= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0/go.mod h1:mgrmMSgaLp9hmax62XQTd0N4aAqSE5E0DulSpVYK7vc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0 h1:nyQWyZvwGTvunIMxi1Y9uXkcyr+I7TeNrr/foo4Kpk8= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 h1:lpOxwrQ919lCZoNCd69rVt8u1eLZuMORrGXqy8sNf3c= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0/go.mod h1:fSvRkb8d26z9dbL40Uf/OO6Vo9iExtZK3D0ulRV+8M0= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -76,15 +44,15 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83 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/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/F5Networks/k8s-bigip-ctlr/v2 v2.17.0 h1:+hZtcPmSyhVmKuIjreGSEuvHxD0jM0YAei/ABoq/G5g= -github.com/F5Networks/k8s-bigip-ctlr/v2 v2.17.0/go.mod h1:mMF9pk71U8aIzMBS+CWq8OL3gLcFCRCiy+wNpE4gDIE= +github.com/F5Networks/k8s-bigip-ctlr/v2 v2.17.1 h1:DsX6HIG2kxYg2bRM7jIVgyBb6PcJXBt9iCsTfLvFwWE= +github.com/F5Networks/k8s-bigip-ctlr/v2 v2.17.1/go.mod h1:mMF9pk71U8aIzMBS+CWq8OL3gLcFCRCiy+wNpE4gDIE= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/IBM-Cloud/ibm-cloud-cli-sdk v1.4.0 h1:Q+zEWnb3z9vfWOkCRlNziO5Pd7i2xwXFRMWQ5RU+CKA= -github.com/IBM-Cloud/ibm-cloud-cli-sdk v1.4.0/go.mod h1:XxWyb5MQDU4GnRBSDZpGgIFwfbcn+GAUbPKS8CR8Bxc= -github.com/IBM/go-sdk-core/v5 v5.17.3 h1:CZSVCKzhQc/hRQZOtuEmi9dlNtWMnxJvOsPtQKP7cZ4= -github.com/IBM/go-sdk-core/v5 v5.17.3/go.mod h1:GatGZpxlo1KaxiRN6E10/rNgWtUtx1hN/GoHSCaSPKA= -github.com/IBM/networking-go-sdk v0.47.1 h1:Zqqu9CrZ86jkjMyuIJtBLLOE0D7YtirxnlFyAngEfLw= -github.com/IBM/networking-go-sdk v0.47.1/go.mod h1:yF4XStkswGgVwQVqPUk6b4YTP0dVap52q8HDYwY4gXQ= +github.com/IBM-Cloud/ibm-cloud-cli-sdk v1.5.0 h1:+a994rHmNFwlSA609Z6SYhn9xt+lhGFF+dsgjMF75hY= +github.com/IBM-Cloud/ibm-cloud-cli-sdk v1.5.0/go.mod h1:XxWyb5MQDU4GnRBSDZpGgIFwfbcn+GAUbPKS8CR8Bxc= +github.com/IBM/go-sdk-core/v5 v5.17.4 h1:VGb9+mRrnS2HpHZFM5hy4J6ppIWnwNrw0G+tLSgcJLc= +github.com/IBM/go-sdk-core/v5 v5.17.4/go.mod h1:KsAAI7eStAWwQa4F96MLy+whYSh39JzNjklZRbN/8ns= +github.com/IBM/networking-go-sdk v0.49.0 h1:lPS34u3C0JVrbxH+Ulua76Nwl6Frv8BEfq6LRkyvOv0= +github.com/IBM/networking-go-sdk v0.49.0/go.mod h1:G9CKbmPE8gSLjN+ABh4hIZ1bMx076enl5Eekvj6zQnA= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= @@ -109,8 +77,8 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:H github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Yamashou/gqlgenc v0.14.0 h1:KVzUuVQKfl4Phm5Cw4yeFThDAxZoIBR9XLoK/4O1O6U= -github.com/Yamashou/gqlgenc v0.14.0/go.mod h1:+z+FRCtGrNmgTxweAUiCodOmQJLTCNtnRNAqhewf1Q8= +github.com/Yamashou/gqlgenc v0.24.0 h1:Aeufjb2zF0XxkeSTAVQ+DfiHL+ney/M2ovShZozBmHw= +github.com/Yamashou/gqlgenc v0.24.0/go.mod h1:3QQD8ZoeEyVXuzqcMDsl8OfCCCTk+ulaxkvFFQDupIA= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -126,15 +94,11 @@ github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAu github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alexbrainman/sspi v0.0.0-20180613141037-e580b900e9f5 h1:P5U+E4x5OkVEKQDklVPmzs71WM56RTTRqV4OrDC//Y4= github.com/alexbrainman/sspi v0.0.0-20180613141037-e580b900e9f5/go.mod h1:976q2ETgjT2snVCf2ZaBnyBbVoPERGjUz+0sofzEfro= -github.com/aliyun/alibaba-cloud-sdk-go v1.62.771 h1:/3CAW5lTlOLiB+4klPJg+ZXxp0M4r08iGNuwFB8e7Qs= -github.com/aliyun/alibaba-cloud-sdk-go v1.62.771/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ= +github.com/aliyun/alibaba-cloud-sdk-go v1.63.0 h1:GIwkDPfeF/IBh5lZ5Mig50r1LXomNXR7t/oKGSMJWns= +github.com/aliyun/alibaba-cloud-sdk-go v1.63.0/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/brotli v0.0.0-20190621154722-5f990b63d2d6/go.mod h1:+lx6/Aqd1kLJ1GQfkvOnaZ1WGmLpMpbprPuIOOZX30U= -github.com/ans-group/go-durationstring v1.2.0 h1:UJIuQATkp0t1rBvZsHRwki33YHV9E+Ulro+3NbMB7MM= -github.com/ans-group/go-durationstring v1.2.0/go.mod h1:QGF9Mdpq9058QXaut8r55QWu6lcHX6i/GvF1PZVkV6o= -github.com/ans-group/sdk-go v1.17.0 h1:lrZyVux4642UcTykuMsMMB4LTtVI+hEtgPiXxiFZqFo= -github.com/ans-group/sdk-go v1.17.0/go.mod h1:w4tX8raa9y3j7pug6TLcF8ZW1j9G05AmNoQLBloYxEY= github.com/aokoli/goutils v1.1.0/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= @@ -152,9 +116,45 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:W github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.54.4 h1:xZga3fPu7uxVgh83DIaQlb7r0cixFx1xKiiROTWAhpU= -github.com/aws/aws-sdk-go v1.54.4/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= +github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= +github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90= +github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg= +github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI= +github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4= +github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.14.10 h1:orAIBscNu5aIjDOnKIrjO+IUFPMLKj3Lp0bPf4chiPc= +github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.14.10/go.mod h1:GNjJ8daGhv10hmQYCnmkV8HuY6xXOXV4vzBssSjEIlU= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 h1:KreluoV8FZDEtI6Co2xuNk/UqI9iwMrOx/87PBNIKqw= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.4 h1:utG3S4T+X7nONPIpRoi1tVcQdAdJxntiVS2yolPJyXc= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.4/go.mod h1:q9vzW3Xr1KEXa8n4waHiFt1PrppNDlMymlYP+xpsFbY= +github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.22.3 h1:r27/FnxLPixKBRIlslsvhqscBuMK8uysCYG9Kfgm098= +github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.22.3/go.mod h1:jqOFyN+QSWSoQC+ppyc4weiO8iNQXbzRbxDjQ1ayYd4= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 h1:dT3MqvGhSoaIhRseqw2I0yH81l7wiR2vjs57O51EAm8= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.16 h1:lhAX5f7KpgwyieXjbDnRTjPEUI0l3emSRyxXj1PXP8w= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.16/go.mod h1:AblAlCwvi7Q/SFowvckgN+8M3uFPlopSYeLlbNDArhA= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrxZlQ044RiM+WdoZxp0p+EGM62y3L6pwA4olE= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII= +github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3 h1:MmLCRqP4U4Cw9gJ4bNrCG0mWqEtBlmAVleyelcHARMU= +github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3/go.mod h1:AMPjK2YnRh0YgOID3PqhJA1BRNfXDfGOnSsKHtAe8yA= +github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.31.3 h1:EthA93BNgTnk36FoI9DCKtv4S0m63WzdGDYlBp/CvHQ= +github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.31.3/go.mod h1:4xh/h0pevPhBkA4b2iYosZaqrThccxFREQxiGuZpJlc= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= +github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= +github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -180,23 +180,19 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= 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/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.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/civo/civogo v0.3.70 h1:QPuFm5EmpkScbdFo5/6grcG2xcvd/lgdolOtENT04Ac= -github.com/civo/civogo v0.3.70/go.mod h1:7UCYX+qeeJbrG55E1huv+0ySxcHTqq/26FcHLVelQJM= +github.com/civo/civogo v0.3.73 h1:thkNnkziU+xh+MEOChIUwRZI1forN20+SSAPe/VFDME= +github.com/civo/civogo v0.3.73/go.mod h1:7UCYX+qeeJbrG55E1huv+0ySxcHTqq/26FcHLVelQJM= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.98.0 h1:IjBVU1jmmG2Vm5emW1cXv/RPCT2XWpRPuB1zgaTdcZY= -github.com/cloudflare/cloudflare-go v0.98.0/go.mod h1:sQzaVM6DlkWe1yqQXaql+CRt4rA8efMfpoPjNuUE1KI= +github.com/cloudflare/cloudflare-go v0.102.0 h1:+0MGbkirM/yzVLOYpWMgW7CDdKzesSbdwA2Y+rABrWI= +github.com/cloudflare/cloudflare-go v0.102.0/go.mod h1:BOB41tXf31ti/qtBO9paYhyapotQbGRDbQoLOAF7pSg= github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381 h1:rdRS5BT13Iae9ssvcslol66gfOOXjaLYwqerEn/cl9s= github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381/go.mod h1:e5+USP2j8Le2M0Jo3qKPFnNhuo1wueU4nWHCXBOfQ14= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q= @@ -255,11 +251,9 @@ github.com/denverdino/aliyungo v0.0.0-20230411124812-ab98a9173ace/go.mod h1:TK05 github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= 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.118.0 h1:lkzGFQmACrVCp7UqH1sAi4JK/PWwlc5aaxubgorKmC4= -github.com/digitalocean/godo v1.118.0/go.mod h1:Vk0vpCot2HOAJwc5WE8wljZGtJ3ZtWIc8MQ8rF38sdo= +github.com/digitalocean/godo v1.120.0 h1:t2DpzIitSnCDNQM7svSW4+cZd8E4Lv6+r8y33Kym0Xw= +github.com/digitalocean/godo v1.120.0/go.mod h1:WQVH83OHUy6gC4gXpEVQKtxTd4L5oCp+5OialidkPLY= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/dnsimple/dnsimple-go v1.7.0 h1:JKu9xJtZ3SqOC+BuYgAWeab7+EEx0sz422vu8j611ZY= github.com/dnsimple/dnsimple-go v1.7.0/go.mod h1:EKpuihlWizqYafSnQHGCd/gyvy3HkEQJ7ODB4KdV8T8= github.com/docker/cli v0.0.0-20200130152716-5d0cf8839492/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= @@ -294,14 +288,10 @@ github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4s 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.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.3.0-java.0.20200609174644-bd816e4522c1/go.mod h1:bjmEhrMDubXDd0uKxnWwRmgSsiEv2CkJliIHnj6ETm8= 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 v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= -github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exoscale/egoscale v0.102.3 h1:DYqN2ipoLKpiFoprRGQkp2av/Ze7sUYYlGhi1N62tfY= github.com/exoscale/egoscale v0.102.3/go.mod h1:RPf2Gah6up+6kAEayHTQwqapzXlm93f0VQas/UEGU5c= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= @@ -318,12 +308,12 @@ github.com/ffledgling/pdns-go v0.0.0-20180219074714-524e7daccd99/go.mod h1:4mP9w github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 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/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= @@ -338,8 +328,6 @@ github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJ github.com/go-gandi/go-gandi v0.7.0 h1:gsP33dUspsN1M+ZW9HEgHchK9HiaSkYnltO73RHhSZA= github.com/go-gandi/go-gandi v0.7.0/go.mod h1:9NoYyfWCjFosClPiWjkbbRK5UViaZ4ctpT8/pKSSFlw= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= 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= @@ -435,8 +423,6 @@ github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg78 github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b h1:/vQ+oYKu+JoyaMPDsv5FzwuL2wwWBgBbtj/YLCi4LuA= -github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b/go.mod h1:Xo4aNUOrJnVruqWQJBtW6+bTBDTniY8yZum5rF3b5jw= github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/envy v1.7.1/go.mod h1:FurDp9+EDPE4aIUS3ZLyD+7/9fpx7YRt/ukY6jIHf0w= github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= @@ -473,26 +459,16 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU 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-20200121045136-8c9f03a8e57e/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/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/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= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -519,9 +495,7 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a 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.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -537,23 +511,12 @@ github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ 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/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= 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-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af h1:kmjWCqn2qkEml422C2Rrd27c3VGxi6a/6HNq8QmHRKM= +github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= +github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= 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= @@ -563,17 +526,15 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= 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/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= -github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= +github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= +github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= 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/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.2.3/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gophercloud/gophercloud v1.12.0 h1:Jrz16vPAL93l80q16fp8NplrTCp93y7rZh2P3Q4Yq7g= -github.com/gophercloud/gophercloud v1.12.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= +github.com/gophercloud/gophercloud v1.14.0 h1:Bt9zQDhPrbd4qX7EILGmy+i7GP35cc+AAL2+wIJpUE8= +github.com/gophercloud/gophercloud v1.14.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20180628210949-0892b62f0d9f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= @@ -583,7 +544,6 @@ github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= @@ -634,20 +594,14 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ 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/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM= -github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hooklift/gowsdl v0.5.0 h1:DE8RevqhGPLchumV/V7OwbCzfJ8lcozFg1uWC/ESCBQ= -github.com/hooklift/gowsdl v0.5.0/go.mod h1:9kRc402w9Ci/Mek5a1DNgTmU14yPY8fMumxNVvxhis4= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -679,8 +633,9 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= 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= @@ -692,7 +647,6 @@ github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ 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.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -706,12 +660,13 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/pgzip v1.2.1/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= 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.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -749,15 +704,13 @@ github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-b github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linki/instrumented_http v0.3.0 h1:dsN92+mXpfZtjJraartcQ99jnuw7fqsnPDjr85ma2dA= github.com/linki/instrumented_http v0.3.0/go.mod h1:pjYbItoegfuVi2GUOMhEqzvm/SJKuEL3H0tc8QRLRFk= -github.com/linode/linodego v1.35.0 h1:rIhUeCHBLEDlkoRnOTwzSGzljQ3ksXwLxacmXnrV+Do= -github.com/linode/linodego v1.35.0/go.mod h1:JxuhOEAMfSxun6RU5/MgTKH2GGTmFrhKRj3wL1NFin0= +github.com/linode/linodego v1.39.0 h1:gRsj2PXX+HTO3eYQaXEuQGsLeeLFDSBDontC5JL3Nn8= +github.com/linode/linodego v1.39.0/go.mod h1:da8KzAQKSm5obwa06yXk5CZSDFMP9Wb08GA/O+aR9W0= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/lyft/protoc-gen-star v0.4.10/go.mod h1:mE8fbna26u7aEA2QCVvvfBU/ZrPgocG1206xAFPcs94= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= 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= @@ -797,8 +750,8 @@ github.com/mholt/archiver/v3 v3.3.0/go.mod h1:YnQtqsp+94Rwd0D/rk5cnLrxusUBUXg+08 github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.6/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/miekg/dns v1.1.61 h1:nLxbwF3XxhwVSm8g9Dghm9MHPaUZuqhPiGL+675ZmEs= -github.com/miekg/dns v1.1.61/go.mod h1:mnAarhS3nWaW+NVP2wTkYVIZyHNJ098SJZUki3eykwQ= +github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= +github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= @@ -838,10 +791,6 @@ github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= -github.com/nesv/go-dynect v0.6.0 h1:Ow/DiSm4LAISwnFku/FITSQHnU6pBvhQMsUE5Gu6Oq4= -github.com/nesv/go-dynect v0.6.0/go.mod h1:GHRBRKzTwjAMhosHJQq/KrZaFkXIFyJ5zRE7thGXXrs= -github.com/nic-at/rc0go v1.1.1 h1:bf2gTwYecJEh7qmnOEuarXKueZn4A8N08U1Uop3K8+s= -github.com/nic-at/rc0go v1.1.1/go.mod h1:KEa3H5fmDNXCaXSqOeAZxkKnG/8ggr1OHIG25Ve7fjU= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nwaples/rardecode v1.0.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= @@ -862,16 +811,16 @@ github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ 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 v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.17.3 h1:oJcvKpIb7/8uLpDDtnQuf18xVnwKp8DTD7DQ6gTd/MU= -github.com/onsi/ginkgo/v2 v2.17.3/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc= +github.com/onsi/ginkgo/v2 v2.19.1 h1:QXgq3Z8Crl5EL1WBAC98A5sEBHARrAJNzAmMxzLcRF0= +github.com/onsi/ginkgo/v2 v2.19.1/go.mod h1:O3DtEWQkPa/F7fBMgmZQKKsluAy8pd3rEQdrjkPb9zA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/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.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= -github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= +github.com/onsi/gomega v1.34.0 h1:eSSPsPNp6ZpsG8X1OVmOTxig+CblTc4AxpPBykhe2Os= +github.com/onsi/gomega v1.34.0/go.mod h1:MIKI8c+f+QLWk+hxbePD4i0LMJSExPaZOVfkoex4cAo= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -900,8 +849,8 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/oracle/oci-go-sdk/v65 v65.67.2 h1:ieNt3Gm9MSGNuPXEBUg6MoSRE3ByWlxj0GBKlvD/Cls= -github.com/oracle/oci-go-sdk/v65 v65.67.2/go.mod h1:IBEV9l1qBzUpo7zgGaRUhbB05BVfcDGYRFBCPlTcPp0= +github.com/oracle/oci-go-sdk/v65 v65.71.1 h1:t1GpyLYaD/x2OrUoSyxNwBQaDaQP4F084FX8LQMXA/s= +github.com/oracle/oci-go-sdk/v65 v65.71.1/go.mod h1:IBEV9l1qBzUpo7zgGaRUhbB05BVfcDGYRFBCPlTcPp0= github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI= github.com/ovh/go-ovh v1.6.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2 h1:CXwSGu/LYmbjEab5aMCs5usQRVBGThelUKBNnoSOuso= @@ -912,8 +861,6 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= 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/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/peterhellberg/link v1.1.0 h1:s2+RH8EGuI/mI4QwrWGSYQCRz7uNgip9BaM04HKu5kc= @@ -931,16 +878,15 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pluralsh/gqlclient v1.11.0 h1:FfXW7FiEJLHOfTAa7NxDb8jb3aMZNIpCAcG+bg8uHYA= -github.com/pluralsh/gqlclient v1.11.0/go.mod h1:qSXKUlio1F2DRPy8el4oFYsmpKbkUYspgPB87T4it5I= +github.com/pluralsh/gqlclient v1.12.2 h1:BrEFAASktf4quFw57CIaLAd+NZUTLhG08fe6tnhBQN4= +github.com/pluralsh/gqlclient v1.12.2/go.mod h1:OEjN9L63x8m3A3eQBv5kVkFgiY9fp2aZ0cgOF0uII58= 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/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/projectcontour/contour v1.29.1 h1:5xPxUCEhL5hGY/+4mXGNc0zIbRqQKy1etna7PYt0U20= -github.com/projectcontour/contour v1.29.1/go.mod h1:VOwv8X4npyTmLWNiK8OIYOvI5ue5ITBho2kl8KR3+2g= +github.com/projectcontour/contour v1.30.0 h1:VrZFHhCD3jd3+dLvLuqrK/T++uKbKvRKM5zjQelUaEM= +github.com/projectcontour/contour v1.30.0/go.mod h1:64BJdN6uIkGGt3jJ6b3OLLapysgfEUNX/6K8vsaTRIg= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -948,8 +894,8 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.20.0 h1:jBzTZ7B099Rg24tny+qngoynol8LtVYlA2bqx3vEloI= +github.com/prometheus/client_golang v1.20.0/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -966,8 +912,8 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -976,8 +922,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.0.11/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/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= @@ -996,14 +942,10 @@ github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351/go.mod h1:DCgfY 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/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= -github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= -github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.28 h1:2vT+ryIQGfF21HN/W5yn/CBPpsTJULuuepWfUq/geV4= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.28/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 h1:BkTk4gynLjguayxrYxZoMZjBnAOh7ntQvUkOFmkMqPU= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/schollz/progressbar/v3 v3.8.6 h1:QruMUdzZ1TbEP++S1m73OqRJk20ON11m6Wqv4EoGg8c= github.com/schollz/progressbar/v3 v3.8.6/go.mod h1:W5IEwbJecncFGBvuEh4A7HT1nZZ6WNIL2i3qbnI0WKY= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= @@ -1023,30 +965,22 @@ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs github.com/smartystreets/assertions v0.0.0-20180725160413-e900ae048470/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9 h1:hp2CYQUINdZMHdvTdXtPOY2ainKl4IoMcpAXEf2xj3Q= -github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= -github.com/smartystreets/gunit v1.3.4 h1:iHc8Rfhb/uCOc9a3KGuD3ut22L+hLIVaqR1o5fS6zC4= -github.com/smartystreets/gunit v1.3.4/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/sony/gobreaker v0.5.0 h1:dRCvqm0P490vZPmy7ppEk2qCnCieBooFJ+YoXGYB+yg= github.com/sony/gobreaker v0.5.0/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/sosodev/duration v1.2.0 h1:pqK/FLSjsAADWY74SyWDCjOcd5l7H8GSnnOGEB9A1Us= +github.com/sosodev/duration v1.2.0/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= 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/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= -github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= @@ -1060,8 +994,6 @@ 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/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/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= -github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -1084,22 +1016,20 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o 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/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.945 h1:+8B+2Bit7qPgmjdZPaA5NGjkGnYTzP5DOi/sICubde8= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.945/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.945 h1:dUBda90X1TKDCr10MeVqT6Ypf04ykLPmVxXFhCeANuc= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.945/go.mod h1:owgFnmcKQ97smmADIh+OIlW4Co2Jtv0QehTxoHV+mCQ= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.945 h1:WyLy2l0A6sIbCeSNqTdPlOip6CdcPnB+4ZcpiVKrfd0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.945/go.mod h1:QQxSXHm4oD9nDBKnUKa7zcfAgHCj0Dr7KyHu84YpXEc= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.984 h1:QLSx+ibsV68NXKgzofPuo1gxFwYSWk2++rvxZxNjbVo= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.984/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.984 h1:ABZeSsOOkkBn+gToVp8KkMt4E69hQkBMEFegCD4w15Q= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.984/go.mod h1:r++X8dKvTZWltr4J83TIwqGlyvG5fKaVh7RGC2+BryI= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.984 h1:dD0pLtMCJyRNMTystzaZ9WAK+UBb2ymGcdbkhtAub+8= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.984/go.mod h1:hWQvbAt8kqN3JLfVpgxsn2YNxDBLaiUaXZFtF4ymRjU= github.com/terra-farm/udnssdk v1.3.5 h1:MNR3adfuuEK/l04+jzo8WW/0fnorY+nW515qb3vEr6I= github.com/terra-farm/udnssdk v1.3.5/go.mod h1:8RnM56yZTR7mYyUIvrDgXzdRaEyFIzqdEi7+um26Sv8= 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/transip/gotransip/v6 v6.24.0 h1:QaHgRT3ikpMCXr8Ntojiced/W4izd9ra9PNE/i+7qTE= -github.com/transip/gotransip/v6 v6.24.0/go.mod h1:x0/RWGRK/zob817O3tfO2xhFoP1vu8YOHORx6Jpk80s= +github.com/transip/gotransip/v6 v6.25.0 h1:/H+SjMq/9HNZ0/maE1OLhJpxLaCGHsxq0PWaMPJHxK4= +github.com/transip/gotransip/v6 v6.25.0/go.mod h1:x0/RWGRK/zob817O3tfO2xhFoP1vu8YOHORx6Jpk80s= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= @@ -1121,10 +1051,8 @@ github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+ github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vektah/gqlparser/v2 v2.5.14 h1:dzLq75BJe03jjQm6n56PdH1oweB8ana42wj7E4jRy70= github.com/vektah/gqlparser/v2 v2.5.14/go.mod h1:WQQjFc+I1YIzoPvZBhUQX7waZgg3pMLi0r8KymvAE2w= -github.com/vinyldns/go-vinyldns v0.9.16 h1:GZJStDkcCk1F1AcRc64LuuMh+ENL8pHA0CVd4ulRMcQ= -github.com/vinyldns/go-vinyldns v0.9.16/go.mod h1:5qIJOdmzAnatKjurI+Tl4uTus7GJKJxb+zitufjHs3Q= -github.com/vultr/govultr/v2 v2.17.2 h1:gej/rwr91Puc/tgh+j33p/BLR16UrIPnSr+AIwYWZQs= -github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= 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 v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= @@ -1136,9 +1064,7 @@ github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMx 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.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/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= @@ -1149,12 +1075,12 @@ github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wK 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/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd/api/v3 v3.5.14 h1:vHObSCxyB9zlF60w7qzAdTcGaglbJOpSj1Xj9+WGxq0= -go.etcd.io/etcd/api/v3 v3.5.14/go.mod h1:BmtWcRlQvwa1h3G2jvKYwIQy4PkHlDej5t7uLMUdJUU= -go.etcd.io/etcd/client/pkg/v3 v3.5.14 h1:SaNH6Y+rVEdxfpA2Jr5wkEvN6Zykme5+YnbCkxvuWxQ= -go.etcd.io/etcd/client/pkg/v3 v3.5.14/go.mod h1:8uMgAokyG1czCtIdsq+AGyYQMvpIKnSvPjFMunkgeZI= -go.etcd.io/etcd/client/v3 v3.5.14 h1:CWfRs4FDaDoSz81giL7zPpZH2Z35tbOrAJkkjMqOupg= -go.etcd.io/etcd/client/v3 v3.5.14/go.mod h1:k3XfdV/VIHy/97rqWjoUzrj9tk7GgJGH9J8L4dNXmAk= +go.etcd.io/etcd/api/v3 v3.5.15 h1:3KpLJir1ZEBrYuV2v+Twaa/e2MdDCEZ/70H+lzEiwsk= +go.etcd.io/etcd/api/v3 v3.5.15/go.mod h1:N9EhGzXq58WuMllgH9ZvnEr7SI9pS0k0+DHZezGp7jM= +go.etcd.io/etcd/client/pkg/v3 v3.5.15 h1:fo0HpWz/KlHGMCC+YejpiCmyWDEuIpnTDzpJLB5fWlA= +go.etcd.io/etcd/client/pkg/v3 v3.5.15/go.mod h1:mXDI4NAOwEiszrHCb0aqfAYNCrZP4e9hRca3d1YK8EU= +go.etcd.io/etcd/client/v3 v3.5.15 h1:23M0eY4Fd/inNv1ZfU3AxrbbOdW79r9V9Rl62Nm6ip4= +go.etcd.io/etcd/client/v3 v3.5.15/go.mod h1:CLSJxrYjvLtHsrPKsy7LmZEE+DK2ktfd2bN4RhBMwlU= 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= @@ -1165,9 +1091,6 @@ go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= 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.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= @@ -1206,7 +1129,6 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1217,7 +1139,6 @@ golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201217014255-9d1352758620/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -1226,23 +1147,14 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/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-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= 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= @@ -1250,22 +1162,14 @@ golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-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-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -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.1.1-0.20191107180719-034126e5016b/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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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= @@ -1288,37 +1192,20 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn 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-20190619014844-b5b0513f8c1b/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-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/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-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-20200114155413-6afb5195e5aa/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-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/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-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/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-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 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= @@ -1331,35 +1218,27 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/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.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.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-20180425194835-bb9c189858d9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1379,52 +1258,28 @@ golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7w 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-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-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/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-20191026070338-33540a1f6037/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-20191220142924-d4481acd189f/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-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/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-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/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-20210423185535-09eb48e85fd7/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-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1440,8 +1295,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1449,31 +1304,30 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/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.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= 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.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/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/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.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-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1485,63 +1339,26 @@ golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/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-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-20191004055002-72853e10c5a3/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-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/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-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/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-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/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-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210114065538-d78b04bdf963/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= @@ -1559,100 +1376,42 @@ gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZ google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= 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.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.185.0 h1:ENEKk1k4jW8SmmaT6RE+ZasxmxezCrD5Vw4npvr+pAU= -google.golang.org/api v0.185.0/go.mod h1:HNfvIkJGlgrIlrbYkAm9W9IdkmKZjOTVh33YltygGbg= +google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0= +google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.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.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= 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-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-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -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-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3 h1:QW9+G6Fir4VcRXVH8x3LilNAb6cxBGLa6+GM4hRwexE= -google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3/go.mod h1:kdrSS/OiLkPrNUpzD4aHgCq2rVuC/YRxok32HXZ4vRE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f h1:b1Ln/PG8orm0SsBbHZWke8dDp2lrCD4jSmfglFpTZbk= +google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= 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.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1661,7 +1420,6 @@ 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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= 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= @@ -1679,13 +1437,11 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN 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/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M= -gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/gorp.v1 v1.7.2/go.mod h1:Wo3h+DBQZIxATwftsglhdD/62zRFPhGhTiu5jUJmCaw= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY= @@ -1696,9 +1452,8 @@ gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/ns1/ns1-go.v2 v2.11.0 h1:T+rMHhQsQ58bSgGZwX8INxU0sjDO7cWieX9xPr/UEY4= -gopkg.in/ns1/ns1-go.v2 v2.11.0/go.mod h1:pfaU0vECVP7DIOr453z03HXS6dFJpXdNRwOyRzwmPSc= -gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= +gopkg.in/ns1/ns1-go.v2 v2.12.0 h1:cqdqQoTx17JmTusfxh5m3e2b36jfUzFAZedv89pFX18= +gopkg.in/ns1/ns1-go.v2 v2.12.0/go.mod h1:pfaU0vECVP7DIOr453z03HXS6dFJpXdNRwOyRzwmPSc= 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/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= @@ -1724,28 +1479,25 @@ helm.sh/helm/v3 v3.2.4/go.mod h1:ZaXz/vzktgwjyGGFbUWtIQkscfE7WYoRGP2szqAFHR0= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-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= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -istio.io/api v1.22.1 h1:dzjmBYq6PEWAF7Kn7Dy5mI+RbJd49I41DEZLjYKfdZM= -istio.io/api v1.22.1/go.mod h1:S3l8LWqNYS9yT+d4bH+jqzH2lMencPkW7SKM1Cu9EyM= -istio.io/client-go v1.22.1 h1:78BUMxytD0muwpwHdcA9qTOTJXN0jib0mXmNLdXxj0c= -istio.io/client-go v1.22.1/go.mod h1:Z2QE9uMt6tDVyrmiLfLVhutbqtfUkPJ7A5Uw/p6gNFo= +istio.io/api v1.23.0 h1:yqv3lNW6XSYS5XkbEkxsmFROXIQznp4lFWqj7xKEqCA= +istio.io/api v1.23.0/go.mod h1:QPSTGXuIQdnZFEm3myf9NZ5uBMwCdJWUvfj9ZZ+2oBM= +istio.io/client-go v1.23.0 h1://xojbifr84q29WE3eMx74p36hD4lvcejX1KxE3iJvY= +istio.io/client-go v1.23.0/go.mod h1:3qX/KBS5aR47QV4JhphcZl5ysnZ53x78TBjNQLM2TC4= k8s.io/api v0.18.0/go.mod h1:q2HRQkfDzHMBZL9l/y9rH63PkQl4vae0xRT+8prbrK8= k8s.io/api v0.18.2/go.mod h1:SJCWI7OLzhZSvbY7U8zwNl9UA4o1fizoug34OV/2r78= k8s.io/api v0.18.4/go.mod h1:lOIQAKYgai1+vz9J7YcDZwC26Z0zQewYOGWdyIPUUQ4= -k8s.io/api v0.30.2 h1:+ZhRj+28QT4UOH+BKznu4CBgPWgkXO7XAvMcMl0qKvI= -k8s.io/api v0.30.2/go.mod h1:ULg5g9JvOev2dG0u2hig4Z7tQ2hHIuS+m8MNZ+X6EmI= +k8s.io/api v0.31.0 h1:b9LiSjR2ym/SzTOlfMHm1tr7/21aD7fSkqgD/CVJBCo= +k8s.io/api v0.31.0/go.mod h1:0YiFF+JfFxMM6+1hQei8FY8M7s1Mth+z/q7eF1aJkTE= k8s.io/apiextensions-apiserver v0.18.0/go.mod h1:18Cwn1Xws4xnWQNC00FLq1E350b9lUF+aOdIWDOZxgo= k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY= k8s.io/apiextensions-apiserver v0.18.4/go.mod h1:NYeyeYq4SIpFlPxSAB6jHPIdvu3hL0pc36wuRChybio= k8s.io/apimachinery v0.18.0/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA= k8s.io/apimachinery v0.18.2/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA= k8s.io/apimachinery v0.18.4/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= -k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg= -k8s.io/apimachinery v0.30.2/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/apimachinery v0.31.0 h1:m9jOiSr3FoSSL5WO9bjm1n6B9KROYYgNZOb4tyZ1lBc= +k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= k8s.io/apiserver v0.18.0/go.mod h1:3S2O6FeBBd6XTo0njUrLxiqk8GNy6wWOftjhJcXYnjw= k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw= k8s.io/apiserver v0.18.4/go.mod h1:q+zoFct5ABNnYkGIaGQ3bcbUNdmPyOCoEBcg51LChY8= @@ -1754,8 +1506,8 @@ k8s.io/cli-runtime v0.18.4/go.mod h1:9/hS/Cuf7NVzWR5F/5tyS6xsnclxoPLVtwhnkJG1Y4g k8s.io/client-go v0.18.0/go.mod h1:uQSYDYs4WhVZ9i6AIoEZuwUggLVEF64HOD37boKAtF8= k8s.io/client-go v0.18.2/go.mod h1:Xcm5wVGXX9HAA2JJ2sSBUn3tCJ+4SVlCbl2MNNv+CIU= k8s.io/client-go v0.18.4/go.mod h1:f5sXwL4yAZRkAtzOxRWUhA/N8XzGCb+nPZI8PfobZ9g= -k8s.io/client-go v0.30.2 h1:sBIVJdojUNPDU/jObC+18tXWcTJVcwyqS9diGdWHk50= -k8s.io/client-go v0.30.2/go.mod h1:JglKSWULm9xlJLx4KCkfLLQ7XwtlbflV6uFFSHTMgVs= +k8s.io/client-go v0.31.0 h1:QqEJzNjbN2Yv1H79SsS+SWnXkBgVu4Pj3CJQgbx0gI8= +k8s.io/client-go v0.31.0/go.mod h1:Y9wvC76g4fLjmU0BA+rV+h2cncoadjvjjkkIGoTLcGU= k8s.io/code-generator v0.18.0/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= k8s.io/code-generator v0.18.4/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= @@ -1769,12 +1521,12 @@ k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUc 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.130.0 h1:5nB3+3HpqKqXJIXNtJdtxcDCfaa9KL8StJgMzGJkUkM= -k8s.io/klog/v2 v2.130.0/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= 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-20240423202451-8948a665c108 h1:Q8Z7VlGhcJgBHJHYugJ/K/7iB8a2eSxCyxdVjJp+lLY= -k8s.io/kube-openapi v0.0.0-20240423202451-8948a665c108/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= +k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f h1:0LQagt0gDpKqvIkAMPaRGcXawNMouPECM1+F9BVxEaM= +k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f/go.mod h1:S9tOR0FxgyusSNR+MboCuiDpVWkAifZvaYI1Q2ubgro= k8s.io/kubectl v0.18.0/go.mod h1:LOkWx9Z5DXMEg5KtOjHhRiC1fqJPLyCr3KtQgEolCkU= k8s.io/kubectl v0.18.4/go.mod h1:EzB+nfeUWk6fm6giXQ8P4Fayw3dsN+M7Wjy23mTRtB0= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= @@ -1782,15 +1534,12 @@ k8s.io/metrics v0.18.0/go.mod h1:8aYTW18koXqjLVKL7Ds05RPMX9ipJZI3mywYvBOxXd4= k8s.io/metrics v0.18.4/go.mod h1:luze4fyI9JG4eLDZy0kFdYEebqNfi0QrG4xNEbPkHOs= 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-20240423183400-0849a56e8f22 h1:ao5hUqGhsqdm+bYbjH/pRkCs0unBGe9UyDahzs9zQzQ= -k8s.io/utils v0.0.0-20240423183400-0849a56e8f22/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= +k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= moul.io/http2curl v1.0.0 h1:6XwpyZOYsgZJrU8exnG87ncVkU1FVCcTRpwzOkTDUi8= moul.io/http2curl v1.0.0/go.mod h1:f6cULg+e4Md/oW1cYmwW4IWQOVl2lGbmCNGOHvzX2kE= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/letsencrypt v0.0.3/go.mod h1:buyQKZ6IXrRnB7TdkHP0RyEybLx18HHyOSoTyoOLqNY= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= sigs.k8s.io/controller-runtime v0.6.1/go.mod h1:XRYBPdbf5XJu9kpS84VJiZ7h/u1hF3gEORz0efEja7A= sigs.k8s.io/controller-runtime v0.18.4 h1:87+guW1zhvuPLh1PHybKdYFLU0YJp4FhJRmiHvm5BZw= diff --git a/kustomize/kustomization.yaml b/kustomize/kustomization.yaml index 37ea99655..679d56974 100644 --- a/kustomize/kustomization.yaml +++ b/kustomize/kustomization.yaml @@ -3,7 +3,7 @@ kind: Kustomization images: - name: registry.k8s.io/external-dns/external-dns - newTag: v0.14.2 + newTag: v0.15.0 resources: - ./external-dns-deployment.yaml diff --git a/main.go b/main.go index f05c46906..985124349 100644 --- a/main.go +++ b/main.go @@ -25,10 +25,9 @@ import ( "syscall" "time" - awsSDK "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/dynamodb" - "github.com/aws/aws-sdk-go/service/route53" - sd "github.com/aws/aws-sdk-go/service/servicediscovery" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/route53" + sd "github.com/aws/aws-sdk-go-v2/service/servicediscovery" "github.com/go-logr/logr" "github.com/prometheus/client_golang/prometheus/promhttp" log "github.com/sirupsen/logrus" @@ -47,14 +46,12 @@ import ( "sigs.k8s.io/external-dns/provider/aws" "sigs.k8s.io/external-dns/provider/awssd" "sigs.k8s.io/external-dns/provider/azure" - "sigs.k8s.io/external-dns/provider/bluecat" "sigs.k8s.io/external-dns/provider/civo" "sigs.k8s.io/external-dns/provider/cloudflare" "sigs.k8s.io/external-dns/provider/coredns" "sigs.k8s.io/external-dns/provider/designate" "sigs.k8s.io/external-dns/provider/digitalocean" "sigs.k8s.io/external-dns/provider/dnsimple" - "sigs.k8s.io/external-dns/provider/dyn" "sigs.k8s.io/external-dns/provider/exoscale" "sigs.k8s.io/external-dns/provider/gandi" "sigs.k8s.io/external-dns/provider/godaddy" @@ -68,16 +65,12 @@ import ( "sigs.k8s.io/external-dns/provider/pdns" "sigs.k8s.io/external-dns/provider/pihole" "sigs.k8s.io/external-dns/provider/plural" - "sigs.k8s.io/external-dns/provider/rcode0" "sigs.k8s.io/external-dns/provider/rdns" "sigs.k8s.io/external-dns/provider/rfc2136" - "sigs.k8s.io/external-dns/provider/safedns" "sigs.k8s.io/external-dns/provider/scaleway" "sigs.k8s.io/external-dns/provider/tencentcloud" "sigs.k8s.io/external-dns/provider/transip" "sigs.k8s.io/external-dns/provider/ultradns" - "sigs.k8s.io/external-dns/provider/vinyldns" - "sigs.k8s.io/external-dns/provider/vultr" "sigs.k8s.io/external-dns/provider/webhook" webhookapi "sigs.k8s.io/external-dns/provider/webhook/api" "sigs.k8s.io/external-dns/registry" @@ -179,6 +172,7 @@ func main() { // Combine multiple sources into a single, deduplicated source. endpointsSource := source.NewDedupSource(source.NewMultiSource(sources, sourceCfg.DefaultTargets)) + endpointsSource = source.NewNAT64Source(endpointsSource, cfg.NAT64Networks) endpointsSource = source.NewTargetFilterSource(endpointsSource, targetFilter) // RegexDomainFilter overrides DomainFilter @@ -211,10 +205,10 @@ func main() { case "alibabacloud": p, err = alibabacloud.NewAlibabaCloudProvider(cfg.AlibabaCloudConfigFile, domainFilter, zoneIDFilter, cfg.AlibabaCloudZoneType, cfg.DryRun) case "aws": - sessions := aws.CreateSessions(cfg) - clients := make(map[string]aws.Route53API, len(sessions)) - for profile, session := range sessions { - clients[profile] = route53.New(session) + configs := aws.CreateV2Configs(cfg) + clients := make(map[string]aws.Route53API, len(configs)) + for profile, config := range configs { + clients[profile] = route53.NewFromConfig(config) } p, err = aws.NewAWSProvider( @@ -241,25 +235,17 @@ func main() { log.Infof("Registry \"%s\" cannot be used with AWS Cloud Map. Switching to \"aws-sd\".", cfg.Registry) cfg.Registry = "aws-sd" } - p, err = awssd.NewAWSSDProvider(domainFilter, cfg.AWSZoneType, cfg.DryRun, cfg.AWSSDServiceCleanup, cfg.TXTOwnerID, sd.New(aws.CreateDefaultSession(cfg))) + p, err = awssd.NewAWSSDProvider(domainFilter, cfg.AWSZoneType, cfg.DryRun, cfg.AWSSDServiceCleanup, cfg.TXTOwnerID, sd.NewFromConfig(aws.CreateDefaultV2Config(cfg))) case "azure-dns", "azure": p, err = azure.NewAzureProvider(cfg.AzureConfigFile, domainFilter, zoneNameFilter, zoneIDFilter, cfg.AzureSubscriptionID, cfg.AzureResourceGroup, cfg.AzureUserAssignedIdentityClientID, cfg.AzureActiveDirectoryAuthorityHost, cfg.DryRun) case "azure-private-dns": p, err = azure.NewAzurePrivateDNSProvider(cfg.AzureConfigFile, domainFilter, zoneNameFilter, zoneIDFilter, cfg.AzureSubscriptionID, cfg.AzureResourceGroup, cfg.AzureUserAssignedIdentityClientID, cfg.AzureActiveDirectoryAuthorityHost, cfg.DryRun) - case "bluecat": - p, err = bluecat.NewBluecatProvider(cfg.BluecatConfigFile, cfg.BluecatDNSConfiguration, cfg.BluecatDNSServerName, cfg.BluecatDNSDeployType, cfg.BluecatDNSView, cfg.BluecatGatewayHost, cfg.BluecatRootZone, cfg.TXTPrefix, cfg.TXTSuffix, domainFilter, zoneIDFilter, cfg.DryRun, cfg.BluecatSkipTLSVerify) - case "vinyldns": - p, err = vinyldns.NewVinylDNSProvider(domainFilter, zoneIDFilter, cfg.DryRun) - case "vultr": - p, err = vultr.NewVultrProvider(ctx, domainFilter, cfg.DryRun) case "ultradns": p, err = ultradns.NewUltraDNSProvider(domainFilter, cfg.DryRun) case "civo": p, err = civo.NewCivoProvider(domainFilter, cfg.DryRun) case "cloudflare": p, err = cloudflare.NewCloudFlareProvider(domainFilter, zoneIDFilter, cfg.CloudflareProxied, cfg.DryRun, cfg.CloudflareDNSRecordsPerPage) - case "rcodezero": - p, err = rcode0.NewRcodeZeroProvider(domainFilter, cfg.DryRun, cfg.RcodezeroTXTEncrypt) case "google": p, err = google.NewGoogleProvider(ctx, cfg.GoogleProject, domainFilter, zoneIDFilter, cfg.GoogleBatchChangeSize, cfg.GoogleBatchChangeInterval, cfg.GoogleZoneVisibility, cfg.DryRun) case "digitalocean": @@ -270,19 +256,6 @@ func main() { p, err = linode.NewLinodeProvider(domainFilter, cfg.DryRun, externaldns.Version) case "dnsimple": p, err = dnsimple.NewDnsimpleProvider(domainFilter, zoneIDFilter, cfg.DryRun) - case "dyn": - p, err = dyn.NewDynProvider( - dyn.DynConfig{ - DomainFilter: domainFilter, - ZoneIDFilter: zoneIDFilter, - DryRun: cfg.DryRun, - CustomerName: cfg.DynCustomerName, - Username: cfg.DynUsername, - Password: cfg.DynPassword, - MinTTLSeconds: cfg.DynMinTTLSeconds, - AppVersion: externaldns.Version, - }, - ) case "coredns", "skydns": p, err = coredns.NewCoreDNSProvider(domainFilter, cfg.CoreDNSPrefix, cfg.DryRun) case "rdns": @@ -381,8 +354,6 @@ func main() { ) case "ibmcloud": p, err = ibmcloud.NewIBMCloudProvider(cfg.IBMCloudConfigFile, domainFilter, zoneIDFilter, endpointsSource, cfg.IBMCloudProxied, cfg.DryRun) - case "safedns": - p, err = safedns.NewSafeDNSProvider(domainFilter, cfg.DryRun) case "plural": p, err = plural.NewPluralProvider(cfg.PluralCluster, cfg.PluralProvider) case "tencentcloud": @@ -401,20 +372,31 @@ func main() { os.Exit(0) } + if cfg.ProviderCacheTime > 0 { + p = provider.NewCachedProvider( + p, + cfg.ProviderCacheTime, + ) + } + var r registry.Registry switch cfg.Registry { case "dynamodb": - config := awsSDK.NewConfig() + var dynamodbOpts []func(*dynamodb.Options) if cfg.AWSDynamoDBRegion != "" { - config = config.WithRegion(cfg.AWSDynamoDBRegion) + dynamodbOpts = []func(*dynamodb.Options){ + func(opts *dynamodb.Options) { + opts.Region = cfg.AWSDynamoDBRegion + }, + } } - r, err = registry.NewDynamoDBRegistry(p, cfg.TXTOwnerID, dynamodb.New(aws.CreateDefaultSession(cfg), config), cfg.AWSDynamoDBTable, cfg.TXTPrefix, cfg.TXTSuffix, cfg.TXTWildcardReplacement, cfg.ManagedDNSRecordTypes, cfg.ExcludeDNSRecordTypes, []byte(cfg.TXTEncryptAESKey), cfg.TXTCacheInterval) + r, err = registry.NewDynamoDBRegistry(p, cfg.TXTOwnerID, dynamodb.NewFromConfig(aws.CreateDefaultV2Config(cfg), dynamodbOpts...), cfg.AWSDynamoDBTable, cfg.TXTPrefix, cfg.TXTSuffix, cfg.TXTWildcardReplacement, cfg.ManagedDNSRecordTypes, cfg.ExcludeDNSRecordTypes, []byte(cfg.TXTEncryptAESKey), cfg.TXTCacheInterval) case "noop": r, err = registry.NewNoopRegistry(p) case "txt": r, err = registry.NewTXTRegistry(p, cfg.TXTPrefix, cfg.TXTSuffix, cfg.TXTOwnerID, cfg.TXTCacheInterval, cfg.TXTWildcardReplacement, cfg.ManagedDNSRecordTypes, cfg.ExcludeDNSRecordTypes, cfg.TXTEncryptEnabled, []byte(cfg.TXTEncryptAESKey)) case "aws-sd": - r, err = registry.NewAWSSDRegistry(p.(*awssd.AWSSDProvider), cfg.TXTOwnerID) + r, err = registry.NewAWSSDRegistry(p, cfg.TXTOwnerID) default: log.Fatalf("unknown registry: %s", cfg.Registry) } diff --git a/mkdocs.yml b/mkdocs.yml index 82d55858c..b96fa998e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,7 +2,6 @@ site_name: external-dns site_author: external-dns maintainers repo_name: kubernetes-sigs/external-dns repo_url: https://github.com/kubernetes-sigs/external-dns/ -trademark: https://www.linuxfoundation.org/legal/trademark-usage docs_dir: . @@ -19,11 +18,7 @@ nav: - Tutorials: docs/tutorials/* - Annotations: - About: docs/annotations/annotations.md - - Sources: - - About: docs/sources/sources.md - - Gateway: docs/sources/gateway.md - - Ingress: docs/sources/ingress.md - - Service: docs/sources/service.md + - Sources: docs/sources/* - Registries: - About: docs/registry/registry.md - TXT: docs/registry/txt.md @@ -31,7 +26,9 @@ nav: - Advanced Topics: - Initial Design: docs/initial-design.md - TTL: docs/ttl.md + - NAT64: docs/nat64.md - MultiTarget: docs/proposal/multi-target.md + - Rate Limits: docs/rate-limits.md - Contributing: - Kubernetes Contributions: CONTRIBUTING.md - Release: docs/release.md diff --git a/pkg/apis/externaldns/types.go b/pkg/apis/externaldns/types.go index 822993d09..02b59a422 100644 --- a/pkg/apis/externaldns/types.go +++ b/pkg/apis/externaldns/types.go @@ -67,6 +67,7 @@ type Config struct { AlwaysPublishNotReadyAddresses bool ConnectorSourceServer string Provider string + ProviderCacheTime time.Duration GoogleProject string GoogleBatchChangeSize int GoogleBatchChangeInterval time.Duration @@ -103,28 +104,15 @@ type Config struct { AzureSubscriptionID string AzureUserAssignedIdentityClientID string AzureActiveDirectoryAuthorityHost string - BluecatDNSConfiguration string - BluecatConfigFile string - BluecatDNSView string - BluecatGatewayHost string - BluecatRootZone string - BluecatDNSServerName string - BluecatDNSDeployType string - BluecatSkipTLSVerify bool CloudflareProxied bool CloudflareDNSRecordsPerPage int CoreDNSPrefix string - RcodezeroTXTEncrypt bool AkamaiServiceConsumerDomain string AkamaiClientToken string AkamaiClientSecret string AkamaiAccessToken string AkamaiEdgercPath string AkamaiEdgercSection string - DynCustomerName string - DynUsername string - DynPassword string `secure:"yes"` - DynMinTTLSeconds int OCIConfigFile string OCICompartmentOCID string OCIAuthInstancePrincipal bool @@ -213,6 +201,7 @@ type Config struct { WebhookServer bool TraefikDisableLegacy bool TraefikDisableNew bool + NAT64Networks []string } var defaultConfig = &Config{ @@ -239,6 +228,7 @@ var defaultConfig = &Config{ PublishHostIP: false, ConnectorSourceServer: "localhost:8080", Provider: "", + ProviderCacheTime: 0, GoogleProject: "", GoogleBatchChangeSize: 1000, GoogleBatchChangeInterval: time.Second, @@ -270,12 +260,9 @@ var defaultConfig = &Config{ AzureConfigFile: "/etc/kubernetes/azure.json", AzureResourceGroup: "", AzureSubscriptionID: "", - BluecatConfigFile: "/etc/kubernetes/bluecat.json", - BluecatDNSDeployType: "no-deploy", CloudflareProxied: false, CloudflareDNSRecordsPerPage: 100, CoreDNSPrefix: "/skydns/", - RcodezeroTXTEncrypt: false, AkamaiServiceConsumerDomain: "", AkamaiClientToken: "", AkamaiClientSecret: "", @@ -363,6 +350,7 @@ var defaultConfig = &Config{ WebhookServer: false, TraefikDisableLegacy: false, TraefikDisableNew: false, + NAT64Networks: []string{}, } // NewConfig returns new Config object @@ -428,7 +416,7 @@ func (cfg *Config) ParseFlags(args []string) error { app.Flag("openshift-router-name", "if source is openshift-route then you can pass the ingress controller name. Based on this name external-dns will select the respective router from the route status and map that routerCanonicalHostname to the route host while creating a CNAME record.").StringVar(&cfg.OCPRouterName) app.Flag("namespace", "Limit resources queried for endpoints to a specific namespace (default: all namespaces)").Default(defaultConfig.Namespace).StringVar(&cfg.Namespace) app.Flag("annotation-filter", "Filter resources queried for endpoints by annotation, using label selector semantics").Default(defaultConfig.AnnotationFilter).StringVar(&cfg.AnnotationFilter) - app.Flag("label-filter", "Filter resources queried for endpoints by label selector; currently supported by source types crd, gateway-httproute, gateway-grpcroute, gateway-tlsroute, gateway-tcproute, gateway-udproute, ingress, node, openshift-route, and service").Default(defaultConfig.LabelFilter).StringVar(&cfg.LabelFilter) + app.Flag("label-filter", "Filter resources queried for endpoints by label selector; currently supported by source types crd, gateway-httproute, gateway-grpcroute, gateway-tlsroute, gateway-tcproute, gateway-udproute, ingress, node, openshift-route, service and ambassador-host").Default(defaultConfig.LabelFilter).StringVar(&cfg.LabelFilter) app.Flag("ingress-class", "Require an Ingress to have this class name (defaults to any class; specify multiple times to allow more than one class)").StringsVar(&cfg.IngressClassNames) app.Flag("fqdn-template", "A templated string that's used to generate DNS names from sources that don't define a hostname themselves, or to add a hostname suffix when paired with the fake source (optional). Accepts comma separated list for multiple global FQDN.").Default(defaultConfig.FQDNTemplate).StringVar(&cfg.FQDNTemplate) app.Flag("combine-fqdn-annotation", "Combine FQDN template and Annotations instead of overwriting").BoolVar(&cfg.CombineFQDNAndAnnotation) @@ -452,10 +440,12 @@ func (cfg *Config) ParseFlags(args []string) error { app.Flag("exclude-target-net", "Exclude target nets (optional)").StringsVar(&cfg.ExcludeTargetNets) app.Flag("traefik-disable-legacy", "Disable listeners on Resources under the traefik.containo.us API Group").Default(strconv.FormatBool(defaultConfig.TraefikDisableLegacy)).BoolVar(&cfg.TraefikDisableLegacy) app.Flag("traefik-disable-new", "Disable listeners on Resources under the traefik.io API Group").Default(strconv.FormatBool(defaultConfig.TraefikDisableNew)).BoolVar(&cfg.TraefikDisableNew) + app.Flag("nat64-networks", "Adding an A record for each AAAA record in NAT64-enabled networks; specify multiple times for multiple possible nets (optional)").StringsVar(&cfg.NAT64Networks) // Flags related to providers - providers := []string{"akamai", "alibabacloud", "aws", "aws-sd", "azure", "azure-dns", "azure-private-dns", "bluecat", "civo", "cloudflare", "coredns", "designate", "digitalocean", "dnsimple", "dyn", "exoscale", "gandi", "godaddy", "google", "ibmcloud", "inmemory", "linode", "ns1", "oci", "ovh", "pdns", "pihole", "plural", "rcodezero", "rdns", "rfc2136", "safedns", "scaleway", "skydns", "tencentcloud", "transip", "ultradns", "vinyldns", "vultr", "webhook"} + providers := []string{"akamai", "alibabacloud", "aws", "aws-sd", "azure", "azure-dns", "azure-private-dns", "civo", "cloudflare", "coredns", "designate", "digitalocean", "dnsimple", "exoscale", "gandi", "godaddy", "google", "ibmcloud", "inmemory", "linode", "ns1", "oci", "ovh", "pdns", "pihole", "plural", "rdns", "rfc2136", "scaleway", "skydns", "tencentcloud", "transip", "ultradns", "webhook"} app.Flag("provider", "The DNS provider where the DNS records will be created (required, options: "+strings.Join(providers, ", ")+")").Required().PlaceHolder("provider").EnumVar(&cfg.Provider, providers...) + app.Flag("provider-cache-time", "The time to cache the DNS provider record list requests.").Default(defaultConfig.ProviderCacheTime.String()).DurationVar(&cfg.ProviderCacheTime) app.Flag("domain-filter", "Limit possible target zones by a domain suffix; specify multiple times for multiple domains (optional)").Default("").StringsVar(&cfg.DomainFilter) app.Flag("exclude-domains", "Exclude subdomains (optional)").Default("").StringsVar(&cfg.ExcludeDomains) app.Flag("regex-domain-filter", "Limit possible domains and target zones by a Regex filter; Overrides domain-filter (optional)").Default(defaultConfig.RegexDomainFilter.String()).RegexpVar(&cfg.RegexDomainFilter) @@ -490,16 +480,6 @@ func (cfg *Config) ParseFlags(args []string) error { app.Flag("tencent-cloud-config-file", "When using the Tencent Cloud provider, specify the Tencent Cloud configuration file (required when --provider=tencentcloud)").Default(defaultConfig.TencentCloudConfigFile).StringVar(&cfg.TencentCloudConfigFile) app.Flag("tencent-cloud-zone-type", "When using the Tencent Cloud provider, filter for zones with visibility (optional, options: public, private)").Default(defaultConfig.TencentCloudZoneType).EnumVar(&cfg.TencentCloudZoneType, "", "public", "private") - // Flags related to BlueCat provider - app.Flag("bluecat-dns-configuration", "When using the Bluecat provider, specify the Bluecat DNS configuration string (optional when --provider=bluecat)").Default("").StringVar(&cfg.BluecatDNSConfiguration) - app.Flag("bluecat-config-file", "When using the Bluecat provider, specify the Bluecat configuration file (optional when --provider=bluecat)").Default(defaultConfig.BluecatConfigFile).StringVar(&cfg.BluecatConfigFile) - app.Flag("bluecat-dns-view", "When using the Bluecat provider, specify the Bluecat DNS view string (optional when --provider=bluecat)").Default("").StringVar(&cfg.BluecatDNSView) - app.Flag("bluecat-gateway-host", "When using the Bluecat provider, specify the Bluecat Gateway Host (optional when --provider=bluecat)").Default("").StringVar(&cfg.BluecatGatewayHost) - app.Flag("bluecat-root-zone", "When using the Bluecat provider, specify the Bluecat root zone (optional when --provider=bluecat)").Default("").StringVar(&cfg.BluecatRootZone) - app.Flag("bluecat-skip-tls-verify", "When using the Bluecat provider, specify to skip TLS verification (optional when --provider=bluecat) (default: false)").BoolVar(&cfg.BluecatSkipTLSVerify) - app.Flag("bluecat-dns-server-name", "When using the Bluecat provider, specify the Bluecat DNS Server to initiate deploys against. This is only used if --bluecat-dns-deploy-type is not 'no-deploy' (optional when --provider=bluecat)").Default("").StringVar(&cfg.BluecatDNSServerName) - app.Flag("bluecat-dns-deploy-type", "When using the Bluecat provider, specify the type of DNS deployment to initiate after records are updated. Valid options are 'full-deploy' and 'no-deploy'. Deploy will only execute if --bluecat-dns-server-name is set (optional when --provider=bluecat)").Default(defaultConfig.BluecatDNSDeployType).StringVar(&cfg.BluecatDNSDeployType) - app.Flag("cloudflare-proxied", "When using the Cloudflare provider, specify if the proxy mode must be enabled (default: disabled)").BoolVar(&cfg.CloudflareProxied) app.Flag("cloudflare-dns-records-per-page", "When using the Cloudflare provider, specify how many DNS records listed per page, max possible 5,000 (default: 100)").Default(strconv.Itoa(defaultConfig.CloudflareDNSRecordsPerPage)).IntVar(&cfg.CloudflareDNSRecordsPerPage) app.Flag("coredns-prefix", "When using the CoreDNS provider, specify the prefix name").Default(defaultConfig.CoreDNSPrefix).StringVar(&cfg.CoreDNSPrefix) @@ -509,16 +489,11 @@ func (cfg *Config) ParseFlags(args []string) error { app.Flag("akamai-access-token", "When using the Akamai provider, specify the access token (required when --provider=akamai and edgerc-path not specified)").Default(defaultConfig.AkamaiAccessToken).StringVar(&cfg.AkamaiAccessToken) app.Flag("akamai-edgerc-path", "When using the Akamai provider, specify the .edgerc file path. Path must be reachable form invocation environment. (required when --provider=akamai and *-token, secret serviceconsumerdomain not specified)").Default(defaultConfig.AkamaiEdgercPath).StringVar(&cfg.AkamaiEdgercPath) app.Flag("akamai-edgerc-section", "When using the Akamai provider, specify the .edgerc file path (Optional when edgerc-path is specified)").Default(defaultConfig.AkamaiEdgercSection).StringVar(&cfg.AkamaiEdgercSection) - app.Flag("dyn-customer-name", "When using the Dyn provider, specify the Customer Name").Default("").StringVar(&cfg.DynCustomerName) - app.Flag("dyn-username", "When using the Dyn provider, specify the Username").Default("").StringVar(&cfg.DynUsername) - app.Flag("dyn-password", "When using the Dyn provider, specify the password").Default("").StringVar(&cfg.DynPassword) - app.Flag("dyn-min-ttl", "Minimal TTL (in seconds) for records. This value will be used if the provided TTL for a service/ingress is lower than this.").IntVar(&cfg.DynMinTTLSeconds) app.Flag("oci-config-file", "When using the OCI provider, specify the OCI configuration file (required when --provider=oci").Default(defaultConfig.OCIConfigFile).StringVar(&cfg.OCIConfigFile) app.Flag("oci-compartment-ocid", "When using the OCI provider, specify the OCID of the OCI compartment containing all managed zones and records. Required when using OCI IAM instance principal authentication.").StringVar(&cfg.OCICompartmentOCID) app.Flag("oci-zone-scope", "When using OCI provider, filter for zones with this scope (optional, options: GLOBAL, PRIVATE). Defaults to GLOBAL, setting to empty value will target both.").Default(defaultConfig.OCIZoneScope).EnumVar(&cfg.OCIZoneScope, "", "GLOBAL", "PRIVATE") app.Flag("oci-auth-instance-principal", "When using the OCI provider, specify whether OCI IAM instance principal authentication should be used (instead of key-based auth via the OCI config file).").Default(strconv.FormatBool(defaultConfig.OCIAuthInstancePrincipal)).BoolVar(&cfg.OCIAuthInstancePrincipal) app.Flag("oci-zones-cache-duration", "When using the OCI provider, set the zones list cache TTL (0s to disable).").Default(defaultConfig.OCIZoneCacheDuration.String()).DurationVar(&cfg.OCIZoneCacheDuration) - app.Flag("rcodezero-txt-encrypt", "When using the Rcodezero provider with txt registry option, set if TXT rrs are encrypted (default: false)").Default(strconv.FormatBool(defaultConfig.RcodezeroTXTEncrypt)).BoolVar(&cfg.RcodezeroTXTEncrypt) app.Flag("inmemory-zone", "Provide a list of pre-configured zones for the inmemory provider; specify multiple times for multiple zones (optional)").Default("").StringsVar(&cfg.InMemoryZones) app.Flag("ovh-endpoint", "When using the OVH provider, specify the endpoint (default: ovh-eu)").Default(defaultConfig.OVHEndpoint).StringVar(&cfg.OVHEndpoint) app.Flag("ovh-api-rate-limit", "When using the OVH provider, specify the API request rate limit, X operations by seconds (default: 20)").Default(strconv.Itoa(defaultConfig.OVHApiRateLimit)).IntVar(&cfg.OVHApiRateLimit) diff --git a/pkg/apis/externaldns/types_test.go b/pkg/apis/externaldns/types_test.go index ea52b2f78..e52f87f49 100644 --- a/pkg/apis/externaldns/types_test.go +++ b/pkg/apis/externaldns/types_test.go @@ -72,14 +72,6 @@ var ( AzureConfigFile: "/etc/kubernetes/azure.json", AzureResourceGroup: "", AzureSubscriptionID: "", - BluecatDNSConfiguration: "", - BluecatDNSServerName: "", - BluecatConfigFile: "/etc/kubernetes/bluecat.json", - BluecatDNSView: "", - BluecatGatewayHost: "", - BluecatRootZone: "", - BluecatDNSDeployType: defaultConfig.BluecatDNSDeployType, - BluecatSkipTLSVerify: false, CloudflareProxied: false, CloudflareDNSRecordsPerPage: 100, CoreDNSPrefix: "/skydns/", @@ -117,7 +109,6 @@ var ( ExoscaleAPISecret: "", CRDSourceAPIVersion: "externaldns.k8s.io/v1alpha1", CRDSourceKind: "DNSEndpoint", - RcodezeroTXTEncrypt: false, TransIPAccountName: "", TransIPPrivateKeyFile: "", DigitalOceanAPIPageSize: 50, @@ -179,14 +170,6 @@ var ( AzureConfigFile: "azure.json", AzureResourceGroup: "arg", AzureSubscriptionID: "arg", - BluecatDNSConfiguration: "arg", - BluecatDNSServerName: "arg", - BluecatConfigFile: "bluecat.json", - BluecatDNSView: "arg", - BluecatGatewayHost: "arg", - BluecatRootZone: "arg", - BluecatDNSDeployType: "full-deploy", - BluecatSkipTLSVerify: true, CloudflareProxied: true, CloudflareDNSRecordsPerPage: 5000, CoreDNSPrefix: "/coredns/", @@ -228,7 +211,6 @@ var ( ExoscaleAPISecret: "2", CRDSourceAPIVersion: "test.k8s.io/v1alpha1", CRDSourceKind: "Endpoint", - RcodezeroTXTEncrypt: true, NS1Endpoint: "https://api.example.com/v1", NS1IgnoreSSL: true, TransIPAccountName: "transip", @@ -289,14 +271,6 @@ func TestParseFlags(t *testing.T) { "--azure-config-file=azure.json", "--azure-resource-group=arg", "--azure-subscription-id=arg", - "--bluecat-dns-configuration=arg", - "--bluecat-config-file=bluecat.json", - "--bluecat-dns-view=arg", - "--bluecat-dns-server-name=arg", - "--bluecat-gateway-host=arg", - "--bluecat-root-zone=arg", - "--bluecat-dns-deploy-type=full-deploy", - "--bluecat-skip-tls-verify", "--cloudflare-proxied", "--cloudflare-dns-records-per-page=5000", "--coredns-prefix=/coredns/", @@ -370,7 +344,6 @@ func TestParseFlags(t *testing.T) { "--exoscale-apisecret=2", "--crd-source-apiversion=test.k8s.io/v1alpha1", "--crd-source-kind=Endpoint", - "--rcodezero-txt-encrypt", "--ns1-endpoint=https://api.example.com/v1", "--ns1-ignoressl", "--transip-account=transip", @@ -414,14 +387,6 @@ func TestParseFlags(t *testing.T) { "EXTERNAL_DNS_AZURE_CONFIG_FILE": "azure.json", "EXTERNAL_DNS_AZURE_RESOURCE_GROUP": "arg", "EXTERNAL_DNS_AZURE_SUBSCRIPTION_ID": "arg", - "EXTERNAL_DNS_BLUECAT_DNS_CONFIGURATION": "arg", - "EXTERNAL_DNS_BLUECAT_DNS_SERVER_NAME": "arg", - "EXTERNAL_DNS_BLUECAT_DNS_DEPLOY_TYPE": "full-deploy", - "EXTERNAL_DNS_BLUECAT_CONFIG_FILE": "bluecat.json", - "EXTERNAL_DNS_BLUECAT_DNS_VIEW": "arg", - "EXTERNAL_DNS_BLUECAT_GATEWAY_HOST": "arg", - "EXTERNAL_DNS_BLUECAT_ROOT_ZONE": "arg", - "EXTERNAL_DNS_BLUECAT_SKIP_TLS_VERIFY": "1", "EXTERNAL_DNS_CLOUDFLARE_PROXIED": "1", "EXTERNAL_DNS_CLOUDFLARE_DNS_RECORDS_PER_PAGE": "5000", "EXTERNAL_DNS_COREDNS_PREFIX": "/coredns/", @@ -488,7 +453,6 @@ func TestParseFlags(t *testing.T) { "EXTERNAL_DNS_EXOSCALE_APISECRET": "2", "EXTERNAL_DNS_CRD_SOURCE_APIVERSION": "test.k8s.io/v1alpha1", "EXTERNAL_DNS_CRD_SOURCE_KIND": "Endpoint", - "EXTERNAL_DNS_RCODEZERO_TXT_ENCRYPT": "1", "EXTERNAL_DNS_NS1_ENDPOINT": "https://api.example.com/v1", "EXTERNAL_DNS_NS1_IGNORESSL": "1", "EXTERNAL_DNS_TRANSIP_ACCOUNT": "transip", @@ -536,14 +500,12 @@ func restoreEnv(t *testing.T, originalEnv map[string]string) { func TestPasswordsNotLogged(t *testing.T) { cfg := Config{ - DynPassword: "dyn-pass", PDNSAPIKey: "pdns-api-key", RFC2136TSIGSecret: "tsig-secret", } s := cfg.String() - assert.False(t, strings.Contains(s, "dyn-pass")) assert.False(t, strings.Contains(s, "pdns-api-key")) assert.False(t, strings.Contains(s, "tsig-secret")) } diff --git a/pkg/apis/externaldns/validation/validation.go b/pkg/apis/externaldns/validation/validation.go index 6af44ab12..a5d06fa9b 100644 --- a/pkg/apis/externaldns/validation/validation.go +++ b/pkg/apis/externaldns/validation/validation.go @@ -61,19 +61,6 @@ func ValidateConfig(cfg *externaldns.Config) error { } } - if cfg.Provider == "dyn" { - if cfg.DynUsername == "" { - return errors.New("no Dyn username specified") - } - if cfg.DynCustomerName == "" { - return errors.New("no Dyn customer name specified") - } - - if cfg.DynMinTTLSeconds < 0 { - return errors.New("TTL specified for Dyn is negative") - } - } - if cfg.Provider == "rfc2136" { if cfg.RFC2136MinTTL < 0 { return errors.New("TTL specified for rfc2136 is negative") diff --git a/pkg/apis/externaldns/validation/validation_test.go b/pkg/apis/externaldns/validation/validation_test.go index b0efbf7d6..7f4f33c73 100644 --- a/pkg/apis/externaldns/validation/validation_test.go +++ b/pkg/apis/externaldns/validation/validation_test.go @@ -64,59 +64,6 @@ func newValidConfig(t *testing.T) *externaldns.Config { return cfg } -func addRequiredFieldsForDyn(cfg *externaldns.Config) { - cfg.LogFormat = "json" - cfg.Sources = []string{"ingress"} - cfg.Provider = "dyn" -} - -func TestValidateBadDynConfig(t *testing.T) { - badConfigs := []*externaldns.Config{ - {}, - { - // only username - DynUsername: "test", - }, - { - // only customer name - DynCustomerName: "test", - }, - { - // negative timeout - DynUsername: "test", - DynCustomerName: "test", - DynMinTTLSeconds: -1, - }, - } - - for _, cfg := range badConfigs { - addRequiredFieldsForDyn(cfg) - err := ValidateConfig(cfg) - assert.NotNil(t, err, "Configuration %+v should NOT have passed validation", cfg) - } -} - -func TestValidateGoodDynConfig(t *testing.T) { - goodConfigs := []*externaldns.Config{ - { - DynUsername: "test", - DynCustomerName: "test", - DynMinTTLSeconds: 600, - }, - { - DynUsername: "test", - DynCustomerName: "test", - DynMinTTLSeconds: 0, - }, - } - - for _, cfg := range goodConfigs { - addRequiredFieldsForDyn(cfg) - err := ValidateConfig(cfg) - assert.Nil(t, err, "Configuration should be valid, got this error instead", err) - } -} - func TestValidateBadIgnoreHostnameAnnotationsConfig(t *testing.T) { cfg := externaldns.NewConfig() cfg.IgnoreHostnameAnnotation = true diff --git a/provider/aws/session.go b/provider/aws/config.go similarity index 55% rename from provider/aws/session.go rename to provider/aws/config.go index da578b292..bbfca9e97 100644 --- a/provider/aws/session.go +++ b/provider/aws/config.go @@ -17,13 +17,16 @@ limitations under the License. package aws import ( + "context" "fmt" + "net/http" "strings" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials/stscreds" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/aws/session" + awsv2 "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/retry" + "github.com/aws/aws-sdk-go-v2/config" + stscredsv2 "github.com/aws/aws-sdk-go-v2/credentials/stscreds" + "github.com/aws/aws-sdk-go-v2/service/sts" "github.com/linki/instrumented_http" "github.com/sirupsen/logrus" @@ -38,8 +41,8 @@ type AWSSessionConfig struct { Profile string } -func CreateDefaultSession(cfg *externaldns.Config) *session.Session { - result, err := newSession( +func CreateDefaultV2Config(cfg *externaldns.Config) awsv2.Config { + result, err := newV2Config( AWSSessionConfig{ AssumeRole: cfg.AWSAssumeRole, AssumeRoleExternalID: cfg.AWSAssumeRoleExternalID, @@ -52,24 +55,14 @@ func CreateDefaultSession(cfg *externaldns.Config) *session.Session { return result } -func CreateSessions(cfg *externaldns.Config) map[string]*session.Session { - result := make(map[string]*session.Session) - +func CreateV2Configs(cfg *externaldns.Config) map[string]awsv2.Config { + result := make(map[string]awsv2.Config) if len(cfg.AWSProfiles) == 0 || (len(cfg.AWSProfiles) == 1 && cfg.AWSProfiles[0] == "") { - session, err := newSession( - AWSSessionConfig{ - AssumeRole: cfg.AWSAssumeRole, - AssumeRoleExternalID: cfg.AWSAssumeRoleExternalID, - APIRetries: cfg.AWSAPIRetries, - }, - ) - if err != nil { - logrus.Fatal(err) - } - result[defaultAWSProfile] = session + cfg := CreateDefaultV2Config(cfg) + result[defaultAWSProfile] = cfg } else { for _, profile := range cfg.AWSProfiles { - session, err := newSession( + cfg, err := newV2Config( AWSSessionConfig{ AssumeRole: cfg.AWSAssumeRole, AssumeRoleExternalID: cfg.AWSAssumeRoleExternalID, @@ -80,46 +73,47 @@ func CreateSessions(cfg *externaldns.Config) map[string]*session.Session { if err != nil { logrus.Fatal(err) } - result[profile] = session + result[profile] = cfg } } return result } -func newSession(awsConfig AWSSessionConfig) (*session.Session, error) { - config := aws.NewConfig().WithMaxRetries(awsConfig.APIRetries) - - config.WithHTTPClient( - instrumented_http.NewClient(config.HTTPClient, &instrumented_http.Callbacks{ +func newV2Config(awsConfig AWSSessionConfig) (awsv2.Config, error) { + defaultOpts := []func(*config.LoadOptions) error{ + config.WithRetryer(func() awsv2.Retryer { + return retry.AddWithMaxAttempts(retry.NewStandard(), awsConfig.APIRetries) + }), + config.WithHTTPClient(instrumented_http.NewClient(&http.Client{}, &instrumented_http.Callbacks{ PathProcessor: func(path string) string { parts := strings.Split(path, "/") return parts[len(parts)-1] }, - }), - ) + })), + config.WithSharedConfigProfile(awsConfig.Profile), + } - session, err := session.NewSessionWithOptions(session.Options{ - Config: *config, - SharedConfigState: session.SharedConfigEnable, - Profile: awsConfig.Profile, - }) + cfg, err := config.LoadDefaultConfig(context.Background(), defaultOpts...) if err != nil { - return nil, fmt.Errorf("instantiating AWS session: %w", err) + return awsv2.Config{}, fmt.Errorf("instantiating AWS config: %w", err) } if awsConfig.AssumeRole != "" { + stsSvc := sts.NewFromConfig(cfg) + var assumeRoleOpts []func(*stscredsv2.AssumeRoleOptions) if awsConfig.AssumeRoleExternalID != "" { logrus.Infof("Assuming role: %s with external id %s", awsConfig.AssumeRole, awsConfig.AssumeRoleExternalID) - session.Config.WithCredentials(stscreds.NewCredentials(session, awsConfig.AssumeRole, func(p *stscreds.AssumeRoleProvider) { - p.ExternalID = &awsConfig.AssumeRoleExternalID - })) + assumeRoleOpts = []func(*stscredsv2.AssumeRoleOptions){ + func(opts *stscredsv2.AssumeRoleOptions) { + opts.ExternalID = &awsConfig.AssumeRoleExternalID + }, + } } else { logrus.Infof("Assuming role: %s", awsConfig.AssumeRole) - session.Config.WithCredentials(stscreds.NewCredentials(session, awsConfig.AssumeRole)) } + creds := stscredsv2.NewAssumeRoleProvider(stsSvc, awsConfig.AssumeRole, assumeRoleOpts...) + cfg.Credentials = awsv2.NewCredentialsCache(creds) } - session.Handlers.Build.PushBack(request.MakeAddToUserAgentHandler("ExternalDNS", externaldns.Version)) - - return session, nil + return cfg, nil } diff --git a/provider/aws/session_test.go b/provider/aws/config_test.go similarity index 87% rename from provider/aws/session_test.go rename to provider/aws/config_test.go index 206fcf940..00b3b46aa 100644 --- a/provider/aws/session_test.go +++ b/provider/aws/config_test.go @@ -17,6 +17,7 @@ limitations under the License. package aws import ( + "context" "os" "testing" @@ -24,7 +25,7 @@ import ( "github.com/stretchr/testify/require" ) -func Test_newSession(t *testing.T) { +func Test_newV2Config(t *testing.T) { t.Run("should use profile from credentials file", func(t *testing.T) { // setup credsFile, err := prepareCredentialsFile(t) @@ -34,9 +35,9 @@ func Test_newSession(t *testing.T) { defer os.Unsetenv("AWS_SHARED_CREDENTIALS_FILE") // when - s, err := newSession(AWSSessionConfig{Profile: "profile2"}) + cfg, err := newV2Config(AWSSessionConfig{Profile: "profile2"}) require.NoError(t, err) - creds, err := s.Config.Credentials.Get() + creds, err := cfg.Credentials.Retrieve(context.Background()) // then assert.NoError(t, err) @@ -52,9 +53,9 @@ func Test_newSession(t *testing.T) { defer os.Unsetenv("AWS_SECRET_ACCESS_KEY") // when - s, err := newSession(AWSSessionConfig{}) + cfg, err := newV2Config(AWSSessionConfig{}) require.NoError(t, err) - creds, err := s.Config.Credentials.Get() + creds, err := cfg.Credentials.Retrieve(context.Background()) // then assert.NoError(t, err) diff --git a/provider/awssd/aws_sd.go b/provider/awssd/aws_sd.go index 8c41e5f86..14a977873 100644 --- a/provider/awssd/aws_sd.go +++ b/provider/awssd/aws_sd.go @@ -24,9 +24,9 @@ import ( "regexp" "strings" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/request" - sd "github.com/aws/aws-sdk-go/service/servicediscovery" + "github.com/aws/aws-sdk-go-v2/aws" + sd "github.com/aws/aws-sdk-go-v2/service/servicediscovery" + sdtypes "github.com/aws/aws-sdk-go-v2/service/servicediscovery/types" log "github.com/sirupsen/logrus" "sigs.k8s.io/external-dns/endpoint" @@ -54,16 +54,16 @@ var ( ) // AWSSDClient is the subset of the AWS Cloud Map API that we actually use. Add methods as required. -// Signatures must match exactly. Taken from https://github.com/aws/aws-sdk-go/blob/HEAD/service/servicediscovery/api.go +// Signatures must match exactly. Taken from https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/servicediscovery type AWSSDClient interface { - CreateService(input *sd.CreateServiceInput) (*sd.CreateServiceOutput, error) - DeregisterInstance(input *sd.DeregisterInstanceInput) (*sd.DeregisterInstanceOutput, error) - DiscoverInstancesWithContext(ctx aws.Context, input *sd.DiscoverInstancesInput, opts ...request.Option) (*sd.DiscoverInstancesOutput, error) - ListNamespacesPages(input *sd.ListNamespacesInput, fn func(*sd.ListNamespacesOutput, bool) bool) error - ListServicesPages(input *sd.ListServicesInput, fn func(*sd.ListServicesOutput, bool) bool) error - RegisterInstance(input *sd.RegisterInstanceInput) (*sd.RegisterInstanceOutput, error) - UpdateService(input *sd.UpdateServiceInput) (*sd.UpdateServiceOutput, error) - DeleteService(input *sd.DeleteServiceInput) (*sd.DeleteServiceOutput, error) + CreateService(ctx context.Context, params *sd.CreateServiceInput, optFns ...func(*sd.Options)) (*sd.CreateServiceOutput, error) + DeregisterInstance(ctx context.Context, params *sd.DeregisterInstanceInput, optFns ...func(*sd.Options)) (*sd.DeregisterInstanceOutput, error) + DiscoverInstances(ctx context.Context, params *sd.DiscoverInstancesInput, optFns ...func(*sd.Options)) (*sd.DiscoverInstancesOutput, error) + ListNamespaces(ctx context.Context, params *sd.ListNamespacesInput, optFns ...func(*sd.Options)) (*sd.ListNamespacesOutput, error) + ListServices(ctx context.Context, params *sd.ListServicesInput, optFns ...func(*sd.Options)) (*sd.ListServicesOutput, error) + RegisterInstance(ctx context.Context, params *sd.RegisterInstanceInput, optFns ...func(*sd.Options)) (*sd.RegisterInstanceOutput, error) + UpdateService(ctx context.Context, params *sd.UpdateServiceInput, optFns ...func(*sd.Options)) (*sd.UpdateServiceOutput, error) + DeleteService(ctx context.Context, params *sd.DeleteServiceInput, optFns ...func(*sd.Options)) (*sd.DeleteServiceOutput, error) } // AWSSDProvider is an implementation of Provider for AWS Cloud Map. @@ -74,7 +74,7 @@ type AWSSDProvider struct { // only consider namespaces ending in this suffix namespaceFilter endpoint.DomainFilter // filter namespace by type (private or public) - namespaceTypeFilter *sd.NamespaceFilter + namespaceTypeFilter sdtypes.NamespaceFilter // enables service without instances cleanup cleanEmptyService bool // filter services for removal @@ -83,7 +83,7 @@ type AWSSDProvider struct { // NewAWSSDProvider initializes a new AWS Cloud Map based Provider. func NewAWSSDProvider(domainFilter endpoint.DomainFilter, namespaceType string, dryRun, cleanEmptyService bool, ownerID string, client AWSSDClient) (*AWSSDProvider, error) { - provider := &AWSSDProvider{ + p := &AWSSDProvider{ client: client, dryRun: dryRun, namespaceFilter: domainFilter, @@ -92,42 +92,42 @@ func NewAWSSDProvider(domainFilter endpoint.DomainFilter, namespaceType string, ownerID: ownerID, } - return provider, nil + return p, nil } // newSdNamespaceFilter initialized AWS SD Namespace Filter based on given string config -func newSdNamespaceFilter(namespaceTypeConfig string) *sd.NamespaceFilter { +func newSdNamespaceFilter(namespaceTypeConfig string) sdtypes.NamespaceFilter { switch namespaceTypeConfig { case sdNamespaceTypePublic: - return &sd.NamespaceFilter{ - Name: aws.String(sd.NamespaceFilterNameType), - Values: []*string{aws.String(sd.NamespaceTypeDnsPublic)}, + return sdtypes.NamespaceFilter{ + Name: sdtypes.NamespaceFilterNameType, + Values: []string{string(sdtypes.NamespaceTypeDnsPublic)}, } case sdNamespaceTypePrivate: - return &sd.NamespaceFilter{ - Name: aws.String(sd.NamespaceFilterNameType), - Values: []*string{aws.String(sd.NamespaceTypeDnsPrivate)}, + return sdtypes.NamespaceFilter{ + Name: sdtypes.NamespaceFilterNameType, + Values: []string{string(sdtypes.NamespaceTypeDnsPrivate)}, } default: - return nil + return sdtypes.NamespaceFilter{} } } // Records returns list of all endpoints. func (p *AWSSDProvider) Records(ctx context.Context) (endpoints []*endpoint.Endpoint, err error) { - namespaces, err := p.ListNamespaces() + namespaces, err := p.ListNamespaces(ctx) if err != nil { return nil, err } for _, ns := range namespaces { - services, err := p.ListServicesByNamespaceID(ns.Id) + services, err := p.ListServicesByNamespaceID(ctx, ns.Id) if err != nil { return nil, err } for _, srv := range services { - resp, err := p.client.DiscoverInstancesWithContext(ctx, &sd.DiscoverInstancesInput{ + resp, err := p.client.DiscoverInstances(ctx, &sd.DiscoverInstancesInput{ NamespaceName: ns.Name, ServiceName: srv.Name, }) @@ -136,8 +136,8 @@ func (p *AWSSDProvider) Records(ctx context.Context) (endpoints []*endpoint.Endp } if len(resp.Instances) == 0 { - if err := p.DeleteService(srv); err != nil { - log.Errorf("Failed to delete service %q, error: %s", aws.StringValue(srv.Name), err) + if err := p.DeleteService(ctx, srv); err != nil { + log.Errorf("Failed to delete service %q, error: %s", *srv.Name, err) } continue } @@ -149,35 +149,35 @@ func (p *AWSSDProvider) Records(ctx context.Context) (endpoints []*endpoint.Endp return endpoints, nil } -func (p *AWSSDProvider) instancesToEndpoint(ns *sd.NamespaceSummary, srv *sd.Service, instances []*sd.HttpInstanceSummary) *endpoint.Endpoint { +func (p *AWSSDProvider) instancesToEndpoint(ns *sdtypes.NamespaceSummary, srv *sdtypes.Service, instances []sdtypes.HttpInstanceSummary) *endpoint.Endpoint { // DNS name of the record is a concatenation of service and namespace recordName := *srv.Name + "." + *ns.Name labels := endpoint.NewLabels() - labels[endpoint.AWSSDDescriptionLabel] = aws.StringValue(srv.Description) + labels[endpoint.AWSSDDescriptionLabel] = *srv.Description newEndpoint := &endpoint.Endpoint{ DNSName: recordName, - RecordTTL: endpoint.TTL(aws.Int64Value(srv.DnsConfig.DnsRecords[0].TTL)), + RecordTTL: endpoint.TTL(*srv.DnsConfig.DnsRecords[0].TTL), Targets: make(endpoint.Targets, 0, len(instances)), Labels: labels, } for _, inst := range instances { // CNAME - if inst.Attributes[sdInstanceAttrCname] != nil && aws.StringValue(srv.DnsConfig.DnsRecords[0].Type) == sd.RecordTypeCname { + if inst.Attributes[sdInstanceAttrCname] != "" && srv.DnsConfig.DnsRecords[0].Type == sdtypes.RecordTypeCname { newEndpoint.RecordType = endpoint.RecordTypeCNAME - newEndpoint.Targets = append(newEndpoint.Targets, aws.StringValue(inst.Attributes[sdInstanceAttrCname])) + newEndpoint.Targets = append(newEndpoint.Targets, inst.Attributes[sdInstanceAttrCname]) // ALIAS - } else if inst.Attributes[sdInstanceAttrAlias] != nil { + } else if inst.Attributes[sdInstanceAttrAlias] != "" { newEndpoint.RecordType = endpoint.RecordTypeCNAME - newEndpoint.Targets = append(newEndpoint.Targets, aws.StringValue(inst.Attributes[sdInstanceAttrAlias])) + newEndpoint.Targets = append(newEndpoint.Targets, inst.Attributes[sdInstanceAttrAlias]) // IP-based target - } else if inst.Attributes[sdInstanceAttrIPV4] != nil { + } else if inst.Attributes[sdInstanceAttrIPV4] != "" { newEndpoint.RecordType = endpoint.RecordTypeA - newEndpoint.Targets = append(newEndpoint.Targets, aws.StringValue(inst.Attributes[sdInstanceAttrIPV4])) + newEndpoint.Targets = append(newEndpoint.Targets, inst.Attributes[sdInstanceAttrIPV4]) } else { log.Warnf("Invalid instance \"%v\" found in service \"%v\"", inst, srv.Name) } @@ -199,7 +199,7 @@ func (p *AWSSDProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) changes.Delete = append(changes.Delete, deletes...) changes.Create = append(changes.Create, creates...) - namespaces, err := p.ListNamespaces() + namespaces, err := p.ListNamespaces(ctx) if err != nil { return err } @@ -211,12 +211,12 @@ func (p *AWSSDProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) // creates = [1.2.3.4, 1.2.3.5] // ``` // then when deletes are executed after creates it will miss the `1.2.3.4` instance. - err = p.submitDeletes(namespaces, changes.Delete) + err = p.submitDeletes(ctx, namespaces, changes.Delete) if err != nil { return err } - err = p.submitCreates(namespaces, changes.Create) + err = p.submitCreates(ctx, namespaces, changes.Create) if err != nil { return err } @@ -245,11 +245,11 @@ func (p *AWSSDProvider) updatesToCreates(changes *plan.Changes) (creates []*endp return creates, deletes } -func (p *AWSSDProvider) submitCreates(namespaces []*sd.NamespaceSummary, changes []*endpoint.Endpoint) error { +func (p *AWSSDProvider) submitCreates(ctx context.Context, namespaces []*sdtypes.NamespaceSummary, changes []*endpoint.Endpoint) error { changesByNamespaceID := p.changesByNamespaceID(namespaces, changes) for nsID, changeList := range changesByNamespaceID { - services, err := p.ListServicesByNamespaceID(aws.String(nsID)) + services, err := p.ListServicesByNamespaceID(ctx, aws.String(nsID)) if err != nil { return err } @@ -260,7 +260,7 @@ func (p *AWSSDProvider) submitCreates(namespaces []*sd.NamespaceSummary, changes srv := services[srvName] if srv == nil { // when service is missing create a new one - srv, err = p.CreateService(&nsID, &srvName, ch) + srv, err = p.CreateService(ctx, &nsID, &srvName, ch) if err != nil { return err } @@ -268,13 +268,13 @@ func (p *AWSSDProvider) submitCreates(namespaces []*sd.NamespaceSummary, changes services[*srv.Name] = srv } else if ch.RecordTTL.IsConfigured() && *srv.DnsConfig.DnsRecords[0].TTL != int64(ch.RecordTTL) { // update service when TTL differ - err = p.UpdateService(srv, ch) + err = p.UpdateService(ctx, srv, ch) if err != nil { return err } } - err = p.RegisterInstance(srv, ch) + err = p.RegisterInstance(ctx, srv, ch) if err != nil { return err } @@ -284,11 +284,11 @@ func (p *AWSSDProvider) submitCreates(namespaces []*sd.NamespaceSummary, changes return nil } -func (p *AWSSDProvider) submitDeletes(namespaces []*sd.NamespaceSummary, changes []*endpoint.Endpoint) error { +func (p *AWSSDProvider) submitDeletes(ctx context.Context, namespaces []*sdtypes.NamespaceSummary, changes []*endpoint.Endpoint) error { changesByNamespaceID := p.changesByNamespaceID(namespaces, changes) for nsID, changeList := range changesByNamespaceID { - services, err := p.ListServicesByNamespaceID(aws.String(nsID)) + services, err := p.ListServicesByNamespaceID(ctx, aws.String(nsID)) if err != nil { return err } @@ -302,7 +302,7 @@ func (p *AWSSDProvider) submitDeletes(namespaces []*sd.NamespaceSummary, changes return fmt.Errorf("service \"%s\" is missing when trying to delete \"%v\"", srvName, hostname) } - err := p.DeregisterInstance(srv, ch) + err := p.DeregisterInstance(ctx, srv, ch) if err != nil { return err } @@ -313,53 +313,51 @@ func (p *AWSSDProvider) submitDeletes(namespaces []*sd.NamespaceSummary, changes } // ListNamespaces returns all namespaces matching defined namespace filter -func (p *AWSSDProvider) ListNamespaces() ([]*sd.NamespaceSummary, error) { - namespaces := make([]*sd.NamespaceSummary, 0) +func (p *AWSSDProvider) ListNamespaces(ctx context.Context) ([]*sdtypes.NamespaceSummary, error) { + namespaces := make([]*sdtypes.NamespaceSummary, 0) - f := func(resp *sd.ListNamespacesOutput, lastPage bool) bool { - for _, ns := range resp.Namespaces { - if !p.namespaceFilter.Match(aws.StringValue(ns.Name)) { - continue - } - namespaces = append(namespaces, ns) + paginator := sd.NewListNamespacesPaginator(p.client, &sd.ListNamespacesInput{ + Filters: []sdtypes.NamespaceFilter{p.namespaceTypeFilter}, + }) + for paginator.HasMorePages() { + resp, err := paginator.NextPage(ctx) + if err != nil { + return nil, err } - return true - } - - err := p.client.ListNamespacesPages(&sd.ListNamespacesInput{ - Filters: []*sd.NamespaceFilter{p.namespaceTypeFilter}, - }, f) - if err != nil { - return nil, err + for _, ns := range resp.Namespaces { + if !p.namespaceFilter.Match(*ns.Name) { + continue + } + namespaces = append(namespaces, &ns) + } } return namespaces, nil } -// ListServicesByNamespaceID returns list of services in given namespace. Returns map[srv_name]*sd.Service -func (p *AWSSDProvider) ListServicesByNamespaceID(namespaceID *string) (map[string]*sd.Service, error) { - services := make([]*sd.ServiceSummary, 0) +// ListServicesByNamespaceID returns list of services in given namespace. +func (p *AWSSDProvider) ListServicesByNamespaceID(ctx context.Context, namespaceID *string) (map[string]*sdtypes.Service, error) { + services := make([]sdtypes.ServiceSummary, 0) - f := func(resp *sd.ListServicesOutput, lastPage bool) bool { - services = append(services, resp.Services...) - return true - } - - err := p.client.ListServicesPages(&sd.ListServicesInput{ - Filters: []*sd.ServiceFilter{{ - Name: aws.String(sd.ServiceFilterNameNamespaceId), - Values: []*string{namespaceID}, + paginator := sd.NewListServicesPaginator(p.client, &sd.ListServicesInput{ + Filters: []sdtypes.ServiceFilter{{ + Name: sdtypes.ServiceFilterNameNamespaceId, + Values: []string{*namespaceID}, }}, - MaxResults: aws.Int64(100), - }, f) - if err != nil { - return nil, err + MaxResults: aws.Int32(100), + }) + for paginator.HasMorePages() { + resp, err := paginator.NextPage(ctx) + if err != nil { + return nil, err + } + services = append(services, resp.Services...) } - servicesMap := make(map[string]*sd.Service) + servicesMap := make(map[string]*sdtypes.Service) for _, serviceSummary := range services { - service := &sd.Service{ + service := &sdtypes.Service{ Arn: serviceSummary.Arn, CreateDate: serviceSummary.CreateDate, Description: serviceSummary.Description, @@ -373,13 +371,13 @@ func (p *AWSSDProvider) ListServicesByNamespaceID(namespaceID *string) (map[stri Type: serviceSummary.Type, } - servicesMap[aws.StringValue(service.Name)] = service + servicesMap[*service.Name] = service } return servicesMap, nil } // CreateService creates a new service in AWS API. Returns the created service. -func (p *AWSSDProvider) CreateService(namespaceID *string, srvName *string, ep *endpoint.Endpoint) (*sd.Service, error) { +func (p *AWSSDProvider) CreateService(ctx context.Context, namespaceID *string, srvName *string, ep *endpoint.Endpoint) (*sdtypes.Service, error) { log.Infof("Creating a new service \"%s\" in \"%s\" namespace", *srvName, *namespaceID) srvType := p.serviceTypeFromEndpoint(ep) @@ -391,13 +389,13 @@ func (p *AWSSDProvider) CreateService(namespaceID *string, srvName *string, ep * } if !p.dryRun { - out, err := p.client.CreateService(&sd.CreateServiceInput{ + out, err := p.client.CreateService(ctx, &sd.CreateServiceInput{ Name: srvName, Description: aws.String(ep.Labels[endpoint.AWSSDDescriptionLabel]), - DnsConfig: &sd.DnsConfig{ - RoutingPolicy: aws.String(routingPolicy), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(srvType), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: routingPolicy, + DnsRecords: []sdtypes.DnsRecord{{ + Type: srvType, TTL: aws.Int64(ttl), }}, }, @@ -411,11 +409,11 @@ func (p *AWSSDProvider) CreateService(namespaceID *string, srvName *string, ep * } // return mock service summary in case of dry run - return &sd.Service{Id: aws.String("dry-run-service"), Name: aws.String("dry-run-service")}, nil + return &sdtypes.Service{Id: aws.String("dry-run-service"), Name: aws.String("dry-run-service")}, nil } // UpdateService updates the specified service with information from provided endpoint. -func (p *AWSSDProvider) UpdateService(service *sd.Service, ep *endpoint.Endpoint) error { +func (p *AWSSDProvider) UpdateService(ctx context.Context, service *sdtypes.Service, ep *endpoint.Endpoint) error { log.Infof("Updating service \"%s\"", *service.Name) srvType := p.serviceTypeFromEndpoint(ep) @@ -426,13 +424,13 @@ func (p *AWSSDProvider) UpdateService(service *sd.Service, ep *endpoint.Endpoint } if !p.dryRun { - _, err := p.client.UpdateService(&sd.UpdateServiceInput{ + _, err := p.client.UpdateService(ctx, &sd.UpdateServiceInput{ Id: service.Id, - Service: &sd.ServiceChange{ + Service: &sdtypes.ServiceChange{ Description: aws.String(ep.Labels[endpoint.AWSSDDescriptionLabel]), - DnsConfig: &sd.DnsConfigChange{ - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(srvType), + DnsConfig: &sdtypes.DnsConfigChange{ + DnsRecords: []sdtypes.DnsRecord{{ + Type: srvType, TTL: aws.Int64(ttl), }}, }, @@ -447,7 +445,7 @@ func (p *AWSSDProvider) UpdateService(service *sd.Service, ep *endpoint.Endpoint } // DeleteService deletes empty Service from AWS API if its owner id match -func (p *AWSSDProvider) DeleteService(service *sd.Service) error { +func (p *AWSSDProvider) DeleteService(ctx context.Context, service *sdtypes.Service) error { log.Debugf("Check if service \"%s\" owner id match and it can be deleted", *service.Name) if !p.dryRun && p.cleanEmptyService { // convert ownerID string to service description format @@ -455,39 +453,39 @@ func (p *AWSSDProvider) DeleteService(service *sd.Service) error { label[endpoint.OwnerLabelKey] = p.ownerID label[endpoint.AWSSDDescriptionLabel] = label.SerializePlain(false) - if strings.HasPrefix(aws.StringValue(service.Description), label[endpoint.AWSSDDescriptionLabel]) { + if strings.HasPrefix(*service.Description, label[endpoint.AWSSDDescriptionLabel]) { log.Infof("Deleting service \"%s\"", *service.Name) - _, err := p.client.DeleteService(&sd.DeleteServiceInput{ + _, err := p.client.DeleteService(ctx, &sd.DeleteServiceInput{ Id: aws.String(*service.Id), }) return err } - log.Debugf("Skipping service removal %s because owner id does not match, found: \"%s\", required: \"%s\"", aws.StringValue(service.Name), aws.StringValue(service.Description), label[endpoint.AWSSDDescriptionLabel]) + log.Debugf("Skipping service removal %s because owner id does not match, found: \"%s\", required: \"%s\"", *service.Name, *service.Description, label[endpoint.AWSSDDescriptionLabel]) } return nil } // RegisterInstance creates a new instance in given service. -func (p *AWSSDProvider) RegisterInstance(service *sd.Service, ep *endpoint.Endpoint) error { +func (p *AWSSDProvider) RegisterInstance(ctx context.Context, service *sdtypes.Service, ep *endpoint.Endpoint) error { for _, target := range ep.Targets { log.Infof("Registering a new instance \"%s\" for service \"%s\" (%s)", target, *service.Name, *service.Id) - attr := make(map[string]*string) + attr := make(map[string]string) if ep.RecordType == endpoint.RecordTypeCNAME { if p.isAWSLoadBalancer(target) { - attr[sdInstanceAttrAlias] = aws.String(target) + attr[sdInstanceAttrAlias] = target } else { - attr[sdInstanceAttrCname] = aws.String(target) + attr[sdInstanceAttrCname] = target } } else if ep.RecordType == endpoint.RecordTypeA { - attr[sdInstanceAttrIPV4] = aws.String(target) + attr[sdInstanceAttrIPV4] = target } else { return fmt.Errorf("invalid endpoint type (%v)", ep) } if !p.dryRun { - _, err := p.client.RegisterInstance(&sd.RegisterInstanceInput{ + _, err := p.client.RegisterInstance(ctx, &sd.RegisterInstanceInput{ ServiceId: service.Id, Attributes: attr, InstanceId: aws.String(p.targetToInstanceID(target)), @@ -502,12 +500,12 @@ func (p *AWSSDProvider) RegisterInstance(service *sd.Service, ep *endpoint.Endpo } // DeregisterInstance removes an instance from given service. -func (p *AWSSDProvider) DeregisterInstance(service *sd.Service, ep *endpoint.Endpoint) error { +func (p *AWSSDProvider) DeregisterInstance(ctx context.Context, service *sdtypes.Service, ep *endpoint.Endpoint) error { for _, target := range ep.Targets { log.Infof("De-registering an instance \"%s\" for service \"%s\" (%s)", target, *service.Name, *service.Id) if !p.dryRun { - _, err := p.client.DeregisterInstance(&sd.DeregisterInstanceInput{ + _, err := p.client.DeregisterInstance(ctx, &sd.DeregisterInstanceInput{ InstanceId: aws.String(p.targetToInstanceID(target)), ServiceId: service.Id, }) @@ -531,43 +529,7 @@ func (p *AWSSDProvider) targetToInstanceID(target string) string { return strings.ToLower(target) } -// nolint: deadcode -// used from unit test -func namespaceToNamespaceSummary(namespace *sd.Namespace) *sd.NamespaceSummary { - if namespace == nil { - return nil - } - - return &sd.NamespaceSummary{ - Id: namespace.Id, - Type: namespace.Type, - Name: namespace.Name, - Arn: namespace.Arn, - } -} - -// nolint: deadcode -// used from unit test -func serviceToServiceSummary(service *sd.Service) *sd.ServiceSummary { - if service == nil { - return nil - } - - return &sd.ServiceSummary{ - Arn: service.Arn, - CreateDate: service.CreateDate, - Description: service.Description, - DnsConfig: service.DnsConfig, - HealthCheckConfig: service.HealthCheckConfig, - HealthCheckCustomConfig: service.HealthCheckCustomConfig, - Id: service.Id, - InstanceCount: service.InstanceCount, - Name: service.Name, - Type: service.Type, - } -} - -func (p *AWSSDProvider) changesByNamespaceID(namespaces []*sd.NamespaceSummary, changes []*endpoint.Endpoint) map[string][]*endpoint.Endpoint { +func (p *AWSSDProvider) changesByNamespaceID(namespaces []*sdtypes.NamespaceSummary, changes []*endpoint.Endpoint) map[string][]*endpoint.Endpoint { changesByNsID := make(map[string][]*endpoint.Endpoint) for _, ns := range namespaces { @@ -600,8 +562,8 @@ func (p *AWSSDProvider) changesByNamespaceID(namespaces []*sd.NamespaceSummary, } // returns list of all namespaces matching given hostname -func matchingNamespaces(hostname string, namespaces []*sd.NamespaceSummary) []*sd.NamespaceSummary { - matchingNamespaces := make([]*sd.NamespaceSummary, 0) +func matchingNamespaces(hostname string, namespaces []*sdtypes.NamespaceSummary) []*sdtypes.NamespaceSummary { + matchingNamespaces := make([]*sdtypes.NamespaceSummary, 0) for _, ns := range namespaces { if *ns.Name == hostname { @@ -621,26 +583,26 @@ func (p *AWSSDProvider) parseHostname(hostname string) (namespace string, servic } // determine service routing policy based on endpoint type -func (p *AWSSDProvider) routingPolicyFromEndpoint(ep *endpoint.Endpoint) string { +func (p *AWSSDProvider) routingPolicyFromEndpoint(ep *endpoint.Endpoint) sdtypes.RoutingPolicy { if ep.RecordType == endpoint.RecordTypeA { - return sd.RoutingPolicyMultivalue + return sdtypes.RoutingPolicyMultivalue } - return sd.RoutingPolicyWeighted + return sdtypes.RoutingPolicyWeighted } // determine service type (A, CNAME) from given endpoint -func (p *AWSSDProvider) serviceTypeFromEndpoint(ep *endpoint.Endpoint) string { +func (p *AWSSDProvider) serviceTypeFromEndpoint(ep *endpoint.Endpoint) sdtypes.RecordType { if ep.RecordType == endpoint.RecordTypeCNAME { // FIXME service type is derived from the first target only. Theoretically this may be problem. // But I don't see a scenario where one endpoint contains targets of different types. if p.isAWSLoadBalancer(ep.Targets[0]) { - // ALIAS target uses DNS record type of A - return sd.RecordTypeA + // ALIAS target uses DNS record of type A + return sdtypes.RecordTypeA } - return sd.RecordTypeCname + return sdtypes.RecordTypeCname } - return sd.RecordTypeA + return sdtypes.RecordTypeA } // determine if a given hostname belongs to an AWS load balancer diff --git a/provider/awssd/aws_sd_test.go b/provider/awssd/aws_sd_test.go index 03198d49c..2cc543143 100644 --- a/provider/awssd/aws_sd_test.go +++ b/provider/awssd/aws_sd_test.go @@ -25,9 +25,9 @@ import ( "testing" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/request" - sd "github.com/aws/aws-sdk-go/service/servicediscovery" + "github.com/aws/aws-sdk-go-v2/aws" + sd "github.com/aws/aws-sdk-go-v2/service/servicediscovery" + sdtypes "github.com/aws/aws-sdk-go-v2/service/servicediscovery/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -45,17 +45,17 @@ var ( type AWSSDClientStub struct { // map[namespace_id]namespace - namespaces map[string]*sd.Namespace + namespaces map[string]*sdtypes.Namespace // map[namespace_id] => map[service_id]instance - services map[string]map[string]*sd.Service + services map[string]map[string]*sdtypes.Service // map[service_id] => map[inst_id]instance - instances map[string]map[string]*sd.Instance + instances map[string]map[string]*sdtypes.Instance } -func (s *AWSSDClientStub) CreateService(input *sd.CreateServiceInput) (*sd.CreateServiceOutput, error) { - srv := &sd.Service{ +func (s *AWSSDClientStub) CreateService(ctx context.Context, input *sd.CreateServiceInput, optFns ...func(*sd.Options)) (*sd.CreateServiceOutput, error) { + srv := &sdtypes.Service{ Id: aws.String(strconv.Itoa(rand.Intn(10000))), DnsConfig: input.DnsConfig, Name: input.Name, @@ -66,7 +66,7 @@ func (s *AWSSDClientStub) CreateService(input *sd.CreateServiceInput) (*sd.Creat nsServices, ok := s.services[*input.NamespaceId] if !ok { - nsServices = make(map[string]*sd.Service) + nsServices = make(map[string]*sdtypes.Service) s.services[*input.NamespaceId] = nsServices } nsServices[*srv.Id] = srv @@ -76,14 +76,14 @@ func (s *AWSSDClientStub) CreateService(input *sd.CreateServiceInput) (*sd.Creat }, nil } -func (s *AWSSDClientStub) DeregisterInstance(input *sd.DeregisterInstanceInput) (*sd.DeregisterInstanceOutput, error) { +func (s *AWSSDClientStub) DeregisterInstance(ctx context.Context, input *sd.DeregisterInstanceInput, optFns ...func(options *sd.Options)) (*sd.DeregisterInstanceOutput, error) { serviceInstances := s.instances[*input.ServiceId] delete(serviceInstances, *input.InstanceId) return &sd.DeregisterInstanceOutput{}, nil } -func (s *AWSSDClientStub) GetService(input *sd.GetServiceInput) (*sd.GetServiceOutput, error) { +func (s *AWSSDClientStub) GetService(ctx context.Context, input *sd.GetServiceInput, optFns ...func(options *sd.Options)) (*sd.GetServiceOutput, error) { for _, entry := range s.services { srv, ok := entry[*input.Id] if ok { @@ -96,18 +96,18 @@ func (s *AWSSDClientStub) GetService(input *sd.GetServiceInput) (*sd.GetServiceO return nil, errors.New("service not found") } -func (s *AWSSDClientStub) DiscoverInstancesWithContext(ctx context.Context, input *sd.DiscoverInstancesInput, opts ...request.Option) (*sd.DiscoverInstancesOutput, error) { - instances := make([]*sd.HttpInstanceSummary, 0) +func (s *AWSSDClientStub) DiscoverInstances(ctx context.Context, input *sd.DiscoverInstancesInput, opts ...func(options *sd.Options)) (*sd.DiscoverInstancesOutput, error) { + instances := make([]sdtypes.HttpInstanceSummary, 0) var foundNs bool for _, ns := range s.namespaces { - if aws.StringValue(ns.Name) == aws.StringValue(input.NamespaceName) { + if *ns.Name == *input.NamespaceName { foundNs = true for _, srv := range s.services[*ns.Id] { - if aws.StringValue(srv.Name) == aws.StringValue(input.ServiceName) { + if *srv.Name == *input.ServiceName { for _, inst := range s.instances[*srv.Id] { - instances = append(instances, instanceToHTTPInstanceSummary(inst)) + instances = append(instances, *instanceToHTTPInstanceSummary(inst)) } } } @@ -123,57 +123,50 @@ func (s *AWSSDClientStub) DiscoverInstancesWithContext(ctx context.Context, inpu }, nil } -func (s *AWSSDClientStub) ListNamespacesPages(input *sd.ListNamespacesInput, fn func(*sd.ListNamespacesOutput, bool) bool) error { - namespaces := make([]*sd.NamespaceSummary, 0) - - filter := input.Filters[0] +func (s *AWSSDClientStub) ListNamespaces(ctx context.Context, input *sd.ListNamespacesInput, optFns ...func(options *sd.Options)) (*sd.ListNamespacesOutput, error) { + namespaces := make([]sdtypes.NamespaceSummary, 0) for _, ns := range s.namespaces { - if filter != nil && *filter.Name == sd.NamespaceFilterNameType { - if *ns.Type != *filter.Values[0] { + if len(input.Filters) > 0 && input.Filters[0].Name == sdtypes.NamespaceFilterNameType { + if ns.Type != sdtypes.NamespaceType(input.Filters[0].Values[0]) { // skip namespaces not matching filter continue } } - namespaces = append(namespaces, namespaceToNamespaceSummary(ns)) + namespaces = append(namespaces, *namespaceToNamespaceSummary(ns)) } - fn(&sd.ListNamespacesOutput{ + return &sd.ListNamespacesOutput{ Namespaces: namespaces, - }, true) - - return nil + }, nil } -func (s *AWSSDClientStub) ListServicesPages(input *sd.ListServicesInput, fn func(*sd.ListServicesOutput, bool) bool) error { - services := make([]*sd.ServiceSummary, 0) +func (s *AWSSDClientStub) ListServices(ctx context.Context, input *sd.ListServicesInput, optFns ...func(options *sd.Options)) (*sd.ListServicesOutput, error) { + services := make([]sdtypes.ServiceSummary, 0) // get namespace filter - filter := input.Filters[0] - if filter == nil || *filter.Name != sd.ServiceFilterNameNamespaceId { - return errors.New("missing namespace filter") + if len(input.Filters) == 0 || input.Filters[0].Name != sdtypes.ServiceFilterNameNamespaceId { + return nil, errors.New("missing namespace filter") } - nsID := filter.Values[0] + nsID := input.Filters[0].Values[0] - for _, srv := range s.services[*nsID] { - services = append(services, serviceToServiceSummary(srv)) + for _, srv := range s.services[nsID] { + services = append(services, *serviceToServiceSummary(srv)) } - fn(&sd.ListServicesOutput{ + return &sd.ListServicesOutput{ Services: services, - }, true) - - return nil + }, nil } -func (s *AWSSDClientStub) RegisterInstance(input *sd.RegisterInstanceInput) (*sd.RegisterInstanceOutput, error) { +func (s *AWSSDClientStub) RegisterInstance(ctx context.Context, input *sd.RegisterInstanceInput, optFns ...func(options *sd.Options)) (*sd.RegisterInstanceOutput, error) { srvInstances, ok := s.instances[*input.ServiceId] if !ok { - srvInstances = make(map[string]*sd.Instance) + srvInstances = make(map[string]*sdtypes.Instance) s.instances[*input.ServiceId] = srvInstances } - srvInstances[*input.InstanceId] = &sd.Instance{ + srvInstances[*input.InstanceId] = &sdtypes.Instance{ Id: input.InstanceId, Attributes: input.Attributes, CreatorRequestId: input.CreatorRequestId, @@ -182,8 +175,8 @@ func (s *AWSSDClientStub) RegisterInstance(input *sd.RegisterInstanceInput) (*sd return &sd.RegisterInstanceOutput{}, nil } -func (s *AWSSDClientStub) UpdateService(input *sd.UpdateServiceInput) (*sd.UpdateServiceOutput, error) { - out, err := s.GetService(&sd.GetServiceInput{Id: input.Id}) +func (s *AWSSDClientStub) UpdateService(ctx context.Context, input *sd.UpdateServiceInput, optFns ...func(options *sd.Options)) (*sd.UpdateServiceOutput, error) { + out, err := s.GetService(ctx, &sd.GetServiceInput{Id: input.Id}) if err != nil { return nil, err } @@ -197,8 +190,8 @@ func (s *AWSSDClientStub) UpdateService(input *sd.UpdateServiceInput) (*sd.Updat return &sd.UpdateServiceOutput{}, nil } -func (s *AWSSDClientStub) DeleteService(input *sd.DeleteServiceInput) (*sd.DeleteServiceOutput, error) { - out, err := s.GetService(&sd.GetServiceInput{Id: input.Id}) +func (s *AWSSDClientStub) DeleteService(ctx context.Context, input *sd.DeleteServiceInput, optFns ...func(options *sd.Options)) (*sd.DeleteServiceOutput, error) { + out, err := s.GetService(ctx, &sd.GetServiceInput{Id: input.Id}) if err != nil { return nil, err } @@ -221,39 +214,69 @@ func newTestAWSSDProvider(api AWSSDClient, domainFilter endpoint.DomainFilter, n } } -// nolint: deadcode -// used for unit test -func instanceToHTTPInstanceSummary(instance *sd.Instance) *sd.HttpInstanceSummary { +func instanceToHTTPInstanceSummary(instance *sdtypes.Instance) *sdtypes.HttpInstanceSummary { if instance == nil { return nil } - return &sd.HttpInstanceSummary{ + return &sdtypes.HttpInstanceSummary{ InstanceId: instance.Id, Attributes: instance.Attributes, } } +func namespaceToNamespaceSummary(namespace *sdtypes.Namespace) *sdtypes.NamespaceSummary { + if namespace == nil { + return nil + } + + return &sdtypes.NamespaceSummary{ + Id: namespace.Id, + Type: namespace.Type, + Name: namespace.Name, + Arn: namespace.Arn, + } +} + +func serviceToServiceSummary(service *sdtypes.Service) *sdtypes.ServiceSummary { + if service == nil { + return nil + } + + return &sdtypes.ServiceSummary{ + Arn: service.Arn, + CreateDate: service.CreateDate, + Description: service.Description, + DnsConfig: service.DnsConfig, + HealthCheckConfig: service.HealthCheckConfig, + HealthCheckCustomConfig: service.HealthCheckCustomConfig, + Id: service.Id, + InstanceCount: service.InstanceCount, + Name: service.Name, + Type: service.Type, + } +} + func TestAWSSDProvider_Records(t *testing.T) { - namespaces := map[string]*sd.Namespace{ + namespaces := map[string]*sdtypes.Namespace{ "private": { Id: aws.String("private"), Name: aws.String("private.com"), - Type: aws.String(sd.NamespaceTypeDnsPrivate), + Type: sdtypes.NamespaceTypeDnsPrivate, }, } - services := map[string]map[string]*sd.Service{ + services := map[string]map[string]*sdtypes.Service{ "private": { "a-srv": { Id: aws.String("a-srv"), Name: aws.String("service1"), + NamespaceId: aws.String("private"), Description: aws.String("owner-id"), - DnsConfig: &sd.DnsConfig{ - NamespaceId: aws.String("private"), - RoutingPolicy: aws.String(sd.RoutingPolicyWeighted), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeA), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyWeighted, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeA, TTL: aws.Int64(100), }}, }, @@ -261,12 +284,12 @@ func TestAWSSDProvider_Records(t *testing.T) { "alias-srv": { Id: aws.String("alias-srv"), Name: aws.String("service2"), + NamespaceId: aws.String("private"), Description: aws.String("owner-id"), - DnsConfig: &sd.DnsConfig{ - NamespaceId: aws.String("private"), - RoutingPolicy: aws.String(sd.RoutingPolicyWeighted), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeA), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyWeighted, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeA, TTL: aws.Int64(100), }}, }, @@ -274,12 +297,12 @@ func TestAWSSDProvider_Records(t *testing.T) { "cname-srv": { Id: aws.String("cname-srv"), Name: aws.String("service3"), + NamespaceId: aws.String("private"), Description: aws.String("owner-id"), - DnsConfig: &sd.DnsConfig{ - NamespaceId: aws.String("private"), - RoutingPolicy: aws.String(sd.RoutingPolicyWeighted), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeCname), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyWeighted, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeCname, TTL: aws.Int64(80), }}, }, @@ -287,34 +310,34 @@ func TestAWSSDProvider_Records(t *testing.T) { }, } - instances := map[string]map[string]*sd.Instance{ + instances := map[string]map[string]*sdtypes.Instance{ "a-srv": { "1.2.3.4": { Id: aws.String("1.2.3.4"), - Attributes: map[string]*string{ - sdInstanceAttrIPV4: aws.String("1.2.3.4"), + Attributes: map[string]string{ + sdInstanceAttrIPV4: "1.2.3.4", }, }, "1.2.3.5": { Id: aws.String("1.2.3.5"), - Attributes: map[string]*string{ - sdInstanceAttrIPV4: aws.String("1.2.3.5"), + Attributes: map[string]string{ + sdInstanceAttrIPV4: "1.2.3.5", }, }, }, "alias-srv": { "load-balancer.us-east-1.elb.amazonaws.com": { Id: aws.String("load-balancer.us-east-1.elb.amazonaws.com"), - Attributes: map[string]*string{ - sdInstanceAttrAlias: aws.String("load-balancer.us-east-1.elb.amazonaws.com"), + Attributes: map[string]string{ + sdInstanceAttrAlias: "load-balancer.us-east-1.elb.amazonaws.com", }, }, }, "cname-srv": { "cname.target.com": { Id: aws.String("cname.target.com"), - Attributes: map[string]*string{ - sdInstanceAttrCname: aws.String("cname.target.com"), + Attributes: map[string]string{ + sdInstanceAttrCname: "cname.target.com", }, }, }, @@ -340,18 +363,18 @@ func TestAWSSDProvider_Records(t *testing.T) { } func TestAWSSDProvider_ApplyChanges(t *testing.T) { - namespaces := map[string]*sd.Namespace{ + namespaces := map[string]*sdtypes.Namespace{ "private": { Id: aws.String("private"), Name: aws.String("private.com"), - Type: aws.String(sd.NamespaceTypeDnsPrivate), + Type: sdtypes.NamespaceTypeDnsPrivate, }, } api := &AWSSDClientStub{ namespaces: namespaces, - services: make(map[string]map[string]*sd.Service), - instances: make(map[string]map[string]*sd.Instance), + services: make(map[string]map[string]*sdtypes.Service), + instances: make(map[string]map[string]*sdtypes.Instance), } expectedEndpoints := []*endpoint.Endpoint{ @@ -371,7 +394,7 @@ func TestAWSSDProvider_ApplyChanges(t *testing.T) { // make sure services were created assert.Len(t, api.services["private"], 3) - existingServices, _ := provider.ListServicesByNamespaceID(namespaces["private"].Id) + existingServices, _ := provider.ListServicesByNamespaceID(context.Background(), namespaces["private"].Id) assert.NotNil(t, existingServices["service1"]) assert.NotNil(t, existingServices["service2"]) assert.NotNil(t, existingServices["service3"]) @@ -392,16 +415,16 @@ func TestAWSSDProvider_ApplyChanges(t *testing.T) { } func TestAWSSDProvider_ListNamespaces(t *testing.T) { - namespaces := map[string]*sd.Namespace{ + namespaces := map[string]*sdtypes.Namespace{ "private": { Id: aws.String("private"), Name: aws.String("private.com"), - Type: aws.String(sd.NamespaceTypeDnsPrivate), + Type: sdtypes.NamespaceTypeDnsPrivate, }, "public": { Id: aws.String("public"), Name: aws.String("public.com"), - Type: aws.String(sd.NamespaceTypeDnsPublic), + Type: sdtypes.NamespaceTypeDnsPublic, }, } @@ -413,20 +436,20 @@ func TestAWSSDProvider_ListNamespaces(t *testing.T) { msg string domainFilter endpoint.DomainFilter namespaceTypeFilter string - expectedNamespaces []*sd.NamespaceSummary + expectedNamespaces []*sdtypes.NamespaceSummary }{ - {"public filter", endpoint.NewDomainFilter([]string{}), "public", []*sd.NamespaceSummary{namespaceToNamespaceSummary(namespaces["public"])}}, - {"private filter", endpoint.NewDomainFilter([]string{}), "private", []*sd.NamespaceSummary{namespaceToNamespaceSummary(namespaces["private"])}}, - {"domain filter", endpoint.NewDomainFilter([]string{"public.com"}), "", []*sd.NamespaceSummary{namespaceToNamespaceSummary(namespaces["public"])}}, - {"non-existing domain", endpoint.NewDomainFilter([]string{"xxx.com"}), "", []*sd.NamespaceSummary{}}, + {"public filter", endpoint.NewDomainFilter([]string{}), "public", []*sdtypes.NamespaceSummary{namespaceToNamespaceSummary(namespaces["public"])}}, + {"private filter", endpoint.NewDomainFilter([]string{}), "private", []*sdtypes.NamespaceSummary{namespaceToNamespaceSummary(namespaces["private"])}}, + {"domain filter", endpoint.NewDomainFilter([]string{"public.com"}), "", []*sdtypes.NamespaceSummary{namespaceToNamespaceSummary(namespaces["public"])}}, + {"non-existing domain", endpoint.NewDomainFilter([]string{"xxx.com"}), "", []*sdtypes.NamespaceSummary{}}, } { provider := newTestAWSSDProvider(api, tc.domainFilter, tc.namespaceTypeFilter, "") - result, err := provider.ListNamespaces() + result, err := provider.ListNamespaces(context.Background()) require.NoError(t, err) - expectedMap := make(map[string]*sd.NamespaceSummary) - resultMap := make(map[string]*sd.NamespaceSummary) + expectedMap := make(map[string]*sdtypes.NamespaceSummary) + resultMap := make(map[string]*sdtypes.NamespaceSummary) for _, ns := range tc.expectedNamespaces { expectedMap[*ns.Id] = ns } @@ -441,20 +464,20 @@ func TestAWSSDProvider_ListNamespaces(t *testing.T) { } func TestAWSSDProvider_ListServicesByNamespace(t *testing.T) { - namespaces := map[string]*sd.Namespace{ + namespaces := map[string]*sdtypes.Namespace{ "private": { Id: aws.String("private"), Name: aws.String("private.com"), - Type: aws.String(sd.NamespaceTypeDnsPrivate), + Type: sdtypes.NamespaceTypeDnsPrivate, }, "public": { Id: aws.String("public"), Name: aws.String("public.com"), - Type: aws.String(sd.NamespaceTypeDnsPublic), + Type: sdtypes.NamespaceTypeDnsPublic, }, } - services := map[string]map[string]*sd.Service{ + services := map[string]map[string]*sdtypes.Service{ "private": { "srv1": { Id: aws.String("srv1"), @@ -482,48 +505,52 @@ func TestAWSSDProvider_ListServicesByNamespace(t *testing.T) { } for _, tc := range []struct { - expectedServices map[string]*sd.Service + expectedServices map[string]*sdtypes.Service }{ - {map[string]*sd.Service{"service1": services["private"]["srv1"], "service2": services["private"]["srv2"]}}, + {map[string]*sdtypes.Service{"service1": services["private"]["srv1"], "service2": services["private"]["srv2"]}}, } { provider := newTestAWSSDProvider(api, endpoint.NewDomainFilter([]string{}), "", "") - result, err := provider.ListServicesByNamespaceID(namespaces["private"].Id) + result, err := provider.ListServicesByNamespaceID(context.Background(), namespaces["private"].Id) require.NoError(t, err) assert.Equal(t, tc.expectedServices, result) } } func TestAWSSDProvider_CreateService(t *testing.T) { - namespaces := map[string]*sd.Namespace{ + namespaces := map[string]*sdtypes.Namespace{ "private": { Id: aws.String("private"), Name: aws.String("private.com"), - Type: aws.String(sd.NamespaceTypeDnsPrivate), + Type: sdtypes.NamespaceTypeDnsPrivate, }, } api := &AWSSDClientStub{ namespaces: namespaces, - services: make(map[string]map[string]*sd.Service), + services: make(map[string]map[string]*sdtypes.Service), } - expectedServices := make(map[string]*sd.Service) + expectedServices := make(map[string]*sdtypes.Service) provider := newTestAWSSDProvider(api, endpoint.NewDomainFilter([]string{}), "", "") // A type - provider.CreateService(aws.String("private"), aws.String("A-srv"), &endpoint.Endpoint{ + provider.CreateService(context.Background(), aws.String("private"), aws.String("A-srv"), &endpoint.Endpoint{ + Labels: map[string]string{ + endpoint.AWSSDDescriptionLabel: "A-srv", + }, RecordType: endpoint.RecordTypeA, RecordTTL: 60, Targets: endpoint.Targets{"1.2.3.4"}, }) - expectedServices["A-srv"] = &sd.Service{ - Name: aws.String("A-srv"), - DnsConfig: &sd.DnsConfig{ - RoutingPolicy: aws.String(sd.RoutingPolicyMultivalue), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeA), + expectedServices["A-srv"] = &sdtypes.Service{ + Name: aws.String("A-srv"), + Description: aws.String("A-srv"), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyMultivalue, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeA, TTL: aws.Int64(60), }}, }, @@ -531,17 +558,21 @@ func TestAWSSDProvider_CreateService(t *testing.T) { } // CNAME type - provider.CreateService(aws.String("private"), aws.String("CNAME-srv"), &endpoint.Endpoint{ + provider.CreateService(context.Background(), aws.String("private"), aws.String("CNAME-srv"), &endpoint.Endpoint{ + Labels: map[string]string{ + endpoint.AWSSDDescriptionLabel: "CNAME-srv", + }, RecordType: endpoint.RecordTypeCNAME, RecordTTL: 80, Targets: endpoint.Targets{"cname.target.com"}, }) - expectedServices["CNAME-srv"] = &sd.Service{ - Name: aws.String("CNAME-srv"), - DnsConfig: &sd.DnsConfig{ - RoutingPolicy: aws.String(sd.RoutingPolicyWeighted), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeCname), + expectedServices["CNAME-srv"] = &sdtypes.Service{ + Name: aws.String("CNAME-srv"), + Description: aws.String("CNAME-srv"), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyWeighted, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeCname, TTL: aws.Int64(80), }}, }, @@ -549,17 +580,21 @@ func TestAWSSDProvider_CreateService(t *testing.T) { } // ALIAS type - provider.CreateService(aws.String("private"), aws.String("ALIAS-srv"), &endpoint.Endpoint{ + provider.CreateService(context.Background(), aws.String("private"), aws.String("ALIAS-srv"), &endpoint.Endpoint{ + Labels: map[string]string{ + endpoint.AWSSDDescriptionLabel: "ALIAS-srv", + }, RecordType: endpoint.RecordTypeCNAME, RecordTTL: 100, Targets: endpoint.Targets{"load-balancer.us-east-1.elb.amazonaws.com"}, }) - expectedServices["ALIAS-srv"] = &sd.Service{ - Name: aws.String("ALIAS-srv"), - DnsConfig: &sd.DnsConfig{ - RoutingPolicy: aws.String(sd.RoutingPolicyWeighted), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeA), + expectedServices["ALIAS-srv"] = &sdtypes.Service{ + Name: aws.String("ALIAS-srv"), + Description: aws.String("ALIAS-srv"), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyWeighted, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeA, TTL: aws.Int64(100), }}, }, @@ -569,7 +604,7 @@ func TestAWSSDProvider_CreateService(t *testing.T) { validateAWSSDServicesMapsEqual(t, expectedServices, api.services["private"]) } -func validateAWSSDServicesMapsEqual(t *testing.T, expected map[string]*sd.Service, services map[string]*sd.Service) { +func validateAWSSDServicesMapsEqual(t *testing.T, expected map[string]*sdtypes.Service, services map[string]*sdtypes.Service) { require.Len(t, services, len(expected)) for _, srv := range services { @@ -577,31 +612,31 @@ func validateAWSSDServicesMapsEqual(t *testing.T, expected map[string]*sd.Servic } } -func validateAWSSDServicesEqual(t *testing.T, expected *sd.Service, srv *sd.Service) { - assert.Equal(t, aws.StringValue(expected.Description), aws.StringValue(srv.Description)) - assert.Equal(t, aws.StringValue(expected.Name), aws.StringValue(srv.Name)) +func validateAWSSDServicesEqual(t *testing.T, expected *sdtypes.Service, srv *sdtypes.Service) { + assert.Equal(t, *expected.Description, *srv.Description) + assert.Equal(t, *expected.Name, *srv.Name) assert.True(t, reflect.DeepEqual(*expected.DnsConfig, *srv.DnsConfig)) } func TestAWSSDProvider_UpdateService(t *testing.T) { - namespaces := map[string]*sd.Namespace{ + namespaces := map[string]*sdtypes.Namespace{ "private": { Id: aws.String("private"), Name: aws.String("private.com"), - Type: aws.String(sd.NamespaceTypeDnsPrivate), + Type: sdtypes.NamespaceTypeDnsPrivate, }, } - services := map[string]map[string]*sd.Service{ + services := map[string]map[string]*sdtypes.Service{ "private": { "srv1": { - Id: aws.String("srv1"), - Name: aws.String("service1"), - DnsConfig: &sd.DnsConfig{ - NamespaceId: aws.String("private"), - RoutingPolicy: aws.String(sd.RoutingPolicyMultivalue), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeA), + Id: aws.String("srv1"), + Name: aws.String("service1"), + NamespaceId: aws.String("private"), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyMultivalue, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeA, TTL: aws.Int64(60), }}, }, @@ -617,7 +652,7 @@ func TestAWSSDProvider_UpdateService(t *testing.T) { provider := newTestAWSSDProvider(api, endpoint.NewDomainFilter([]string{}), "", "") // update service with different TTL - provider.UpdateService(services["private"]["srv1"], &endpoint.Endpoint{ + provider.UpdateService(context.Background(), services["private"]["srv1"], &endpoint.Endpoint{ RecordType: endpoint.RecordTypeA, RecordTTL: 100, }) @@ -626,15 +661,15 @@ func TestAWSSDProvider_UpdateService(t *testing.T) { } func TestAWSSDProvider_DeleteService(t *testing.T) { - namespaces := map[string]*sd.Namespace{ + namespaces := map[string]*sdtypes.Namespace{ "private": { Id: aws.String("private"), Name: aws.String("private.com"), - Type: aws.String(sd.NamespaceTypeDnsPrivate), + Type: sdtypes.NamespaceTypeDnsPrivate, }, } - services := map[string]map[string]*sd.Service{ + services := map[string]map[string]*sdtypes.Service{ "private": { "srv1": { Id: aws.String("srv1"), @@ -665,16 +700,16 @@ func TestAWSSDProvider_DeleteService(t *testing.T) { provider := newTestAWSSDProvider(api, endpoint.NewDomainFilter([]string{}), "", "owner-id") // delete first service - err := provider.DeleteService(services["private"]["srv1"]) + err := provider.DeleteService(context.Background(), services["private"]["srv1"]) assert.NoError(t, err) assert.Len(t, api.services["private"], 2) // delete third service - err1 := provider.DeleteService(services["private"]["srv3"]) + err1 := provider.DeleteService(context.Background(), services["private"]["srv3"]) assert.NoError(t, err1) assert.Len(t, api.services["private"], 1) - expectedServices := map[string]*sd.Service{ + expectedServices := map[string]*sdtypes.Service{ "srv2": { Id: aws.String("srv2"), Description: aws.String("heritage=external-dns,external-dns/owner=owner-id"), @@ -687,48 +722,48 @@ func TestAWSSDProvider_DeleteService(t *testing.T) { } func TestAWSSDProvider_RegisterInstance(t *testing.T) { - namespaces := map[string]*sd.Namespace{ + namespaces := map[string]*sdtypes.Namespace{ "private": { Id: aws.String("private"), Name: aws.String("private.com"), - Type: aws.String(sd.NamespaceTypeDnsPrivate), + Type: sdtypes.NamespaceTypeDnsPrivate, }, } - services := map[string]map[string]*sd.Service{ + services := map[string]map[string]*sdtypes.Service{ "private": { "a-srv": { - Id: aws.String("a-srv"), - Name: aws.String("service1"), - DnsConfig: &sd.DnsConfig{ - NamespaceId: aws.String("private"), - RoutingPolicy: aws.String(sd.RoutingPolicyWeighted), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeA), + Id: aws.String("a-srv"), + Name: aws.String("service1"), + NamespaceId: aws.String("private"), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyWeighted, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeA, TTL: aws.Int64(60), }}, }, }, "cname-srv": { - Id: aws.String("cname-srv"), - Name: aws.String("service2"), - DnsConfig: &sd.DnsConfig{ - NamespaceId: aws.String("private"), - RoutingPolicy: aws.String(sd.RoutingPolicyWeighted), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeCname), + Id: aws.String("cname-srv"), + Name: aws.String("service2"), + NamespaceId: aws.String("private"), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyWeighted, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeCname, TTL: aws.Int64(60), }}, }, }, "alias-srv": { - Id: aws.String("alias-srv"), - Name: aws.String("service3"), - DnsConfig: &sd.DnsConfig{ - NamespaceId: aws.String("private"), - RoutingPolicy: aws.String(sd.RoutingPolicyWeighted), - DnsRecords: []*sd.DnsRecord{{ - Type: aws.String(sd.RecordTypeA), + Id: aws.String("alias-srv"), + Name: aws.String("service3"), + NamespaceId: aws.String("private"), + DnsConfig: &sdtypes.DnsConfig{ + RoutingPolicy: sdtypes.RoutingPolicyWeighted, + DnsRecords: []sdtypes.DnsRecord{{ + Type: sdtypes.RecordTypeA, TTL: aws.Int64(60), }}, }, @@ -739,78 +774,78 @@ func TestAWSSDProvider_RegisterInstance(t *testing.T) { api := &AWSSDClientStub{ namespaces: namespaces, services: services, - instances: make(map[string]map[string]*sd.Instance), + instances: make(map[string]map[string]*sdtypes.Instance), } provider := newTestAWSSDProvider(api, endpoint.NewDomainFilter([]string{}), "", "") - expectedInstances := make(map[string]*sd.Instance) + expectedInstances := make(map[string]*sdtypes.Instance) // IP-based instance - provider.RegisterInstance(services["private"]["a-srv"], &endpoint.Endpoint{ + provider.RegisterInstance(context.Background(), services["private"]["a-srv"], &endpoint.Endpoint{ RecordType: endpoint.RecordTypeA, DNSName: "service1.private.com.", RecordTTL: 300, Targets: endpoint.Targets{"1.2.3.4", "1.2.3.5"}, }) - expectedInstances["1.2.3.4"] = &sd.Instance{ + expectedInstances["1.2.3.4"] = &sdtypes.Instance{ Id: aws.String("1.2.3.4"), - Attributes: map[string]*string{ - sdInstanceAttrIPV4: aws.String("1.2.3.4"), + Attributes: map[string]string{ + sdInstanceAttrIPV4: "1.2.3.4", }, } - expectedInstances["1.2.3.5"] = &sd.Instance{ + expectedInstances["1.2.3.5"] = &sdtypes.Instance{ Id: aws.String("1.2.3.5"), - Attributes: map[string]*string{ - sdInstanceAttrIPV4: aws.String("1.2.3.5"), + Attributes: map[string]string{ + sdInstanceAttrIPV4: "1.2.3.5", }, } // AWS ELB instance (ALIAS) - provider.RegisterInstance(services["private"]["alias-srv"], &endpoint.Endpoint{ + provider.RegisterInstance(context.Background(), services["private"]["alias-srv"], &endpoint.Endpoint{ RecordType: endpoint.RecordTypeCNAME, DNSName: "service1.private.com.", RecordTTL: 300, Targets: endpoint.Targets{"load-balancer.us-east-1.elb.amazonaws.com", "load-balancer.us-west-2.elb.amazonaws.com"}, }) - expectedInstances["load-balancer.us-east-1.elb.amazonaws.com"] = &sd.Instance{ + expectedInstances["load-balancer.us-east-1.elb.amazonaws.com"] = &sdtypes.Instance{ Id: aws.String("load-balancer.us-east-1.elb.amazonaws.com"), - Attributes: map[string]*string{ - sdInstanceAttrAlias: aws.String("load-balancer.us-east-1.elb.amazonaws.com"), + Attributes: map[string]string{ + sdInstanceAttrAlias: "load-balancer.us-east-1.elb.amazonaws.com", }, } - expectedInstances["load-balancer.us-west-2.elb.amazonaws.com"] = &sd.Instance{ + expectedInstances["load-balancer.us-west-2.elb.amazonaws.com"] = &sdtypes.Instance{ Id: aws.String("load-balancer.us-west-2.elb.amazonaws.com"), - Attributes: map[string]*string{ - sdInstanceAttrAlias: aws.String("load-balancer.us-west-2.elb.amazonaws.com"), + Attributes: map[string]string{ + sdInstanceAttrAlias: "load-balancer.us-west-2.elb.amazonaws.com", }, } // AWS NLB instance (ALIAS) - provider.RegisterInstance(services["private"]["alias-srv"], &endpoint.Endpoint{ + provider.RegisterInstance(context.Background(), services["private"]["alias-srv"], &endpoint.Endpoint{ RecordType: endpoint.RecordTypeCNAME, DNSName: "service1.private.com.", RecordTTL: 300, Targets: endpoint.Targets{"load-balancer.elb.us-west-2.amazonaws.com"}, }) - expectedInstances["load-balancer.elb.us-west-2.amazonaws.com"] = &sd.Instance{ + expectedInstances["load-balancer.elb.us-west-2.amazonaws.com"] = &sdtypes.Instance{ Id: aws.String("load-balancer.elb.us-west-2.amazonaws.com"), - Attributes: map[string]*string{ - sdInstanceAttrAlias: aws.String("load-balancer.elb.us-west-2.amazonaws.com"), + Attributes: map[string]string{ + sdInstanceAttrAlias: "load-balancer.elb.us-west-2.amazonaws.com", }, } // CNAME instance - provider.RegisterInstance(services["private"]["cname-srv"], &endpoint.Endpoint{ + provider.RegisterInstance(context.Background(), services["private"]["cname-srv"], &endpoint.Endpoint{ RecordType: endpoint.RecordTypeCNAME, DNSName: "service2.private.com.", RecordTTL: 300, Targets: endpoint.Targets{"cname.target.com"}, }) - expectedInstances["cname.target.com"] = &sd.Instance{ + expectedInstances["cname.target.com"] = &sdtypes.Instance{ Id: aws.String("cname.target.com"), - Attributes: map[string]*string{ - sdInstanceAttrCname: aws.String("cname.target.com"), + Attributes: map[string]string{ + sdInstanceAttrCname: "cname.target.com", }, } @@ -825,15 +860,15 @@ func TestAWSSDProvider_RegisterInstance(t *testing.T) { } func TestAWSSDProvider_DeregisterInstance(t *testing.T) { - namespaces := map[string]*sd.Namespace{ + namespaces := map[string]*sdtypes.Namespace{ "private": { Id: aws.String("private"), Name: aws.String("private.com"), - Type: aws.String(sd.NamespaceTypeDnsPrivate), + Type: sdtypes.NamespaceTypeDnsPrivate, }, } - services := map[string]map[string]*sd.Service{ + services := map[string]map[string]*sdtypes.Service{ "private": { "srv1": { Id: aws.String("srv1"), @@ -842,12 +877,12 @@ func TestAWSSDProvider_DeregisterInstance(t *testing.T) { }, } - instances := map[string]map[string]*sd.Instance{ + instances := map[string]map[string]*sdtypes.Instance{ "srv1": { "1.2.3.4": { Id: aws.String("1.2.3.4"), - Attributes: map[string]*string{ - sdInstanceAttrIPV4: aws.String("1.2.3.4"), + Attributes: map[string]string{ + sdInstanceAttrIPV4: "1.2.3.4", }, }, }, @@ -861,7 +896,7 @@ func TestAWSSDProvider_DeregisterInstance(t *testing.T) { provider := newTestAWSSDProvider(api, endpoint.NewDomainFilter([]string{}), "", "") - provider.DeregisterInstance(services["private"]["srv1"], endpoint.NewEndpoint("srv1.private.com.", endpoint.RecordTypeA, "1.2.3.4")) + provider.DeregisterInstance(context.Background(), services["private"]["srv1"], endpoint.NewEndpoint("srv1.private.com.", endpoint.RecordTypeA, "1.2.3.4")) assert.Len(t, instances["srv1"], 0) } diff --git a/provider/bluecat/OWNERS b/provider/bluecat/OWNERS deleted file mode 100644 index 58a6b3a17..000000000 --- a/provider/bluecat/OWNERS +++ /dev/null @@ -1,6 +0,0 @@ -approvers: -- seanmalloy -- vinny-sabatini -reviewers: -- seanmalloy -- vinny-sabatini diff --git a/provider/bluecat/bluecat.go b/provider/bluecat/bluecat.go deleted file mode 100644 index 2205ba3ed..000000000 --- a/provider/bluecat/bluecat.go +++ /dev/null @@ -1,511 +0,0 @@ -/* -Copyright 2020 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// TODO: Ensure we have proper error handling/logging for API calls to Bluecat. getBluecatGatewayToken has a good example of this -// TODO: Remove studdering -// TODO: Make API calls more consistent (eg error handling on HTTP response codes) -// TODO: zone-id-filter does not seem to work with our provider - -package bluecat - -import ( - "context" - "encoding/json" - "os" - "regexp" - "strconv" - "strings" - - "github.com/pkg/errors" - log "github.com/sirupsen/logrus" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" - "sigs.k8s.io/external-dns/provider" - api "sigs.k8s.io/external-dns/provider/bluecat/gateway" -) - -// BluecatProvider implements the DNS provider for Bluecat DNS -type BluecatProvider struct { - provider.BaseProvider - domainFilter endpoint.DomainFilter - zoneIDFilter provider.ZoneIDFilter - dryRun bool - RootZone string - DNSConfiguration string - DNSServerName string - DNSDeployType string - View string - gatewayClient api.GatewayClient - TxtPrefix string - TxtSuffix string -} - -type bluecatRecordSet struct { - obj interface{} - res interface{} -} - -// NewBluecatProvider creates a new Bluecat provider. -// -// Returns a pointer to the provider or an error if a provider could not be created. -func NewBluecatProvider(configFile, dnsConfiguration, dnsServerName, dnsDeployType, dnsView, gatewayHost, rootZone, txtPrefix, txtSuffix string, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun, skipTLSVerify bool) (*BluecatProvider, error) { - cfg := api.BluecatConfig{} - contents, err := os.ReadFile(configFile) - if err != nil { - if errors.Is(err, os.ErrNotExist) { - cfg = api.BluecatConfig{ - GatewayHost: gatewayHost, - DNSConfiguration: dnsConfiguration, - DNSServerName: dnsServerName, - DNSDeployType: dnsDeployType, - View: dnsView, - RootZone: rootZone, - SkipTLSVerify: skipTLSVerify, - GatewayUsername: "", - GatewayPassword: "", - } - } else { - return nil, errors.Wrapf(err, "failed to read Bluecat config file %v", configFile) - } - } else { - err = json.Unmarshal(contents, &cfg) - if err != nil { - return nil, errors.Wrapf(err, "failed to parse Bluecat JSON config file %v", configFile) - } - } - - if !api.IsValidDNSDeployType(cfg.DNSDeployType) { - return nil, errors.Errorf("%v is not a valid deployment type", cfg.DNSDeployType) - } - - token, cookie, err := api.GetBluecatGatewayToken(cfg) - if err != nil { - return nil, errors.Wrap(err, "failed to get API token from Bluecat Gateway") - } - gatewayClient := api.NewGatewayClientConfig(cookie, token, cfg.GatewayHost, cfg.DNSConfiguration, cfg.View, cfg.RootZone, cfg.DNSServerName, cfg.SkipTLSVerify) - - provider := &BluecatProvider{ - domainFilter: domainFilter, - zoneIDFilter: zoneIDFilter, - dryRun: dryRun, - gatewayClient: gatewayClient, - DNSConfiguration: cfg.DNSConfiguration, - DNSServerName: cfg.DNSServerName, - DNSDeployType: cfg.DNSDeployType, - View: cfg.View, - RootZone: cfg.RootZone, - TxtPrefix: txtPrefix, - TxtSuffix: txtSuffix, - } - return provider, nil -} - -// Records fetches Host, CNAME, and TXT records from bluecat gateway -func (p *BluecatProvider) Records(ctx context.Context) (endpoints []*endpoint.Endpoint, err error) { - zones, err := p.zones() - if err != nil { - return nil, errors.Wrap(err, "could not fetch zones") - } - - // Parsing Text records first, so we can get the owner from them. - for _, zone := range zones { - log.Debugf("fetching records from zone '%s'", zone) - - var resT []api.BluecatTXTRecord - err = p.gatewayClient.GetTXTRecords(zone, &resT) - if err != nil { - return nil, errors.Wrapf(err, "could not fetch TXT records for zone: %v", zone) - } - for _, rec := range resT { - tempEndpoint := endpoint.NewEndpoint(rec.Name, endpoint.RecordTypeTXT, rec.Properties) - tempEndpoint.Labels[endpoint.OwnerLabelKey], err = extractOwnerfromTXTRecord(rec.Properties) - if err != nil { - log.Debugf("External DNS Owner %s", err) - } - endpoints = append(endpoints, tempEndpoint) - } - - var resH []api.BluecatHostRecord - err = p.gatewayClient.GetHostRecords(zone, &resH) - if err != nil { - return nil, errors.Wrapf(err, "could not fetch host records for zone: %v", zone) - } - var ep *endpoint.Endpoint - for _, rec := range resH { - propMap := api.SplitProperties(rec.Properties) - ips := strings.Split(propMap["addresses"], ",") - for _, ip := range ips { - if _, ok := propMap["ttl"]; ok { - ttl, err := strconv.Atoi(propMap["ttl"]) - if err != nil { - return nil, errors.Wrapf(err, "could not parse ttl '%d' as int for host record %v", ttl, rec.Name) - } - ep = endpoint.NewEndpointWithTTL(propMap["absoluteName"], endpoint.RecordTypeA, endpoint.TTL(ttl), ip) - } else { - ep = endpoint.NewEndpoint(propMap["absoluteName"], endpoint.RecordTypeA, ip) - } - for _, txtRec := range resT { - if strings.Compare(p.TxtPrefix+rec.Name+p.TxtSuffix, txtRec.Name) == 0 { - ep.Labels[endpoint.OwnerLabelKey], err = extractOwnerfromTXTRecord(txtRec.Properties) - if err != nil { - log.Debugf("External DNS Owner %s", err) - } - } - } - endpoints = append(endpoints, ep) - } - } - - var resC []api.BluecatCNAMERecord - err = p.gatewayClient.GetCNAMERecords(zone, &resC) - if err != nil { - return nil, errors.Wrapf(err, "could not fetch CNAME records for zone: %v", zone) - } - - for _, rec := range resC { - propMap := api.SplitProperties(rec.Properties) - if _, ok := propMap["ttl"]; ok { - ttl, err := strconv.Atoi(propMap["ttl"]) - if err != nil { - return nil, errors.Wrapf(err, "could not parse ttl '%d' as int for CNAME record %v", ttl, rec.Name) - } - ep = endpoint.NewEndpointWithTTL(propMap["absoluteName"], endpoint.RecordTypeCNAME, endpoint.TTL(ttl), propMap["linkedRecordName"]) - } else { - ep = endpoint.NewEndpoint(propMap["absoluteName"], endpoint.RecordTypeCNAME, propMap["linkedRecordName"]) - } - for _, txtRec := range resT { - if strings.Compare(p.TxtPrefix+rec.Name+p.TxtSuffix, txtRec.Name) == 0 { - ep.Labels[endpoint.OwnerLabelKey], err = extractOwnerfromTXTRecord(txtRec.Properties) - if err != nil { - log.Debugf("External DNS Owner %s", err) - } - } - } - endpoints = append(endpoints, ep) - } - } - - log.Debugf("fetched %d records from Bluecat", len(endpoints)) - return endpoints, nil -} - -// ApplyChanges updates necessary zones and replaces old records with new ones -// -// Returns nil upon success and err is there is an error -func (p *BluecatProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error { - zones, err := p.zones() - if err != nil { - return err - } - log.Infof("zones is: %+v\n", zones) - log.Infof("changes: %+v\n", changes) - created, deleted := p.mapChanges(zones, changes) - log.Infof("created: %+v\n", created) - log.Infof("deleted: %+v\n", deleted) - p.deleteRecords(deleted) - p.createRecords(created) - - if p.DNSServerName != "" { - if p.dryRun { - log.Debug("Not executing deploy because this is running in dry-run mode") - } else { - switch p.DNSDeployType { - case "full-deploy": - err := p.gatewayClient.ServerFullDeploy() - if err != nil { - return err - } - case "no-deploy": - log.Debug("Not executing deploy because DNSDeployType is set to 'no-deploy'") - } - } - } else { - log.Debug("Not executing deploy because server name was not provided") - } - - return nil -} - -type bluecatChangeMap map[string][]*endpoint.Endpoint - -func (p *BluecatProvider) mapChanges(zones []string, changes *plan.Changes) (bluecatChangeMap, bluecatChangeMap) { - created := bluecatChangeMap{} - deleted := bluecatChangeMap{} - - mapChange := func(changeMap bluecatChangeMap, change *endpoint.Endpoint) { - zone := p.findZone(zones, change.DNSName) - if zone == "" { - log.Debugf("ignoring changes to '%s' because a suitable Bluecat DNS zone was not found", change.DNSName) - return - } - changeMap[zone] = append(changeMap[zone], change) - } - - for _, change := range changes.Delete { - mapChange(deleted, change) - } - for _, change := range changes.UpdateOld { - mapChange(deleted, change) - } - for _, change := range changes.Create { - mapChange(created, change) - } - for _, change := range changes.UpdateNew { - mapChange(created, change) - } - - return created, deleted -} - -// findZone finds the most specific matching zone for a given record 'name' from a list of all zones -func (p *BluecatProvider) findZone(zones []string, name string) string { - var result string - - for _, zone := range zones { - if strings.HasSuffix(name, "."+zone) { - if result == "" || len(zone) > len(result) { - result = zone - } - } else if strings.EqualFold(name, zone) { - if result == "" || len(zone) > len(result) { - result = zone - } - } - } - - return result -} - -func (p *BluecatProvider) zones() ([]string, error) { - log.Debugf("retrieving Bluecat zones for configuration: %s, view: %s", p.DNSConfiguration, p.View) - var zones []string - - zonelist, err := p.gatewayClient.GetBluecatZones(p.RootZone) - if err != nil { - return nil, err - } - - for _, zone := range zonelist { - if !p.domainFilter.Match(zone.Name) { - continue - } - - // TODO: match to absoluteName(string) not Id(int) - if !p.zoneIDFilter.Match(strconv.Itoa(zone.ID)) { - continue - } - - zoneProps := api.SplitProperties(zone.Properties) - - zones = append(zones, zoneProps["absoluteName"]) - } - log.Debugf("found %d zones", len(zones)) - return zones, nil -} - -func (p *BluecatProvider) createRecords(created bluecatChangeMap) { - for zone, endpoints := range created { - for _, ep := range endpoints { - if p.dryRun { - log.Infof("would create %s record named '%s' to '%s' for Bluecat DNS zone '%s'.", - ep.RecordType, - ep.DNSName, - ep.Targets, - zone, - ) - continue - } - - log.Infof("creating %s record named '%s' to '%s' for Bluecat DNS zone '%s'.", - ep.RecordType, - ep.DNSName, - ep.Targets, - zone, - ) - - recordSet, err := p.recordSet(ep, false) - if err != nil { - log.Errorf( - "Failed to retrieve %s record named '%s' to '%s' for Bluecat DNS zone '%s': %v", - ep.RecordType, - ep.DNSName, - ep.Targets, - zone, - err, - ) - continue - } - var response interface{} - switch ep.RecordType { - case endpoint.RecordTypeA: - err = p.gatewayClient.CreateHostRecord(zone, recordSet.obj.(*api.BluecatCreateHostRecordRequest)) - case endpoint.RecordTypeCNAME: - err = p.gatewayClient.CreateCNAMERecord(zone, recordSet.obj.(*api.BluecatCreateCNAMERecordRequest)) - case endpoint.RecordTypeTXT: - err = p.gatewayClient.CreateTXTRecord(zone, recordSet.obj.(*api.BluecatCreateTXTRecordRequest)) - } - log.Debugf("Response from create: %v", response) - if err != nil { - log.Errorf( - "Failed to create %s record named '%s' to '%s' for Bluecat DNS zone '%s': %v", - ep.RecordType, - ep.DNSName, - ep.Targets, - zone, - err, - ) - } - } - } -} - -func (p *BluecatProvider) deleteRecords(deleted bluecatChangeMap) { - // run deletions first - for zone, endpoints := range deleted { - for _, ep := range endpoints { - if p.dryRun { - log.Infof("would delete %s record named '%s' for Bluecat DNS zone '%s'.", - ep.RecordType, - ep.DNSName, - zone, - ) - continue - } else { - log.Infof("deleting %s record named '%s' for Bluecat DNS zone '%s'.", - ep.RecordType, - ep.DNSName, - zone, - ) - - recordSet, err := p.recordSet(ep, true) - if err != nil { - log.Errorf( - "Failed to retrieve %s record named '%s' to '%s' for Bluecat DNS zone '%s': %v", - ep.RecordType, - ep.DNSName, - ep.Targets, - zone, - err, - ) - continue - } - - switch ep.RecordType { - case endpoint.RecordTypeA: - for _, record := range *recordSet.res.(*[]api.BluecatHostRecord) { - err = p.gatewayClient.DeleteHostRecord(record.Name, zone) - } - case endpoint.RecordTypeCNAME: - for _, record := range *recordSet.res.(*[]api.BluecatCNAMERecord) { - err = p.gatewayClient.DeleteCNAMERecord(record.Name, zone) - } - case endpoint.RecordTypeTXT: - for _, record := range *recordSet.res.(*[]api.BluecatTXTRecord) { - err = p.gatewayClient.DeleteTXTRecord(record.Name, zone) - } - } - if err != nil { - log.Errorf("Failed to delete %s record named '%s' for Bluecat DNS zone '%s': %v", - ep.RecordType, - ep.DNSName, - zone, - err) - } - } - } - } -} - -func (p *BluecatProvider) recordSet(ep *endpoint.Endpoint, getObject bool) (bluecatRecordSet, error) { - recordSet := bluecatRecordSet{} - switch ep.RecordType { - case endpoint.RecordTypeA: - var res []api.BluecatHostRecord - obj := api.BluecatCreateHostRecordRequest{ - AbsoluteName: ep.DNSName, - IP4Address: ep.Targets[0], - TTL: int(ep.RecordTTL), - Properties: "", - } - if getObject { - var record api.BluecatHostRecord - err := p.gatewayClient.GetHostRecord(ep.DNSName, &record) - if err != nil { - return bluecatRecordSet{}, err - } - res = append(res, record) - } - recordSet = bluecatRecordSet{ - obj: &obj, - res: &res, - } - case endpoint.RecordTypeCNAME: - var res []api.BluecatCNAMERecord - obj := api.BluecatCreateCNAMERecordRequest{ - AbsoluteName: ep.DNSName, - LinkedRecord: ep.Targets[0], - TTL: int(ep.RecordTTL), - Properties: "", - } - if getObject { - var record api.BluecatCNAMERecord - err := p.gatewayClient.GetCNAMERecord(ep.DNSName, &record) - if err != nil { - return bluecatRecordSet{}, err - } - res = append(res, record) - } - recordSet = bluecatRecordSet{ - obj: &obj, - res: &res, - } - case endpoint.RecordTypeTXT: - var res []api.BluecatTXTRecord - // TODO: Allow setting TTL - // This is not implemented in the Bluecat Gateway - obj := api.BluecatCreateTXTRecordRequest{ - AbsoluteName: ep.DNSName, - Text: ep.Targets[0], - } - if getObject { - var record api.BluecatTXTRecord - err := p.gatewayClient.GetTXTRecord(ep.DNSName, &record) - if err != nil { - return bluecatRecordSet{}, err - } - res = append(res, record) - } - recordSet = bluecatRecordSet{ - obj: &obj, - res: &res, - } - } - return recordSet, nil -} - -// extractOwnerFromTXTRecord takes a single text property string and returns the owner after parsing the owner string. -func extractOwnerfromTXTRecord(propString string) (string, error) { - if len(propString) == 0 { - return "", errors.Errorf("External-DNS Owner not found") - } - re := regexp.MustCompile(`external-dns/owner=[^,]+`) - match := re.FindStringSubmatch(propString) - if len(match) == 0 { - return "", errors.Errorf("External-DNS Owner not found, %s", propString) - } - return strings.Split(match[0], "=")[1], nil -} diff --git a/provider/bluecat/bluecat_test.go b/provider/bluecat/bluecat_test.go deleted file mode 100644 index ed7c0de04..000000000 --- a/provider/bluecat/bluecat_test.go +++ /dev/null @@ -1,465 +0,0 @@ -/* -Copyright 2020 The Kubernetes Authors. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package bluecat - -import ( - "context" - "fmt" - "strings" - "testing" - - "github.com/stretchr/testify/assert" - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/internal/testutils" - "sigs.k8s.io/external-dns/plan" - "sigs.k8s.io/external-dns/provider" - api "sigs.k8s.io/external-dns/provider/bluecat/gateway" -) - -type mockGatewayClient struct { - mockBluecatZones *[]api.BluecatZone - mockBluecatHosts *[]api.BluecatHostRecord - mockBluecatCNAMEs *[]api.BluecatCNAMERecord - mockBluecatTXTs *[]api.BluecatTXTRecord -} - -type Changes struct { - // Records that need to be created - Create []*endpoint.Endpoint - // Records that need to be updated (current data) - UpdateOld []*endpoint.Endpoint - // Records that need to be updated (desired data) - UpdateNew []*endpoint.Endpoint - // Records that need to be deleted - Delete []*endpoint.Endpoint -} - -func (g mockGatewayClient) GetBluecatZones(zoneName string) ([]api.BluecatZone, error) { - return *g.mockBluecatZones, nil -} - -func (g mockGatewayClient) GetHostRecords(zone string, records *[]api.BluecatHostRecord) error { - *records = *g.mockBluecatHosts - return nil -} - -func (g mockGatewayClient) GetCNAMERecords(zone string, records *[]api.BluecatCNAMERecord) error { - *records = *g.mockBluecatCNAMEs - return nil -} - -func (g mockGatewayClient) GetHostRecord(name string, record *api.BluecatHostRecord) error { - for _, currentRecord := range *g.mockBluecatHosts { - if currentRecord.Name == strings.Split(name, ".")[0] { - *record = currentRecord - return nil - } - } - return nil -} - -func (g mockGatewayClient) GetCNAMERecord(name string, record *api.BluecatCNAMERecord) error { - for _, currentRecord := range *g.mockBluecatCNAMEs { - if currentRecord.Name == strings.Split(name, ".")[0] { - *record = currentRecord - return nil - } - } - return nil -} - -func (g mockGatewayClient) CreateHostRecord(zone string, req *api.BluecatCreateHostRecordRequest) (err error) { - return nil -} - -func (g mockGatewayClient) CreateCNAMERecord(zone string, req *api.BluecatCreateCNAMERecordRequest) (err error) { - return nil -} - -func (g mockGatewayClient) DeleteHostRecord(name string, zone string) (err error) { - *g.mockBluecatHosts = nil - return nil -} - -func (g mockGatewayClient) DeleteCNAMERecord(name string, zone string) (err error) { - *g.mockBluecatCNAMEs = nil - return nil -} - -func (g mockGatewayClient) GetTXTRecords(zone string, records *[]api.BluecatTXTRecord) error { - *records = *g.mockBluecatTXTs - return nil -} - -func (g mockGatewayClient) GetTXTRecord(name string, record *api.BluecatTXTRecord) error { - for _, currentRecord := range *g.mockBluecatTXTs { - if currentRecord.Name == name { - *record = currentRecord - return nil - } - } - return nil -} - -func (g mockGatewayClient) CreateTXTRecord(zone string, req *api.BluecatCreateTXTRecordRequest) error { - return nil -} - -func (g mockGatewayClient) DeleteTXTRecord(name string, zone string) error { - *g.mockBluecatTXTs = nil - return nil -} - -func (g mockGatewayClient) ServerFullDeploy() error { - return nil -} - -func createMockBluecatZone(fqdn string) api.BluecatZone { - props := "absoluteName=" + fqdn - return api.BluecatZone{ - Properties: props, - Name: fqdn, - ID: 3, - } -} - -func createMockBluecatHostRecord(fqdn, target string, ttl int) api.BluecatHostRecord { - props := "absoluteName=" + fqdn + "|addresses=" + target + "|ttl=" + fmt.Sprint(ttl) + "|" - nameParts := strings.Split(fqdn, ".") - return api.BluecatHostRecord{ - Name: nameParts[0], - Properties: props, - ID: 3, - } -} - -func createMockBluecatCNAME(alias, target string, ttl int) api.BluecatCNAMERecord { - props := "absoluteName=" + alias + "|linkedRecordName=" + target + "|ttl=" + fmt.Sprint(ttl) + "|" - nameParts := strings.Split(alias, ".") - return api.BluecatCNAMERecord{ - Name: nameParts[0], - Properties: props, - } -} - -func createMockBluecatTXT(fqdn, txt string) api.BluecatTXTRecord { - return api.BluecatTXTRecord{ - Name: fqdn, - Properties: txt, - } -} - -func newBluecatProvider(domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, client mockGatewayClient) *BluecatProvider { - return &BluecatProvider{ - domainFilter: domainFilter, - zoneIDFilter: zoneIDFilter, - dryRun: dryRun, - gatewayClient: client, - } -} - -type bluecatTestData []struct { - TestDescription string - Endpoints []*endpoint.Endpoint -} - -var tests = bluecatTestData{ - { - "first test case", // TODO: better test description - []*endpoint.Endpoint{ - { - DNSName: "example.com", - RecordType: endpoint.RecordTypeA, - Targets: endpoint.Targets{"123.123.123.122"}, - RecordTTL: endpoint.TTL(30), - }, - { - DNSName: "nginx.example.com", - RecordType: endpoint.RecordTypeA, - Targets: endpoint.Targets{"123.123.123.123"}, - RecordTTL: endpoint.TTL(30), - }, - { - DNSName: "whitespace.example.com", - RecordType: endpoint.RecordTypeA, - Targets: endpoint.Targets{"123.123.123.124"}, - RecordTTL: endpoint.TTL(30), - }, - { - DNSName: "hack.example.com", - RecordType: endpoint.RecordTypeCNAME, - Targets: endpoint.Targets{"bluecatnetworks.com"}, - RecordTTL: endpoint.TTL(30), - }, - { - DNSName: "wack.example.com", - RecordType: endpoint.RecordTypeTXT, - Targets: endpoint.Targets{"hello"}, - Labels: endpoint.Labels{"owner": ""}, - }, - { - DNSName: "sack.example.com", - RecordType: endpoint.RecordTypeTXT, - Targets: endpoint.Targets{""}, - Labels: endpoint.Labels{"owner": ""}, - }, - { - DNSName: "kdb.example.com", - RecordType: endpoint.RecordTypeTXT, - Targets: endpoint.Targets{"heritage=external-dns,external-dns/owner=default,external-dns/resource=service/openshift-ingress/router-default"}, - Labels: endpoint.Labels{"owner": "default"}, - }, - }, - }, -} - -func TestBluecatRecords(t *testing.T) { - client := mockGatewayClient{ - mockBluecatZones: &[]api.BluecatZone{ - createMockBluecatZone("example.com"), - }, - mockBluecatTXTs: &[]api.BluecatTXTRecord{ - createMockBluecatTXT("kdb.example.com", "heritage=external-dns,external-dns/owner=default,external-dns/resource=service/openshift-ingress/router-default"), - createMockBluecatTXT("wack.example.com", "hello"), - createMockBluecatTXT("sack.example.com", ""), - }, - mockBluecatHosts: &[]api.BluecatHostRecord{ - createMockBluecatHostRecord("example.com", "123.123.123.122", 30), - createMockBluecatHostRecord("nginx.example.com", "123.123.123.123", 30), - createMockBluecatHostRecord("whitespace.example.com", "123.123.123.124", 30), - }, - mockBluecatCNAMEs: &[]api.BluecatCNAMERecord{ - createMockBluecatCNAME("hack.example.com", "bluecatnetworks.com", 30), - }, - } - - provider := newBluecatProvider( - endpoint.NewDomainFilter([]string{"example.com"}), - provider.NewZoneIDFilter([]string{""}), false, client) - - for _, ti := range tests { - actual, err := provider.Records(context.Background()) - if err != nil { - t.Fatal(err) - } - validateEndpoints(t, actual, ti.Endpoints) - } -} - -func TestBluecatApplyChangesCreate(t *testing.T) { - client := mockGatewayClient{ - mockBluecatZones: &[]api.BluecatZone{ - createMockBluecatZone("example.com"), - }, - mockBluecatHosts: &[]api.BluecatHostRecord{}, - mockBluecatCNAMEs: &[]api.BluecatCNAMERecord{}, - mockBluecatTXTs: &[]api.BluecatTXTRecord{}, - } - - provider := newBluecatProvider( - endpoint.NewDomainFilter([]string{"example.com"}), - provider.NewZoneIDFilter([]string{""}), false, client) - - for _, ti := range tests { - err := provider.ApplyChanges(context.Background(), &plan.Changes{Create: ti.Endpoints}) - if err != nil { - t.Fatal(err) - } - - actual, err := provider.Records(context.Background()) - if err != nil { - t.Fatal(err) - } - validateEndpoints(t, actual, []*endpoint.Endpoint{}) - } -} - -func TestBluecatApplyChangesDelete(t *testing.T) { - client := mockGatewayClient{ - mockBluecatZones: &[]api.BluecatZone{ - createMockBluecatZone("example.com"), - }, - mockBluecatHosts: &[]api.BluecatHostRecord{ - createMockBluecatHostRecord("example.com", "123.123.123.122", 30), - createMockBluecatHostRecord("nginx.example.com", "123.123.123.123", 30), - createMockBluecatHostRecord("whitespace.example.com", "123.123.123.124", 30), - }, - mockBluecatCNAMEs: &[]api.BluecatCNAMERecord{ - createMockBluecatCNAME("hack.example.com", "bluecatnetworks.com", 30), - }, - mockBluecatTXTs: &[]api.BluecatTXTRecord{ - createMockBluecatTXT("kdb.example.com", "heritage=external-dns,external-dns/owner=default,external-dns/resource=service/openshift-ingress/router-default"), - createMockBluecatTXT("wack.example.com", "hello"), - createMockBluecatTXT("sack.example.com", ""), - }, - } - - provider := newBluecatProvider( - endpoint.NewDomainFilter([]string{"example.com"}), - provider.NewZoneIDFilter([]string{""}), false, client) - - for _, ti := range tests { - err := provider.ApplyChanges(context.Background(), &plan.Changes{Delete: ti.Endpoints}) - if err != nil { - t.Fatal(err) - } - - actual, err := provider.Records(context.Background()) - if err != nil { - t.Fatal(err) - } - validateEndpoints(t, actual, []*endpoint.Endpoint{}) - } -} - -func TestBluecatApplyChangesDeleteWithOwner(t *testing.T) { - client := mockGatewayClient{ - mockBluecatZones: &[]api.BluecatZone{ - createMockBluecatZone("example.com"), - }, - mockBluecatHosts: &[]api.BluecatHostRecord{ - createMockBluecatHostRecord("example.com", "123.123.123.122", 30), - createMockBluecatHostRecord("nginx.example.com", "123.123.123.123", 30), - createMockBluecatHostRecord("whitespace.example.com", "123.123.123.124", 30), - }, - mockBluecatCNAMEs: &[]api.BluecatCNAMERecord{ - createMockBluecatCNAME("hack.example.com", "bluecatnetworks.com", 30), - }, - mockBluecatTXTs: &[]api.BluecatTXTRecord{ - createMockBluecatTXT("kdb.example.com", "heritage=external-dns,external-dns/owner=default,external-dns/resource=service/openshift-ingress/router-default"), - createMockBluecatTXT("wack.example.com", "hello"), - createMockBluecatTXT("sack.example.com", ""), - }, - } - - provider := newBluecatProvider( - endpoint.NewDomainFilter([]string{"example.com"}), - provider.NewZoneIDFilter([]string{""}), false, client) - - for _, ti := range tests { - for _, ep := range ti.Endpoints { - if strings.Contains(ep.Targets.String(), "external-dns") { - owner, err := extractOwnerfromTXTRecord(ep.Targets.String()) - if err != nil { - t.Logf("%v", err) - } else { - t.Logf("Owner %s", owner) - } - } - } - err := provider.ApplyChanges(context.Background(), &plan.Changes{Delete: ti.Endpoints}) - if err != nil { - t.Fatal(err) - } - actual, err := provider.Records(context.Background()) - if err != nil { - t.Fatal(err) - } - validateEndpoints(t, actual, []*endpoint.Endpoint{}) - } -} - -// TODO: ensure findZone method is tested -// TODO: ensure zones method is tested -// TODO: ensure createRecords method is tested -// TODO: ensure deleteRecords method is tested -// TODO: ensure recordSet method is tested - -// TODO: Figure out why recordSet.res is not being set properly -func TestBluecatRecordset(t *testing.T) { - client := mockGatewayClient{ - mockBluecatZones: &[]api.BluecatZone{ - createMockBluecatZone("example.com"), - }, - mockBluecatHosts: &[]api.BluecatHostRecord{ - createMockBluecatHostRecord("example.com", "123.123.123.122", 30), - createMockBluecatHostRecord("nginx.example.com", "123.123.123.123", 30), - createMockBluecatHostRecord("whitespace.example.com", "123.123.123.124", 30), - }, - mockBluecatCNAMEs: &[]api.BluecatCNAMERecord{ - createMockBluecatCNAME("hack.example.com", "bluecatnetworks.com", 30), - }, - mockBluecatTXTs: &[]api.BluecatTXTRecord{ - createMockBluecatTXT("abc.example.com", "hello"), - }, - } - - provider := newBluecatProvider( - endpoint.NewDomainFilter([]string{"example.com"}), - provider.NewZoneIDFilter([]string{""}), false, client) - - // Test txt records for recordSet function - testTxtEndpoint := endpoint.NewEndpoint("abc.example.com", endpoint.RecordTypeTXT, "hello") - txtObj := api.BluecatCreateTXTRecordRequest{ - AbsoluteName: testTxtEndpoint.DNSName, - Text: testTxtEndpoint.Targets[0], - } - txtRecords := []api.BluecatTXTRecord{ - createMockBluecatTXT("abc.example.com", "hello"), - } - expected := bluecatRecordSet{ - obj: &txtObj, - res: &txtRecords, - } - actual, err := provider.recordSet(testTxtEndpoint, true) - if err != nil { - t.Fatal(err) - } - assert.Equal(t, actual.obj, expected.obj) - assert.Equal(t, actual.res, expected.res) - - // Test a records for recordSet function - testHostEndpoint := endpoint.NewEndpoint("whitespace.example.com", endpoint.RecordTypeA, "123.123.123.124") - hostObj := api.BluecatCreateHostRecordRequest{ - AbsoluteName: testHostEndpoint.DNSName, - IP4Address: testHostEndpoint.Targets[0], - } - hostRecords := []api.BluecatHostRecord{ - createMockBluecatHostRecord("whitespace.example.com", "123.123.123.124", 30), - } - hostExpected := bluecatRecordSet{ - obj: &hostObj, - res: &hostRecords, - } - hostActual, err := provider.recordSet(testHostEndpoint, true) - if err != nil { - t.Fatal(err) - } - assert.Equal(t, hostActual.obj, hostExpected.obj) - assert.Equal(t, hostActual.res, hostExpected.res) - - // Test CName records for recordSet function - testCnameEndpoint := endpoint.NewEndpoint("hack.example.com", endpoint.RecordTypeCNAME, "bluecatnetworks.com") - cnameObj := api.BluecatCreateCNAMERecordRequest{ - AbsoluteName: testCnameEndpoint.DNSName, - LinkedRecord: testCnameEndpoint.Targets[0], - } - cnameRecords := []api.BluecatCNAMERecord{ - createMockBluecatCNAME("hack.example.com", "bluecatnetworks.com", 30), - } - cnameExpected := bluecatRecordSet{ - obj: &cnameObj, - res: &cnameRecords, - } - cnameActual, err := provider.recordSet(testCnameEndpoint, true) - if err != nil { - t.Fatal(err) - } - assert.Equal(t, cnameActual.obj, cnameExpected.obj) - assert.Equal(t, cnameActual.res, cnameExpected.res) -} - -func validateEndpoints(t *testing.T, actual, expected []*endpoint.Endpoint) { - assert.True(t, testutils.SameEndpoints(actual, expected), "actual and expected endpoints don't match. %s:%s", actual, expected) -} diff --git a/provider/bluecat/gateway/api.go b/provider/bluecat/gateway/api.go deleted file mode 100644 index d0d8dc560..000000000 --- a/provider/bluecat/gateway/api.go +++ /dev/null @@ -1,583 +0,0 @@ -/* -Copyright 2020 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// TODO: add logging -// TODO: add timeouts -package api - -import ( - "bytes" - "crypto/tls" - "encoding/json" - "io" - "net/http" - "os" - "strings" - - "github.com/pkg/errors" - log "github.com/sirupsen/logrus" -) - -// TODO: Ensure DNS Deploy Type Defaults to no-deploy instead of "" -type BluecatConfig struct { - GatewayHost string `json:"gatewayHost"` - GatewayUsername string `json:"gatewayUsername,omitempty"` - GatewayPassword string `json:"gatewayPassword,omitempty"` - DNSConfiguration string `json:"dnsConfiguration"` - DNSServerName string `json:"dnsServerName"` - DNSDeployType string `json:"dnsDeployType"` - View string `json:"dnsView"` - RootZone string `json:"rootZone"` - SkipTLSVerify bool `json:"skipTLSVerify"` -} - -type GatewayClient interface { - GetBluecatZones(zoneName string) ([]BluecatZone, error) - GetHostRecords(zone string, records *[]BluecatHostRecord) error - GetCNAMERecords(zone string, records *[]BluecatCNAMERecord) error - GetHostRecord(name string, record *BluecatHostRecord) error - GetCNAMERecord(name string, record *BluecatCNAMERecord) error - CreateHostRecord(zone string, req *BluecatCreateHostRecordRequest) error - CreateCNAMERecord(zone string, req *BluecatCreateCNAMERecordRequest) error - DeleteHostRecord(name string, zone string) (err error) - DeleteCNAMERecord(name string, zone string) (err error) - GetTXTRecords(zone string, records *[]BluecatTXTRecord) error - GetTXTRecord(name string, record *BluecatTXTRecord) error - CreateTXTRecord(zone string, req *BluecatCreateTXTRecordRequest) error - DeleteTXTRecord(name string, zone string) error - ServerFullDeploy() error -} - -// GatewayClientConfig defines the configuration for a Bluecat Gateway Client -type GatewayClientConfig struct { - Cookie http.Cookie - Token string - Host string - DNSConfiguration string - View string - RootZone string - DNSServerName string - SkipTLSVerify bool -} - -// BluecatZone defines a zone to hold records -type BluecatZone struct { - ID int `json:"id"` - Name string `json:"name"` - Properties string `json:"properties"` - Type string `json:"type"` -} - -// BluecatHostRecord defines dns Host record -type BluecatHostRecord struct { - ID int `json:"id"` - Name string `json:"name"` - Properties string `json:"properties"` - Type string `json:"type"` -} - -// BluecatCNAMERecord defines dns CNAME record -type BluecatCNAMERecord struct { - ID int `json:"id"` - Name string `json:"name"` - Properties string `json:"properties"` - Type string `json:"type"` -} - -// BluecatTXTRecord defines dns TXT record -type BluecatTXTRecord struct { - ID int `json:"id"` - Name string `json:"name"` - Properties string `json:"properties"` -} - -type BluecatCreateHostRecordRequest struct { - AbsoluteName string `json:"absolute_name"` - IP4Address string `json:"ip4_address"` - TTL int `json:"ttl"` - Properties string `json:"properties"` -} - -type BluecatCreateCNAMERecordRequest struct { - AbsoluteName string `json:"absolute_name"` - LinkedRecord string `json:"linked_record"` - TTL int `json:"ttl"` - Properties string `json:"properties"` -} - -type BluecatCreateTXTRecordRequest struct { - AbsoluteName string `json:"absolute_name"` - Text string `json:"txt"` -} - -type BluecatServerFullDeployRequest struct { - ServerName string `json:"server_name"` -} - -// NewGatewayClient creates and returns a new Bluecat gateway client -func NewGatewayClientConfig(cookie http.Cookie, token, gatewayHost, dnsConfiguration, view, rootZone, dnsServerName string, skipTLSVerify bool) GatewayClientConfig { - // TODO: do not handle defaulting here - // - // Right now the Bluecat gateway doesn't seem to have a way to get the root zone from the API. If the user - // doesn't provide one via the config file we'll assume it's 'com' - if rootZone == "" { - rootZone = "com" - } - return GatewayClientConfig{ - Cookie: cookie, - Token: token, - Host: gatewayHost, - DNSConfiguration: dnsConfiguration, - DNSServerName: dnsServerName, - View: view, - RootZone: rootZone, - SkipTLSVerify: skipTLSVerify, - } -} - -// GetBluecatGatewayToken retrieves a Bluecat Gateway API token. -func GetBluecatGatewayToken(cfg BluecatConfig) (string, http.Cookie, error) { - var username string - if cfg.GatewayUsername != "" { - username = cfg.GatewayUsername - } - if v, ok := os.LookupEnv("BLUECAT_USERNAME"); ok { - username = v - } - - var password string - if cfg.GatewayPassword != "" { - password = cfg.GatewayPassword - } - if v, ok := os.LookupEnv("BLUECAT_PASSWORD"); ok { - password = v - } - - body, err := json.Marshal(map[string]string{ - "username": username, - "password": password, - }) - if err != nil { - return "", http.Cookie{}, errors.Wrap(err, "could not unmarshal credentials for bluecat gateway config") - } - url := cfg.GatewayHost + "/rest_login" - - response, err := executeHTTPRequest(cfg.SkipTLSVerify, http.MethodPost, url, "", bytes.NewBuffer(body), http.Cookie{}) - if err != nil { - return "", http.Cookie{}, errors.Wrap(err, "error obtaining API token from bluecat gateway") - } - defer response.Body.Close() - - responseBody, err := io.ReadAll(response.Body) - if err != nil { - return "", http.Cookie{}, errors.Wrap(err, "failed to read login response from bluecat gateway") - } - - if response.StatusCode != http.StatusOK { - return "", http.Cookie{}, errors.Errorf("got HTTP response code %v, detailed message: %v", response.StatusCode, string(responseBody)) - } - - jsonResponse := map[string]string{} - err = json.Unmarshal(responseBody, &jsonResponse) - if err != nil { - return "", http.Cookie{}, errors.Wrap(err, "error unmarshaling json response (auth) from bluecat gateway") - } - - // Example response: {"access_token": "BAMAuthToken: abc123"} - // We only care about the actual token string - i.e. abc123 - // The gateway also creates a cookie as part of the response. This seems to be the actual auth mechanism, at least - // for now. - return strings.Split(jsonResponse["access_token"], " ")[1], *response.Cookies()[0], nil -} - -func (c GatewayClientConfig) GetBluecatZones(zoneName string) ([]BluecatZone, error) { - zonePath := expandZone(zoneName) - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodGet, url, c.Token, nil, c.Cookie) - if err != nil { - return nil, errors.Wrapf(err, "error requesting zones from gateway: %v, %v", url, zoneName) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusOK { - return nil, errors.Errorf("received http %v requesting zones from gateway in zone %v", response.StatusCode, zoneName) - } - - zones := []BluecatZone{} - json.NewDecoder(response.Body).Decode(&zones) - - // Bluecat Gateway only returns subzones one level deeper than the provided zone - // so this recursion is needed to traverse subzones until none are returned - for _, zone := range zones { - zoneProps := SplitProperties(zone.Properties) - subZones, err := c.GetBluecatZones(zoneProps["absoluteName"]) - if err != nil { - return nil, errors.Wrapf(err, "error retrieving subzones from gateway: %v", zoneName) - } - zones = append(zones, subZones...) - } - - return zones, nil -} - -func (c GatewayClientConfig) GetHostRecords(zone string, records *[]BluecatHostRecord) error { - zonePath := expandZone(zone) - // Remove the trailing 'zones/' - zonePath = strings.TrimSuffix(zonePath, "zones/") - - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath + "host_records/" - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodGet, url, c.Token, nil, c.Cookie) - if err != nil { - return errors.Wrapf(err, "error requesting host records from gateway in zone %v", zone) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusOK { - return errors.Errorf("received http %v requesting host records from gateway in zone %v", response.StatusCode, zone) - } - - json.NewDecoder(response.Body).Decode(records) - log.Debugf("Get Host Records Response: %v", records) - - return nil -} - -func (c GatewayClientConfig) GetCNAMERecords(zone string, records *[]BluecatCNAMERecord) error { - zonePath := expandZone(zone) - // Remove the trailing 'zones/' - zonePath = strings.TrimSuffix(zonePath, "zones/") - - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath + "cname_records/" - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodGet, url, c.Token, nil, c.Cookie) - if err != nil { - return errors.Wrapf(err, "error retrieving cname records from gateway in zone %v", zone) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusOK { - return errors.Errorf("received http %v requesting cname records from gateway in zone %v", response.StatusCode, zone) - } - - json.NewDecoder(response.Body).Decode(records) - log.Debugf("Get CName Records Response: %v", records) - - return nil -} - -func (c GatewayClientConfig) GetTXTRecords(zone string, records *[]BluecatTXTRecord) error { - zonePath := expandZone(zone) - // Remove the trailing 'zones/' - zonePath = strings.TrimSuffix(zonePath, "zones/") - - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath + "text_records/" - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodGet, url, c.Token, nil, c.Cookie) - if err != nil { - return errors.Wrapf(err, "error retrieving txt records from gateway in zone %v", zone) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusOK { - return errors.Errorf("received http %v requesting txt records from gateway in zone %v", response.StatusCode, zone) - } - - log.Debugf("Get Txt Records response: %v", response) - json.NewDecoder(response.Body).Decode(records) - log.Debugf("Get TXT Records Body: %v", records) - - return nil -} - -func (c GatewayClientConfig) GetHostRecord(name string, record *BluecatHostRecord) error { - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + - "/views/" + c.View + "/" + - "host_records/" + name + "/" - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodGet, url, c.Token, nil, c.Cookie) - if err != nil { - return errors.Wrapf(err, "error retrieving host record %v from gateway", name) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusOK { - return errors.Errorf("received http %v while retrieving host record %v from gateway", response.StatusCode, name) - } - - json.NewDecoder(response.Body).Decode(record) - log.Debugf("Get Host Record Response: %v", record) - return nil -} - -func (c GatewayClientConfig) GetCNAMERecord(name string, record *BluecatCNAMERecord) error { - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + - "/views/" + c.View + "/" + - "cname_records/" + name + "/" - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodGet, url, c.Token, nil, c.Cookie) - if err != nil { - return errors.Wrapf(err, "error retrieving cname record %v from gateway", name) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusOK { - return errors.Errorf("received http %v while retrieving cname record %v from gateway", response.StatusCode, name) - } - - json.NewDecoder(response.Body).Decode(record) - log.Debugf("Get CName Record Response: %v", record) - return nil -} - -func (c GatewayClientConfig) GetTXTRecord(name string, record *BluecatTXTRecord) error { - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + - "/views/" + c.View + "/" + - "text_records/" + name + "/" - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodGet, url, c.Token, nil, c.Cookie) - if err != nil { - return errors.Wrapf(err, "error retrieving record %v from gateway", name) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusOK { - return errors.Errorf("received http %v while retrieving txt record %v from gateway", response.StatusCode, name) - } - - json.NewDecoder(response.Body).Decode(record) - log.Debugf("Get TXT Record Response: %v", record) - - return nil -} - -func (c GatewayClientConfig) CreateHostRecord(zone string, req *BluecatCreateHostRecordRequest) error { - zonePath := expandZone(zone) - // Remove the trailing 'zones/' - zonePath = strings.TrimSuffix(zonePath, "zones/") - - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath + "host_records/" - body, err := json.Marshal(req) - if err != nil { - return errors.Wrap(err, "could not marshal body for create host record") - } - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodPost, url, c.Token, bytes.NewBuffer(body), c.Cookie) - if err != nil { - return errors.Wrapf(err, "error creating host record %v in gateway", req.AbsoluteName) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusCreated { - return errors.Errorf("received http %v while creating host record %v in gateway", response.StatusCode, req.AbsoluteName) - } - - return nil -} - -func (c GatewayClientConfig) CreateCNAMERecord(zone string, req *BluecatCreateCNAMERecordRequest) error { - zonePath := expandZone(zone) - // Remove the trailing 'zones/' - zonePath = strings.TrimSuffix(zonePath, "zones/") - - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath + "cname_records/" - body, err := json.Marshal(req) - if err != nil { - return errors.Wrap(err, "could not marshal body for create cname record") - } - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodPost, url, c.Token, bytes.NewBuffer(body), c.Cookie) - if err != nil { - return errors.Wrapf(err, "error creating cname record %v in gateway", req.AbsoluteName) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusCreated { - return errors.Errorf("received http %v while creating cname record %v to alias %v in gateway", response.StatusCode, req.AbsoluteName, req.LinkedRecord) - } - - return nil -} - -func (c GatewayClientConfig) CreateTXTRecord(zone string, req *BluecatCreateTXTRecordRequest) error { - zonePath := expandZone(zone) - // Remove the trailing 'zones/' - zonePath = strings.TrimSuffix(zonePath, "zones/") - - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath + "text_records/" - body, err := json.Marshal(req) - if err != nil { - return errors.Wrap(err, "could not marshal body for create txt record") - } - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodPost, url, c.Token, bytes.NewBuffer(body), c.Cookie) - if err != nil { - return errors.Wrapf(err, "error creating txt record %v in gateway", req.AbsoluteName) - } - defer response.Body.Close() - - if response.StatusCode != http.StatusCreated { - return errors.Errorf("received http %v while creating txt record %v in gateway", response.StatusCode, req.AbsoluteName) - } - - return nil -} - -func (c GatewayClientConfig) DeleteHostRecord(name string, zone string) (err error) { - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + - "/views/" + c.View + "/" + - "host_records/" + name + "." + zone + "/" - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodDelete, url, c.Token, nil, c.Cookie) - if err != nil { - return errors.Wrapf(err, "error deleting host record %v from gateway", name) - } - - if response.StatusCode != http.StatusNoContent { - return errors.Errorf("received http %v while deleting host record %v from gateway", response.StatusCode, name) - } - - return nil -} - -func (c GatewayClientConfig) DeleteCNAMERecord(name string, zone string) (err error) { - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + - "/views/" + c.View + "/" + - "cname_records/" + name + "." + zone + "/" - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodDelete, url, c.Token, nil, c.Cookie) - if err != nil { - return errors.Wrapf(err, "error deleting cname record %v from gateway", name) - } - if response.StatusCode != http.StatusNoContent { - return errors.Errorf("received http %v while deleting cname record %v from gateway", response.StatusCode, name) - } - - return nil -} - -func (c GatewayClientConfig) DeleteTXTRecord(name string, zone string) error { - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + - "/views/" + c.View + "/" + - "text_records/" + name + "." + zone + "/" - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodDelete, url, c.Token, nil, c.Cookie) - if err != nil { - return errors.Wrapf(err, "error deleting txt record %v from gateway", name) - } - if response.StatusCode != http.StatusNoContent { - return errors.Errorf("received http %v while deleting txt record %v from gateway", response.StatusCode, name) - } - - return nil -} - -func (c GatewayClientConfig) ServerFullDeploy() error { - log.Infof("Executing full deploy on server %s", c.DNSServerName) - url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/server/full_deploy/" - requestBody := BluecatServerFullDeployRequest{ - ServerName: c.DNSServerName, - } - - body, err := json.Marshal(requestBody) - if err != nil { - return errors.Wrap(err, "could not marshal body for server full deploy") - } - - response, err := executeHTTPRequest(c.SkipTLSVerify, http.MethodPost, url, c.Token, bytes.NewBuffer(body), c.Cookie) - if err != nil { - return errors.Wrap(err, "error executing full deploy") - } - - if response.StatusCode != http.StatusCreated { - responseBody, err := io.ReadAll(response.Body) - if err != nil { - return errors.Wrap(err, "failed to read full deploy response body") - } - return errors.Errorf("got HTTP response code %v, detailed message: %v", response.StatusCode, string(responseBody)) - } - - return nil -} - -// SplitProperties is a helper function to break a '|' separated string into key/value pairs -// i.e. "foo=bar|baz=mop" -func SplitProperties(props string) map[string]string { - propMap := make(map[string]string) - // remove trailing | character before we split - props = strings.TrimSuffix(props, "|") - - splits := strings.Split(props, "|") - for _, pair := range splits { - items := strings.Split(pair, "=") - propMap[items[0]] = items[1] - } - - return propMap -} - -// IsValidDNSDeployType validates the deployment type provided by a users configuration is supported by the Bluecat Provider. -func IsValidDNSDeployType(deployType string) bool { - validDNSDeployTypes := []string{"no-deploy", "full-deploy"} - for _, t := range validDNSDeployTypes { - if t == deployType { - return true - } - } - return false -} - -// expandZone takes an absolute domain name such as 'example.com' and returns a zone hierarchy used by Bluecat Gateway, -// such as '/zones/com/zones/example/zones/' -func expandZone(zone string) string { - ze := "zones/" - parts := strings.Split(zone, ".") - if len(parts) > 1 { - last := len(parts) - 1 - for i := range parts { - ze = ze + parts[last-i] + "/zones/" - } - } else { - ze = ze + zone + "/zones/" - } - return ze -} - -func executeHTTPRequest(skipTLSVerify bool, method, url, token string, body io.Reader, cookie http.Cookie) (*http.Response, error) { - httpClient := &http.Client{ - Transport: &http.Transport{ - Proxy: http.ProxyFromEnvironment, - TLSClientConfig: &tls.Config{ - InsecureSkipVerify: skipTLSVerify, - }, - }, - } - request, err := http.NewRequest(method, url, body) - if err != nil { - return nil, err - } - if request.Method == http.MethodPost { - request.Header.Add("Content-Type", "application/json") - } - request.Header.Add("Accept", "application/json") - - if token != "" { - request.Header.Add("Authorization", "Basic "+token) - } - request.AddCookie(&cookie) - - return httpClient.Do(request) -} diff --git a/provider/bluecat/gateway/api_test.go b/provider/bluecat/gateway/api_test.go deleted file mode 100644 index 10ebd51b5..000000000 --- a/provider/bluecat/gateway/api_test.go +++ /dev/null @@ -1,228 +0,0 @@ -/* -Copyright 2020 The Kubernetes Authors. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package api - -import ( - "encoding/json" - "io" - "net/http" - "net/http/httptest" - "strings" - "testing" - - "github.com/google/go-cmp/cmp" -) - -func TestBluecatNewGatewayClient(t *testing.T) { - testCookie := http.Cookie{Name: "testCookie", Value: "exampleCookie"} - testToken := "exampleToken" - testgateWayHost := "exampleHost" - testDNSConfiguration := "exampleDNSConfiguration" - testDNSServer := "exampleServer" - testView := "testView" - testZone := "example.com" - testVerify := true - - client := NewGatewayClientConfig(testCookie, testToken, testgateWayHost, testDNSConfiguration, testView, testZone, testDNSServer, testVerify) - - if client.Cookie.Value != testCookie.Value || client.Cookie.Name != testCookie.Name || client.Token != testToken || client.Host != testgateWayHost || client.DNSConfiguration != testDNSConfiguration || client.View != testView || client.RootZone != testZone || client.SkipTLSVerify != testVerify { - t.Fatal("Client values dont match") - } -} - -func TestBluecatExpandZones(t *testing.T) { - tests := map[string]struct { - input string - want string - }{ - "with subdomain": {input: "example.com", want: "zones/com/zones/example/zones/"}, - "only top level domain": {input: "com", want: "zones/com/zones/"}, - } - - for name, tc := range tests { - t.Run(name, func(t *testing.T) { - got := expandZone(tc.input) - diff := cmp.Diff(tc.want, got) - if diff != "" { - t.Fatalf(diff) - } - }) - } -} - -func TestBluecatValidDeployTypes(t *testing.T) { - validTypes := []string{"no-deploy", "full-deploy"} - invalidTypes := []string{"anything-else"} - for _, i := range validTypes { - if !IsValidDNSDeployType(i) { - t.Fatalf("%s should be a valid deploy type", i) - } - } - for _, i := range invalidTypes { - if IsValidDNSDeployType(i) { - t.Fatalf("%s should be a invalid deploy type", i) - } - } -} - -// TODO: Add error checking in case "properties" are not properly formatted -// Example test case... "invalid": {input: "abcde", want: map[string]string{}, err: InvalidProperty}, -func TestBluecatSplitProperties(t *testing.T) { - tests := map[string]struct { - input string - want map[string]string - }{ - "simple": {input: "ab=cd|ef=gh", want: map[string]string{"ab": "cd", "ef": "gh"}}, - } - - for name, tc := range tests { - t.Run(name, func(t *testing.T) { - got := SplitProperties(tc.input) - diff := cmp.Diff(tc.want, got) - if diff != "" { - t.Fatalf(diff) - } - }) - } -} - -func TestCreateTXTRecord(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - req := BluecatCreateTXTRecordRequest{} - requestBodyBytes, _ := io.ReadAll(r.Body) - err := json.Unmarshal(requestBodyBytes, &req) - if err != nil { - t.Fatalf("failed to unmarshal body for server full deploy") - } - if req.AbsoluteName == "alreadyexists.test.com" { - w.WriteHeader(http.StatusInternalServerError) - } else { - w.WriteHeader(http.StatusCreated) - } - })) - defer server.Close() - - tests := map[string]struct { - config GatewayClientConfig - zone string - record BluecatCreateTXTRecordRequest - expectError bool - }{ - "simple-success": {GatewayClientConfig{Host: server.URL}, "test.com", BluecatCreateTXTRecordRequest{AbsoluteName: "my.test.com", Text: "here is my text"}, false}, - "simple-failure": {GatewayClientConfig{Host: server.URL}, "test.com", BluecatCreateTXTRecordRequest{AbsoluteName: "alreadyexists.test.com", Text: "here is my text"}, true}, - } - - for name, tc := range tests { - t.Run(name, func(t *testing.T) { - got := tc.config.CreateTXTRecord(tc.zone, &tc.record) - if got != nil && !tc.expectError { - t.Fatalf("expected error %v, received error %v", tc.expectError, got) - } - }) - } -} - -func TestGetTXTRecord(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if strings.Contains(r.RequestURI, "doesnotexist") { - w.WriteHeader(http.StatusNotFound) - } else { - w.WriteHeader(http.StatusOK) - } - })) - defer server.Close() - - tests := map[string]struct { - config GatewayClientConfig - name string - expectError bool - }{ - "simple-success": {GatewayClientConfig{Host: server.URL}, "mytxtrecord", false}, - "simple-failure": {GatewayClientConfig{Host: server.URL}, "doesnotexist", true}, - } - - for name, tc := range tests { - t.Run(name, func(t *testing.T) { - record := BluecatTXTRecord{} - got := tc.config.GetTXTRecord(tc.name, &record) - if got != nil && !tc.expectError { - t.Fatalf("expected error %v, received error %v", tc.expectError, got) - } - }) - } -} - -func TestDeleteTXTRecord(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if strings.Contains(r.RequestURI, "doesnotexist") { - w.WriteHeader(http.StatusBadRequest) - } else { - w.WriteHeader(http.StatusNoContent) - } - })) - defer server.Close() - - tests := map[string]struct { - config GatewayClientConfig - name string - zone string - expectError bool - }{ - "simple-success": {GatewayClientConfig{Host: server.URL}, "todelete", "test.com", false}, - "simple-failure": {GatewayClientConfig{Host: server.URL}, "doesnotexist", "test.com", true}, - } - - for name, tc := range tests { - t.Run(name, func(t *testing.T) { - got := tc.config.DeleteTXTRecord(tc.name, tc.zone) - if got != nil && !tc.expectError { - t.Fatalf("expected error %v, received error %v", tc.expectError, got) - } - }) - } -} - -func TestServerFullDeploy(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - req := BluecatServerFullDeployRequest{} - requestBodyBytes, _ := io.ReadAll(r.Body) - err := json.Unmarshal(requestBodyBytes, &req) - if err != nil { - t.Fatalf("failed to unmarshal body for server full deploy") - } - if req.ServerName == "serverdoesnotexist" { - w.WriteHeader(http.StatusNotFound) - } else { - w.WriteHeader(http.StatusCreated) - } - })) - defer server.Close() - - tests := map[string]struct { - config GatewayClientConfig - expectError bool - }{ - "simple-success": {GatewayClientConfig{Host: server.URL, DNSServerName: "myserver"}, false}, - "simple-failure": {GatewayClientConfig{Host: server.URL, DNSServerName: "serverdoesnotexist"}, true}, - } - - for name, tc := range tests { - t.Run(name, func(t *testing.T) { - got := tc.config.ServerFullDeploy() - if got != nil && !tc.expectError { - t.Fatalf("expected error %v, received error %v", tc.expectError, got) - } - }) - } -} diff --git a/provider/cached_provider.go b/provider/cached_provider.go new file mode 100644 index 000000000..6009c77d7 --- /dev/null +++ b/provider/cached_provider.go @@ -0,0 +1,110 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package provider + +import ( + "context" + "sync" + "time" + + "github.com/prometheus/client_golang/prometheus" + log "github.com/sirupsen/logrus" + + "sigs.k8s.io/external-dns/endpoint" + "sigs.k8s.io/external-dns/plan" +) + +var ( + cachedRecordsCallsTotal = prometheus.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "external_dns", + Subsystem: "provider", + Name: "cache_records_calls", + Help: "Number of calls to the provider cache Records list.", + }, + []string{ + "from_cache", + }, + ) + cachedApplyChangesCallsTotal = prometheus.NewCounter( + prometheus.CounterOpts{ + Namespace: "external_dns", + Subsystem: "provider", + Name: "cache_apply_changes_calls", + Help: "Number of calls to the provider cache ApplyChanges.", + }, + ) + + registerCacheProviderMetrics = sync.Once{} +) + +type CachedProvider struct { + Provider + RefreshDelay time.Duration + lastRead time.Time + cache []*endpoint.Endpoint +} + +func NewCachedProvider(provider Provider, refreshDelay time.Duration) *CachedProvider { + registerCacheProviderMetrics.Do(func() { + prometheus.MustRegister(cachedRecordsCallsTotal) + }) + return &CachedProvider{ + Provider: provider, + RefreshDelay: refreshDelay, + } +} + +func (c *CachedProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { + if c.needRefresh() { + log.Info("Records cache provider: refreshing records list cache") + records, err := c.Provider.Records(ctx) + if err != nil { + c.cache = nil + return nil, err + } + c.cache = records + c.lastRead = time.Now() + cachedRecordsCallsTotal.WithLabelValues("false").Inc() + } else { + log.Debug("Records cache provider: using records list from cache") + cachedRecordsCallsTotal.WithLabelValues("true").Inc() + } + return c.cache, nil +} +func (c *CachedProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error { + if !changes.HasChanges() { + log.Info("Records cache provider: no changes to be applied") + return nil + } + c.Reset() + cachedApplyChangesCallsTotal.Inc() + return c.Provider.ApplyChanges(ctx, changes) +} + +func (c *CachedProvider) Reset() { + c.cache = nil + c.lastRead = time.Time{} +} + +func (c *CachedProvider) needRefresh() bool { + if c.cache == nil { + log.Debug("Records cache provider is not initialized") + return true + } + log.Debug("Records cache last Read: ", c.lastRead, "expiration: ", c.RefreshDelay, " provider expiration:", c.lastRead.Add(c.RefreshDelay), "expired: ", time.Now().After(c.lastRead.Add(c.RefreshDelay))) + return time.Now().After(c.lastRead.Add(c.RefreshDelay)) +} diff --git a/provider/cached_provider_test.go b/provider/cached_provider_test.go new file mode 100644 index 000000000..4e358066f --- /dev/null +++ b/provider/cached_provider_test.go @@ -0,0 +1,206 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package provider + +import ( + "context" + "errors" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "sigs.k8s.io/external-dns/endpoint" + "sigs.k8s.io/external-dns/plan" +) + +type testProviderFunc struct { + records func(ctx context.Context) ([]*endpoint.Endpoint, error) + applyChanges func(ctx context.Context, changes *plan.Changes) error + propertyValuesEqual func(name string, previous string, current string) bool + adjustEndpoints func(endpoints []*endpoint.Endpoint) ([]*endpoint.Endpoint, error) + getDomainFilter func() endpoint.DomainFilterInterface +} + +func (p *testProviderFunc) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { + return p.records(ctx) +} + +func (p *testProviderFunc) ApplyChanges(ctx context.Context, changes *plan.Changes) error { + return p.applyChanges(ctx, changes) +} + +func (p *testProviderFunc) PropertyValuesEqual(name string, previous string, current string) bool { + return p.propertyValuesEqual(name, previous, current) +} + +func (p *testProviderFunc) AdjustEndpoints(endpoints []*endpoint.Endpoint) ([]*endpoint.Endpoint, error) { + return p.adjustEndpoints(endpoints) +} + +func (p *testProviderFunc) GetDomainFilter() endpoint.DomainFilterInterface { + return p.getDomainFilter() +} + +func recordsNotCalled(t *testing.T) func(ctx context.Context) ([]*endpoint.Endpoint, error) { + return func(ctx context.Context) ([]*endpoint.Endpoint, error) { + t.Errorf("unexpected call to Records") + return nil, nil + } +} + +func applyChangesNotCalled(t *testing.T) func(ctx context.Context, changes *plan.Changes) error { + return func(ctx context.Context, changes *plan.Changes) error { + t.Errorf("unexpected call to ApplyChanges") + return nil + } +} + +func propertyValuesEqualNotCalled(t *testing.T) func(name string, previous string, current string) bool { + return func(name string, previous string, current string) bool { + t.Errorf("unexpected call to PropertyValuesEqual") + return false + } +} + +func adjustEndpointsNotCalled(t *testing.T) func(endpoints []*endpoint.Endpoint) ([]*endpoint.Endpoint, error) { + return func(endpoints []*endpoint.Endpoint) ([]*endpoint.Endpoint, error) { + t.Errorf("unexpected call to AdjustEndpoints") + return endpoints, errors.New("unexpected call to AdjustEndpoints") + } +} + +func newTestProviderFunc(t *testing.T) *testProviderFunc { + return &testProviderFunc{ + records: recordsNotCalled(t), + applyChanges: applyChangesNotCalled(t), + propertyValuesEqual: propertyValuesEqualNotCalled(t), + adjustEndpoints: adjustEndpointsNotCalled(t), + } +} + +func TestCachedProviderCallsProviderOnFirstCall(t *testing.T) { + testProvider := newTestProviderFunc(t) + testProvider.records = func(ctx context.Context) ([]*endpoint.Endpoint, error) { + return []*endpoint.Endpoint{{DNSName: "domain.fqdn"}}, nil + } + provider := CachedProvider{ + Provider: testProvider, + } + endpoints, err := provider.Records(context.Background()) + assert.NoError(t, err) + require.NotNil(t, endpoints) + require.Len(t, endpoints, 1) + require.NotNil(t, endpoints[0]) + assert.Equal(t, "domain.fqdn", endpoints[0].DNSName) +} + +func TestCachedProviderUsesCacheWhileValid(t *testing.T) { + testProvider := newTestProviderFunc(t) + testProvider.records = func(ctx context.Context) ([]*endpoint.Endpoint, error) { + return []*endpoint.Endpoint{{DNSName: "domain.fqdn"}}, nil + } + provider := CachedProvider{ + RefreshDelay: 30 * time.Second, + Provider: testProvider, + } + _, err := provider.Records(context.Background()) + require.NoError(t, err) + + t.Run("With consecutive calls within the caching time frame", func(t *testing.T) { + testProvider.records = recordsNotCalled(t) + endpoints, err := provider.Records(context.Background()) + assert.NoError(t, err) + require.NotNil(t, endpoints) + require.Len(t, endpoints, 1) + require.NotNil(t, endpoints[0]) + assert.Equal(t, "domain.fqdn", endpoints[0].DNSName) + }) + + t.Run("When the caching time frame is exceeded", func(t *testing.T) { + testProvider.records = func(ctx context.Context) ([]*endpoint.Endpoint, error) { + return []*endpoint.Endpoint{{DNSName: "new.domain.fqdn"}}, nil + } + provider.lastRead = time.Now().Add(-20 * time.Minute) + endpoints, err := provider.Records(context.Background()) + assert.NoError(t, err) + require.NotNil(t, endpoints) + require.Len(t, endpoints, 1) + require.NotNil(t, endpoints[0]) + assert.Equal(t, "new.domain.fqdn", endpoints[0].DNSName) + }) +} + +func TestCachedProviderForcesCacheRefreshOnUpdate(t *testing.T) { + testProvider := newTestProviderFunc(t) + testProvider.records = func(ctx context.Context) ([]*endpoint.Endpoint, error) { + return []*endpoint.Endpoint{{DNSName: "domain.fqdn"}}, nil + } + provider := CachedProvider{ + RefreshDelay: 30 * time.Second, + Provider: testProvider, + } + _, err := provider.Records(context.Background()) + require.NoError(t, err) + + t.Run("When empty changes are applied", func(t *testing.T) { + testProvider.records = recordsNotCalled(t) + testProvider.applyChanges = func(ctx context.Context, changes *plan.Changes) error { + return nil + } + err := provider.ApplyChanges(context.Background(), &plan.Changes{}) + assert.NoError(t, err) + t.Run("Next call to Records is cached", func(t *testing.T) { + testProvider.applyChanges = applyChangesNotCalled(t) + testProvider.records = func(ctx context.Context) ([]*endpoint.Endpoint, error) { + return []*endpoint.Endpoint{{DNSName: "new.domain.fqdn"}}, nil + } + endpoints, err := provider.Records(context.Background()) + + assert.NoError(t, err) + require.NotNil(t, endpoints) + require.Len(t, endpoints, 1) + require.NotNil(t, endpoints[0]) + assert.Equal(t, "domain.fqdn", endpoints[0].DNSName) + }) + }) + + t.Run("When changes are applied", func(t *testing.T) { + testProvider.records = recordsNotCalled(t) + testProvider.applyChanges = func(ctx context.Context, changes *plan.Changes) error { + return nil + } + err := provider.ApplyChanges(context.Background(), &plan.Changes{ + Create: []*endpoint.Endpoint{ + {DNSName: "hello.world"}, + }, + }) + assert.NoError(t, err) + t.Run("Next call to Records is not cached", func(t *testing.T) { + testProvider.applyChanges = applyChangesNotCalled(t) + testProvider.records = func(ctx context.Context) ([]*endpoint.Endpoint, error) { + return []*endpoint.Endpoint{{DNSName: "new.domain.fqdn"}}, nil + } + endpoints, err := provider.Records(context.Background()) + + assert.NoError(t, err) + require.NotNil(t, endpoints) + require.Len(t, endpoints, 1) + require.NotNil(t, endpoints[0]) + assert.Equal(t, "new.domain.fqdn", endpoints[0].DNSName) + }) + }) +} diff --git a/provider/dyn/dyn.go b/provider/dyn/dyn.go deleted file mode 100644 index 4b5725392..000000000 --- a/provider/dyn/dyn.go +++ /dev/null @@ -1,702 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dyn - -import ( - "context" - "fmt" - "os" - "strconv" - "strings" - "time" - - log "github.com/sirupsen/logrus" - - "github.com/nesv/go-dynect/dynect" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" - "sigs.k8s.io/external-dns/provider" - dynsoap "sigs.k8s.io/external-dns/provider/dyn/soap" -) - -const ( - // 10 minutes default timeout if not configured using flags - dynDefaultTTL = 600 - - // when rate limit is hit retry up to 5 times after sleep 1m between retries - dynMaxRetriesOnErrRateLimited = 5 - - // two consecutive bad logins happen at least this many seconds apart - // While it is easy to get the username right, misconfiguring the password - // can get account blocked. Exit(1) is not a good solution - // as k8s will restart the pod and another login attempt will be made - badLoginMinIntervalSeconds = 30 * 60 - - // this prefix must be stripped from resource links before feeding them to dynect.Client.Do() - restAPIPrefix = "/REST/" -) - -func unixNow() int64 { - return time.Now().Unix() -} - -// DynConfig hold connection parameters to dyn.com and internal state -type DynConfig struct { - DomainFilter endpoint.DomainFilter - ZoneIDFilter provider.ZoneIDFilter - DryRun bool - CustomerName string - Username string - Password string - MinTTLSeconds int - AppVersion string - DynVersion string -} - -// ZoneSnapshot stores a single recordset for a zone for a single serial -type ZoneSnapshot struct { - serials map[string]int - endpoints map[string][]*endpoint.Endpoint -} - -// GetRecordsForSerial retrieves from memory the last known recordset for the (zone, serial) tuple -func (snap *ZoneSnapshot) GetRecordsForSerial(zone string, serial int) []*endpoint.Endpoint { - lastSerial, ok := snap.serials[zone] - if !ok { - // no mapping - return nil - } - - if lastSerial != serial { - // outdated mapping - return nil - } - - endpoints, ok := snap.endpoints[zone] - if !ok { - // probably a bug - return nil - } - - return endpoints -} - -// StoreRecordsForSerial associates a result set with a (zone, serial) -func (snap *ZoneSnapshot) StoreRecordsForSerial(zone string, serial int, records []*endpoint.Endpoint) { - snap.serials[zone] = serial - snap.endpoints[zone] = records -} - -// DynProvider is the actual interface impl. -type dynProviderState struct { - provider.BaseProvider - DynConfig - LastLoginErrorTime int64 - - ZoneSnapshot *ZoneSnapshot -} - -// ZoneChange is missing from dynect: https://help.dyn.com/get-zone-changeset-api/ -type ZoneChange struct { - ID int `json:"id"` - UserID int `json:"user_id"` - Zone string `json:"zone"` - FQDN string `json:"FQDN"` - Serial int `json:"serial"` - TTL int `json:"ttl"` - Type string `json:"rdata_type"` - RData dynect.DataBlock `json:"rdata"` -} - -// ZoneChangesResponse is missing from dynect: https://help.dyn.com/get-zone-changeset-api/ -type ZoneChangesResponse struct { - dynect.ResponseBlock - Data []ZoneChange `json:"data"` -} - -// ZonePublishRequest is missing from dynect but the notes field is a nice place to let -// external-dns report some internal info during commit -type ZonePublishRequest struct { - Publish bool `json:"publish"` - Notes string `json:"notes"` -} - -// ZonePublishResponse holds the status after publish -type ZonePublishResponse struct { - dynect.ResponseBlock - Data map[string]interface{} `json:"data"` -} - -// NewDynProvider initializes a new Dyn Provider. -func NewDynProvider(config DynConfig) (provider.Provider, error) { - return &dynProviderState{ - DynConfig: config, - ZoneSnapshot: &ZoneSnapshot{ - endpoints: map[string][]*endpoint.Endpoint{}, - serials: map[string]int{}, - }, - }, nil -} - -// filterAndFixLinks removes from `links` all the records we don't care about -// and strops the /REST/ prefix -func filterAndFixLinks(links []string, filter endpoint.DomainFilter) []string { - var result []string - for _, link := range links { - // link looks like /REST/CNAMERecord/acme.com/exchange.acme.com/349386875 - - // strip /REST/ - link = strings.TrimPrefix(link, restAPIPrefix) - - // simply ignore all record types we don't care about - if !strings.HasPrefix(link, endpoint.RecordTypeA) && - !strings.HasPrefix(link, endpoint.RecordTypeCNAME) && - !strings.HasPrefix(link, endpoint.RecordTypeTXT) { - continue - } - - // strip ID suffix - domain := link[0:strings.LastIndexByte(link, '/')] - // strip zone prefix - domain = domain[strings.LastIndexByte(domain, '/')+1:] - if filter.Match(domain) { - result = append(result, link) - } - } - - return result -} - -func fixMissingTTL(ttl endpoint.TTL, minTTLSeconds int) string { - i := dynDefaultTTL - if ttl.IsConfigured() { - if int(ttl) < minTTLSeconds { - i = minTTLSeconds - } else { - i = int(ttl) - } - } - - return strconv.Itoa(i) -} - -// merge produces a single list of records that can be used as a replacement. -// Dyn allows to replace all records with a single call -// Invariant: the result contains only elements from the updateNew parameter -func merge(updateOld, updateNew []*endpoint.Endpoint) []*endpoint.Endpoint { - findMatch := func(template *endpoint.Endpoint) *endpoint.Endpoint { - for _, new := range updateNew { - if template.DNSName == new.DNSName && - template.RecordType == new.RecordType { - return new - } - } - return nil - } - - var result []*endpoint.Endpoint - for _, old := range updateOld { - matchingNew := findMatch(old) - if matchingNew == nil { - // no match, shouldn't happen - continue - } - - if !matchingNew.Targets.Same(old.Targets) { - // new target: always update, TTL will be overwritten too if necessary - result = append(result, matchingNew) - continue - } - - if matchingNew.RecordTTL != 0 && matchingNew.RecordTTL != old.RecordTTL { - // same target, but new non-zero TTL set in k8s, must update - // probably would happen only if there is a bug in the code calling the provider - result = append(result, matchingNew) - } - } - - return result -} - -func apiRetryLoop(f func() error) error { - var err error - for i := 0; i < dynMaxRetriesOnErrRateLimited; i++ { - err = f() - if err == nil || err != dynect.ErrRateLimited { - // success or not retryable error - return err - } - - // https://help.dyn.com/managed-dns-api-rate-limit/ - log.Debugf("Rate limit has been hit, sleeping for 1m (%d/%d)", i, dynMaxRetriesOnErrRateLimited) - time.Sleep(1 * time.Minute) - } - - return err -} - -func (d *dynProviderState) allRecordsToEndpoints(records *dynsoap.GetAllRecordsResponseType) []*endpoint.Endpoint { - result := []*endpoint.Endpoint{} - // Convert each record to an endpoint - - // Process A Records - for _, rec := range records.Data.A_records { - ep := &endpoint.Endpoint{ - DNSName: rec.Fqdn, - RecordTTL: endpoint.TTL(rec.Ttl), - RecordType: rec.Record_type, - Targets: endpoint.Targets{rec.Rdata.Address}, - } - log.Debugf("A record: %v", *ep) - result = append(result, ep) - } - - // Process CNAME Records - for _, rec := range records.Data.Cname_records { - ep := &endpoint.Endpoint{ - DNSName: rec.Fqdn, - RecordTTL: endpoint.TTL(rec.Ttl), - RecordType: rec.Record_type, - Targets: endpoint.Targets{strings.TrimSuffix(rec.Rdata.Cname, ".")}, - } - log.Debugf("CNAME record: %v", *ep) - result = append(result, ep) - } - - // Process TXT Records - for _, rec := range records.Data.Txt_records { - ep := &endpoint.Endpoint{ - DNSName: rec.Fqdn, - RecordTTL: endpoint.TTL(rec.Ttl), - RecordType: rec.Record_type, - Targets: endpoint.Targets{rec.Rdata.Txtdata}, - } - log.Debugf("TXT record: %v", *ep) - result = append(result, ep) - } - - return result -} - -func errorOrValue(err error, value interface{}) interface{} { - if err == nil { - return value - } - - return err -} - -// endpointToRecord puts the Target of an Endpoint in the correct field of DataBlock. -// See DataBlock comments for more info -func endpointToRecord(ep *endpoint.Endpoint) *dynect.DataBlock { - result := dynect.DataBlock{} - - if ep.RecordType == endpoint.RecordTypeA { - result.Address = ep.Targets[0] - } else if ep.RecordType == endpoint.RecordTypeCNAME { - result.CName = ep.Targets[0] - } else if ep.RecordType == endpoint.RecordTypeTXT { - result.TxtData = ep.Targets[0] - } - - return &result -} - -func (d *dynProviderState) fetchZoneSerial(client *dynect.Client, zone string) (int, error) { - var resp dynect.ZoneResponse - - err := client.Do("GET", fmt.Sprintf("Zone/%s", zone), nil, &resp) - if err != nil { - return 0, err - } - - return resp.Data.Serial, nil -} - -// Use SOAP to fetch all records with a single call -func (d *dynProviderState) fetchAllRecordsInZone(zone string) (*dynsoap.GetAllRecordsResponseType, error) { - var err error - - service := dynsoap.NewDynectClient("https://api2.dynect.net/SOAP/") - - sessionRequest := dynsoap.SessionLoginRequestType{ - Customer_name: d.CustomerName, - User_name: d.Username, - Password: d.Password, - Fault_incompat: 0, - } - - var resp *dynsoap.SessionLoginResponseType - - err = apiRetryLoop(func() error { - resp, err = service.SessionLogin(&sessionRequest) - return err - }) - - if err != nil { - return nil, err - } - - token := resp.Data.Token - - logoutRequest := &dynsoap.SessionLogoutRequestType{ - Token: token, - Fault_incompat: 0, - } - - defer service.SessionLogout(logoutRequest) - - req := dynsoap.GetAllRecordsRequestType{ - Token: token, - Zone: zone, - Fault_incompat: 0, - } - - records := &dynsoap.GetAllRecordsResponseType{} - - err = apiRetryLoop(func() error { - records, err = service.GetAllRecords(&req) - return err - }) - - if err != nil { - return nil, err - } - - log.Debugf("Got all Records, status is %s", records.Status) - - if strings.ToLower(records.Status) == "incomplete" { - jobRequest := dynsoap.GetJobRequestType{ - Token: token, - Job_id: records.Job_id, - Fault_incompat: 0, - } - - jobResults := dynsoap.GetJobResponseType{} - err = apiRetryLoop(func() error { - jobResults, err := service.GetJob(&jobRequest) - if strings.ToLower(jobResults.Status) == "incomplete" { - return fmt.Errorf("job is incomplete") - } - return err - }) - - if err != nil { - return nil, err - } - - return jobResults.Data.(*dynsoap.GetAllRecordsResponseType), nil - } - - return records, nil -} - -// buildLinkToRecord build a resource link. The symmetry of the dyn API is used to save -// switch-case boilerplate. -// Empty response means the endpoint is not mappable to a records link: either because the fqdn -// is not matched by the domainFilter or it is in the wrong zone -func (d *dynProviderState) buildLinkToRecord(ep *endpoint.Endpoint) string { - if ep == nil { - return "" - } - matchingZone := "" - for _, zone := range d.ZoneIDFilter.ZoneIDs { - if strings.HasSuffix(ep.DNSName, zone) { - matchingZone = zone - break - } - } - - if matchingZone == "" { - // no matching zone, ignore - return "" - } - - if !d.DomainFilter.Match(ep.DNSName) { - // no matching domain, ignore - return "" - } - - return fmt.Sprintf("%sRecord/%s/%s/", ep.RecordType, matchingZone, ep.DNSName) -} - -// create a dynect client and performs login. You need to clean it up. -// This method also stores the DynAPI version. -// Don't user the dynect.Client.Login() -func (d *dynProviderState) login() (*dynect.Client, error) { - if d.LastLoginErrorTime != 0 { - secondsSinceLastError := unixNow() - d.LastLoginErrorTime - if secondsSinceLastError < badLoginMinIntervalSeconds { - return nil, fmt.Errorf("will not attempt an API call as the last login failure occurred just %ds ago", secondsSinceLastError) - } - } - client := dynect.NewClient(d.CustomerName) - - req := dynect.LoginBlock{ - Username: d.Username, - Password: d.Password, - CustomerName: d.CustomerName, - } - - var resp dynect.LoginResponse - - err := client.Do("POST", "Session", req, &resp) - if err != nil { - d.LastLoginErrorTime = unixNow() - return nil, err - } - - d.LastLoginErrorTime = 0 - client.Token = resp.Data.Token - - // this is the only change from the original - d.DynVersion = resp.Data.Version - return client, nil -} - -// the zones we are allowed to touch. Currently only exact matches are considered, not all -// zones with the given suffix -func (d *dynProviderState) zones(client *dynect.Client) []string { - return d.ZoneIDFilter.ZoneIDs -} - -func (d *dynProviderState) buildRecordRequest(ep *endpoint.Endpoint) (string, *dynect.RecordRequest) { - link := d.buildLinkToRecord(ep) - if link == "" { - return "", nil - } - - record := dynect.RecordRequest{ - TTL: fixMissingTTL(ep.RecordTTL, d.MinTTLSeconds), - RData: *endpointToRecord(ep), - } - return link, &record -} - -// deleteRecord deletes all existing records (CNAME, TXT, A) for the given Endpoint.DNSName with 1 API call -func (d *dynProviderState) deleteRecord(client *dynect.Client, ep *endpoint.Endpoint) error { - link := d.buildLinkToRecord(ep) - if link == "" { - return nil - } - - response := dynect.RecordResponse{} - - err := apiRetryLoop(func() error { - return client.Do("DELETE", link, nil, &response) - }) - - log.Debugf("Deleting record %s: %+v,", link, errorOrValue(err, &response)) - return err -} - -// replaceRecord replaces all existing records pf the given type for the Endpoint.DNSName with 1 API call -func (d *dynProviderState) replaceRecord(client *dynect.Client, ep *endpoint.Endpoint) error { - link, record := d.buildRecordRequest(ep) - if link == "" { - return nil - } - - response := dynect.RecordResponse{} - err := apiRetryLoop(func() error { - return client.Do("PUT", link, record, &response) - }) - - log.Debugf("Replacing record %s: %+v,", link, errorOrValue(err, &response)) - return err -} - -// createRecord creates a single record with 1 API call -func (d *dynProviderState) createRecord(client *dynect.Client, ep *endpoint.Endpoint) error { - link, record := d.buildRecordRequest(ep) - if link == "" { - return nil - } - - response := dynect.RecordResponse{} - err := apiRetryLoop(func() error { - return client.Do("POST", link, record, &response) - }) - - log.Debugf("Creating record %s: %+v,", link, errorOrValue(err, &response)) - return err -} - -// commit commits all pending changes. It will always attempt to commit, if there are no -func (d *dynProviderState) commit(client *dynect.Client) error { - errs := []error{} - - for _, zone := range d.zones(client) { - // extra call if in debug mode to fetch pending changes - if log.GetLevel() >= log.DebugLevel { - response := ZoneChangesResponse{} - err := client.Do("GET", fmt.Sprintf("ZoneChanges/%s/", zone), nil, &response) - log.Debugf("Pending changes for zone %s: %+v", zone, errorOrValue(err, &response)) - } - - h, err := os.Hostname() - if err != nil { - h = "unknown-host" - } - notes := fmt.Sprintf("Change by external-dns@%s, DynAPI@%s, %s on %s", - d.AppVersion, - d.DynVersion, - time.Now().Format(time.RFC3339), - h, - ) - - zonePublish := ZonePublishRequest{ - Publish: true, - Notes: notes, - } - - response := ZonePublishResponse{} - - // always retry the commit: don't waste the good work so far - err = apiRetryLoop(func() error { - return client.Do("PUT", fmt.Sprintf("Zone/%s/", zone), &zonePublish, &response) - }) - log.Infof("Committing changes for zone %s: %+v", zone, errorOrValue(err, &response)) - } - - switch len(errs) { - case 0: - return nil - case 1: - return errs[0] - default: - return fmt.Errorf("multiple errors committing: %+v", errs) - } -} - -// Records makes on average C + 2*Z requests (Z = number of zones): 1 login + 1 fetchAllRecords -// A cache is used to avoid querying for every single record found. C is proportional to the number -// of expired/changed records -func (d *dynProviderState) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { - client, err := d.login() - if err != nil { - return nil, err - } - defer client.Logout() - - log.Debugf("Using DynAPI@%s", d.DynVersion) - - var result []*endpoint.Endpoint - - zones := d.zones(client) - log.Infof("Configured zones: %+v", zones) - for _, zone := range zones { - serial, err := d.fetchZoneSerial(client, zone) - if err != nil { - if strings.Contains(err.Error(), "404 Not Found") { - log.Infof("Ignore zone %s as it does not exist", zone) - continue - } - - return nil, err - } - - relevantRecords := d.ZoneSnapshot.GetRecordsForSerial(zone, serial) - if relevantRecords != nil { - log.Infof("Using %d cached records for zone %s@%d", len(relevantRecords), zone, serial) - result = append(result, relevantRecords...) - continue - } - - // Fetch All Records - records, err := d.fetchAllRecordsInZone(zone) - if err != nil { - return nil, err - } - relevantRecords = d.allRecordsToEndpoints(records) - - log.Debugf("Relevant records %+v", relevantRecords) - - d.ZoneSnapshot.StoreRecordsForSerial(zone, serial, relevantRecords) - log.Infof("Stored %d records for %s@%d", len(relevantRecords), zone, serial) - result = append(result, relevantRecords...) - } - - return result, nil -} - -// this method does C + 2*Z requests: C=total number of changes, Z = number of -// affected zones (1 login + 1 commit) -func (d *dynProviderState) ApplyChanges(ctx context.Context, changes *plan.Changes) error { - log.Debugf("Processing changes: %+v", changes) - - if d.DryRun { - log.Infof("Will NOT delete these records: %+v", changes.Delete) - log.Infof("Will NOT create these records: %+v", changes.Create) - log.Infof("Will NOT update these records: %+v", merge(changes.UpdateOld, changes.UpdateNew)) - return nil - } - - client, err := d.login() - if err != nil { - return err - } - defer client.Logout() - - var errs []error - - needsCommit := false - - for _, ep := range changes.Delete { - err := d.deleteRecord(client, ep) - if err != nil { - errs = append(errs, err) - } else { - needsCommit = true - } - } - - for _, ep := range changes.Create { - err := d.createRecord(client, ep) - if err != nil { - errs = append(errs, err) - } else { - needsCommit = true - } - } - - updates := merge(changes.UpdateOld, changes.UpdateNew) - log.Debugf("Updates after merging: %+v", updates) - for _, ep := range updates { - err := d.replaceRecord(client, ep) - if err != nil { - errs = append(errs, err) - } else { - needsCommit = true - } - } - - switch len(errs) { - case 0: - case 1: - return errs[0] - default: - return fmt.Errorf("multiple errors committing: %+v", errs) - } - - if needsCommit { - return d.commit(client) - } - - return nil -} diff --git a/provider/dyn/dyn_test.go b/provider/dyn/dyn_test.go deleted file mode 100644 index 296052178..000000000 --- a/provider/dyn/dyn_test.go +++ /dev/null @@ -1,294 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dyn - -import ( - "errors" - "fmt" - "testing" - - "github.com/nesv/go-dynect/dynect" - "github.com/stretchr/testify/assert" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/provider" -) - -func TestDynMerge_NoUpdateOnTTL0Changes(t *testing.T) { - updateOld := []*endpoint.Endpoint{ - { - DNSName: "name1", - Targets: endpoint.Targets{"target1"}, - RecordTTL: endpoint.TTL(1), - RecordType: endpoint.RecordTypeA, - }, - { - DNSName: "name2", - Targets: endpoint.Targets{"target2"}, - RecordTTL: endpoint.TTL(1), - RecordType: endpoint.RecordTypeA, - }, - } - - updateNew := []*endpoint.Endpoint{ - { - DNSName: "name1", - Targets: endpoint.Targets{"target1"}, - RecordTTL: endpoint.TTL(0), - RecordType: endpoint.RecordTypeCNAME, - }, - { - DNSName: "name2", - Targets: endpoint.Targets{"target2"}, - RecordTTL: endpoint.TTL(0), - RecordType: endpoint.RecordTypeCNAME, - }, - } - - assert.Equal(t, 0, len(merge(updateOld, updateNew))) -} - -func TestDynMerge_UpdateOnTTLChanges(t *testing.T) { - updateOld := []*endpoint.Endpoint{ - { - DNSName: "name1", - Targets: endpoint.Targets{"target1"}, - RecordTTL: endpoint.TTL(1), - RecordType: endpoint.RecordTypeCNAME, - }, - { - DNSName: "name2", - Targets: endpoint.Targets{"target2"}, - RecordTTL: endpoint.TTL(1), - RecordType: endpoint.RecordTypeCNAME, - }, - } - - updateNew := []*endpoint.Endpoint{ - { - DNSName: "name1", - Targets: endpoint.Targets{"target1"}, - RecordTTL: endpoint.TTL(77), - RecordType: endpoint.RecordTypeCNAME, - }, - { - DNSName: "name2", - Targets: endpoint.Targets{"target2"}, - RecordTTL: endpoint.TTL(10), - RecordType: endpoint.RecordTypeCNAME, - }, - } - - merged := merge(updateOld, updateNew) - assert.Equal(t, 2, len(merged)) - assert.Equal(t, "name1", merged[0].DNSName) -} - -func TestDynMerge_AlwaysUpdateTarget(t *testing.T) { - updateOld := []*endpoint.Endpoint{ - { - DNSName: "name1", - Targets: endpoint.Targets{"target1"}, - RecordTTL: endpoint.TTL(1), - RecordType: endpoint.RecordTypeCNAME, - }, - { - DNSName: "name2", - Targets: endpoint.Targets{"target2"}, - RecordTTL: endpoint.TTL(1), - RecordType: endpoint.RecordTypeCNAME, - }, - } - - updateNew := []*endpoint.Endpoint{ - { - DNSName: "name1", - Targets: endpoint.Targets{"target1-changed"}, - RecordTTL: endpoint.TTL(0), - RecordType: endpoint.RecordTypeCNAME, - }, - { - DNSName: "name2", - Targets: endpoint.Targets{"target2"}, - RecordTTL: endpoint.TTL(0), - RecordType: endpoint.RecordTypeCNAME, - }, - } - - merged := merge(updateOld, updateNew) - assert.Equal(t, 1, len(merged)) - assert.Equal(t, "target1-changed", merged[0].Targets[0]) -} - -func TestDynMerge_NoUpdateIfTTLUnchanged(t *testing.T) { - updateOld := []*endpoint.Endpoint{ - { - DNSName: "name1", - Targets: endpoint.Targets{"target1"}, - RecordTTL: endpoint.TTL(55), - RecordType: endpoint.RecordTypeCNAME, - }, - { - DNSName: "name2", - Targets: endpoint.Targets{"target2"}, - RecordTTL: endpoint.TTL(55), - RecordType: endpoint.RecordTypeCNAME, - }, - } - - updateNew := []*endpoint.Endpoint{ - { - DNSName: "name1", - Targets: endpoint.Targets{"target1"}, - RecordTTL: endpoint.TTL(55), - RecordType: endpoint.RecordTypeCNAME, - }, - { - DNSName: "name2", - Targets: endpoint.Targets{"target2"}, - RecordTTL: endpoint.TTL(55), - RecordType: endpoint.RecordTypeCNAME, - }, - } - - merged := merge(updateOld, updateNew) - assert.Equal(t, 0, len(merged)) -} - -func TestDyn_endpointToRecord(t *testing.T) { - tests := []struct { - ep *endpoint.Endpoint - extractor func(*dynect.DataBlock) string - }{ - {endpoint.NewEndpoint("address", "A", "the-target"), func(b *dynect.DataBlock) string { return b.Address }}, - {endpoint.NewEndpoint("cname", "CNAME", "the-target"), func(b *dynect.DataBlock) string { return b.CName }}, - {endpoint.NewEndpoint("text", "TXT", "the-target"), func(b *dynect.DataBlock) string { return b.TxtData }}, - } - - for _, tc := range tests { - block := endpointToRecord(tc.ep) - assert.Equal(t, "the-target", tc.extractor(block)) - } -} - -func TestDyn_buildLinkToRecord(t *testing.T) { - provider := &dynProviderState{ - DynConfig: DynConfig{ - ZoneIDFilter: provider.NewZoneIDFilter([]string{"example.com"}), - DomainFilter: endpoint.NewDomainFilter([]string{"the-target.example.com"}), - }, - } - - tests := []struct { - ep *endpoint.Endpoint - link string - }{ - {endpoint.NewEndpoint("sub.the-target.example.com", "A", "address"), "ARecord/example.com/sub.the-target.example.com/"}, - {endpoint.NewEndpoint("the-target.example.com", "CNAME", "cname"), "CNAMERecord/example.com/the-target.example.com/"}, - {endpoint.NewEndpoint("the-target.example.com", "TXT", "text"), "TXTRecord/example.com/the-target.example.com/"}, - {endpoint.NewEndpoint("the-target.google.com", "TXT", "text"), ""}, - {endpoint.NewEndpoint("mail.example.com", "TXT", "text"), ""}, - {nil, ""}, - } - - for _, tc := range tests { - assert.Equal(t, tc.link, provider.buildLinkToRecord(tc.ep)) - } -} - -func TestDyn_errorOrValue(t *testing.T) { - e := errors.New("an error") - val := "value" - assert.Equal(t, e, errorOrValue(e, val)) - assert.Equal(t, val, errorOrValue(nil, val)) -} - -func TestDyn_filterAndFixLinks(t *testing.T) { - links := []string{ - "/REST/ARecord/example.com/the-target.example.com/", - "/REST/ARecord/example.com/the-target.google.com/", - "/REST/TXTRecord/example.com/the-target.example.com/", - "/REST/TXTRecord/example.com/the-target.google.com/", - "/REST/CNAMERecord/example.com/the-target.google.com/", - "/REST/CNAMERecord/example.com/the-target.example.com/", - "/REST/NSRecord/example.com/the-target.google.com/", - "/REST/NSRecord/example.com/the-target.example.com/", - } - filter := endpoint.NewDomainFilter([]string{"example.com"}) - result := filterAndFixLinks(links, filter) - - // should skip non-example.com records and NS records too - assert.Equal(t, 3, len(result)) - assert.Equal(t, "ARecord/example.com/the-target.example.com/", result[0]) - assert.Equal(t, "TXTRecord/example.com/the-target.example.com/", result[1]) - assert.Equal(t, "CNAMERecord/example.com/the-target.example.com/", result[2]) -} - -func TestDyn_fixMissingTTL(t *testing.T) { - assert.Equal(t, fmt.Sprintf("%v", dynDefaultTTL), fixMissingTTL(endpoint.TTL(0), 0)) - - // nothing to fix - assert.Equal(t, "111", fixMissingTTL(endpoint.TTL(111), 25)) - - // apply min TTL - assert.Equal(t, "1992", fixMissingTTL(endpoint.TTL(111), 1992)) -} - -func TestDyn_Snapshot(t *testing.T) { - snap := ZoneSnapshot{ - serials: map[string]int{}, - endpoints: map[string][]*endpoint.Endpoint{}, - } - - recs := []*endpoint.Endpoint{ - { - DNSName: "name", - Targets: endpoint.Targets{"target"}, - RecordTTL: endpoint.TTL(10000), - RecordType: "A", - }, - } - - snap.StoreRecordsForSerial("test", 12, recs) - - cached := snap.GetRecordsForSerial("test", 12) - assert.Equal(t, recs, cached) - - cached = snap.GetRecordsForSerial("test", 999) - assert.Nil(t, cached) - - cached = snap.GetRecordsForSerial("sfas", 12) - assert.Nil(t, cached) - - recs2 := []*endpoint.Endpoint{ - { - DNSName: "name", - Targets: endpoint.Targets{"target2"}, - RecordTTL: endpoint.TTL(100), - RecordType: "CNAME", - }, - } - - // update zone with different records and newer serial - snap.StoreRecordsForSerial("test", 13, recs2) - - cached = snap.GetRecordsForSerial("test", 13) - assert.Equal(t, recs2, cached) - - cached = snap.GetRecordsForSerial("test", 12) - assert.Nil(t, cached) -} diff --git a/provider/dyn/soap/client.go b/provider/dyn/soap/client.go deleted file mode 100644 index 23186dfb2..000000000 --- a/provider/dyn/soap/client.go +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright 2020 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dynsoap - -import ( - "net/http" - "time" - - "github.com/hooklift/gowsdl/soap" -) - -// NewDynectClient returns a client with a configured http.Client -// The default settings for the http.client are a timeout of -// 10 seconds and reading proxy variables from http.ProxyFromEnvironment -func NewDynectClient(url string) Dynect { - client := &http.Client{ - Timeout: time.Second * 10, - Transport: &http.Transport{ - Proxy: http.ProxyFromEnvironment, - }, - } - soapClient := soap.NewClient(url, soap.WithHTTPClient(client)) - return NewDynect(soapClient) -} - -// NewCustomDynectClient returns a client without a configured http.Client -func NewCustomDynectClient(url string, client http.Client) Dynect { - soapClient := soap.NewClient(url, soap.WithHTTPClient(&client)) - return NewDynect(soapClient) -} diff --git a/provider/dyn/soap/services.go b/provider/dyn/soap/services.go deleted file mode 100644 index bb570e972..000000000 --- a/provider/dyn/soap/services.go +++ /dev/null @@ -1,32865 +0,0 @@ -// Code generated by gowsdl DO NOT EDIT. - -package dynsoap - -import ( - "context" - "encoding/xml" - "github.com/hooklift/gowsdl/soap" - "time" -) - -// against "unused imports" -var _ time.Time -var _ xml.Name - -type AnyType struct { - InnerXML string `xml:",innerxml"` -} - -type AnyURI string - -type NCName string - -type ErrorResponse ErrorResponseType - -type GetJobRequest GetJobRequestType - -type GetJobResponse GetJobResponseType - -type SessionLoginRequest SessionLoginRequestType - -type SessionLoginResponse SessionLoginResponseType - -type SessionLogoutRequest SessionLogoutRequestType - -type SessionLogoutResponse SessionLogoutResponseType - -type SessionIsAliveRequest SessionIsAliveRequestType - -type SessionIsAliveResponse SessionIsAliveResponseType - -type SessionKeepAliveRequest SessionKeepAliveRequestType - -type SessionKeepAliveResponse SessionKeepAliveResponseType - -type ScopeInRequest ScopeInRequestType - -type ScopeInResponse ScopeInResponseType - -type ScopeAsRequest ScopeAsRequestType - -type ScopeAsResponse ScopeAsResponseType - -type UnscopeRequest UnscopeRequestType - -type UnscopeResponse UnscopeResponseType - -type GetQueryStatsRequest GetQueryStatsRequestType - -type GetQueryStatsResponse GetQueryStatsResponseType - -type CreateGeoRequest CreateGeoRequestType - -type CreateGeoResponse CreateGeoResponseType - -type UpdateGeoRequest UpdateGeoRequestType - -type UpdateGeoResponse UpdateGeoResponseType - -type GetGeosRequest GetGeosRequestType - -type GetGeosResponse GetGeosResponseType - -type GetOneGeoRequest GetOneGeoRequestType - -type GetOneGeoResponse GetOneGeoResponseType - -type DeleteOneGeoRequest DeleteOneGeoRequestType - -type DeleteOneGeoResponse DeleteOneGeoResponseType - -type ActivateGeoRequest ActivateGeoRequestType - -type ActivateGeoResponse ActivateGeoResponseType - -type DeactivateGeoRequest DeactivateGeoRequestType - -type DeactivateGeoResponse DeactivateGeoResponseType - -type CreateGeoRegionGroupRequest CreateGeoRegionGroupRequestType - -type CreateGeoRegionGroupResponse CreateGeoRegionGroupResponseType - -type UpdateGeoRegionGroupRequest UpdateGeoRegionGroupRequestType - -type UpdateGeoRegionGroupResponse UpdateGeoRegionGroupResponseType - -type DeleteOneGeoRegionGroupRequest DeleteOneGeoRegionGroupRequestType - -type DeleteOneGeoRegionGroupResponse DeleteOneGeoRegionGroupResponseType - -type GetGeoRegionGroupsRequest GetGeoRegionGroupsRequestType - -type GetGeoRegionGroupsResponse GetGeoRegionGroupsResponseType - -type GetOneGeoRegionGroupRequest GetOneGeoRegionGroupRequestType - -type GetOneGeoRegionGroupResponse GetOneGeoRegionGroupResponseType - -type CreateGeoNodeRequest CreateGeoNodeRequestType - -type CreateGeoNodeResponse CreateGeoNodeResponseType - -type DeleteOneGeoNodeRequest DeleteOneGeoNodeRequestType - -type DeleteOneGeoNodeResponse DeleteOneGeoNodeResponseType - -type GetGeoNodesRequest GetGeoNodesRequestType - -type GetGeoNodesResponse GetGeoNodesResponseType - -type CreateDSFRequest CreateDSFRequestType - -type CreateDSFResponse CreateDSFResponseType - -type UpdateDSFRequest UpdateDSFRequestType - -type UpdateDSFResponse UpdateDSFResponseType - -type GetDSFsRequest GetDSFsRequestType - -type GetDSFsResponse GetDSFsResponseType - -type GetDSFNotifiersRequest GetDSFNotifiersRequestType - -type GetDSFNotifiersResponse GetDSFNotifiersResponseType - -type DeleteOneDSFRequest DeleteOneDSFRequestType - -type DeleteOneDSFResponse DeleteOneDSFResponseType - -type GetOneDSFRequest GetOneDSFRequestType - -type GetOneDSFResponse GetOneDSFResponseType - -type RevertDSFRequest RevertDSFRequestType - -type RevertDSFResponse RevertDSFResponseType - -type PublishDSFRequest PublishDSFRequestType - -type PublishDSFResponse PublishDSFResponseType - -type AddDSFNotifierRequest AddDSFNotifierRequestType - -type AddDSFNotifierResponse AddDSFNotifierResponseType - -type RemoveDSFNotifierRequest RemoveDSFNotifierRequestType - -type RemoveDSFNotifierResponse RemoveDSFNotifierResponseType - -type CreateDSFRulesetRequest CreateDSFRulesetRequestType - -type CreateDSFRulesetResponse CreateDSFRulesetResponseType - -type UpdateDSFRulesetRequest UpdateDSFRulesetRequestType - -type UpdateDSFRulesetResponse UpdateDSFRulesetResponseType - -type GetDSFRulesetsRequest GetDSFRulesetsRequestType - -type GetDSFRulesetsResponse GetDSFRulesetsResponseType - -type GetOneDSFRulesetRequest GetOneDSFRulesetRequestType - -type GetOneDSFRulesetResponse GetOneDSFRulesetResponseType - -type DeleteOneDSFRulesetRequest DeleteOneDSFRulesetRequestType - -type DeleteOneDSFRulesetResponse DeleteOneDSFRulesetResponseType - -type CreateDSFResponsePoolRequest CreateDSFResponsePoolRequestType - -type CreateDSFResponsePoolResponse CreateDSFResponsePoolResponseType - -type UpdateDSFResponsePoolRequest UpdateDSFResponsePoolRequestType - -type UpdateDSFResponsePoolResponse UpdateDSFResponsePoolResponseType - -type GetDSFResponsePoolsRequest GetDSFResponsePoolsRequestType - -type GetDSFResponsePoolsResponse GetDSFResponsePoolsResponseType - -type GetOneDSFResponsePoolRequest GetOneDSFResponsePoolRequestType - -type GetOneDSFResponsePoolResponse GetOneDSFResponsePoolResponseType - -type DeleteOneDSFResponsePoolRequest DeleteOneDSFResponsePoolRequestType - -type DeleteOneDSFResponsePoolResponse DeleteOneDSFResponsePoolResponseType - -type CreateDSFRecordSetFailoverChainRequest CreateDSFRecordSetFailoverChainRequestType - -type CreateDSFRecordSetFailoverChainResponse CreateDSFRecordSetFailoverChainResponseType - -type UpdateDSFRecordSetFailoverChainRequest UpdateDSFRecordSetFailoverChainRequestType - -type UpdateDSFRecordSetFailoverChainResponse UpdateDSFRecordSetFailoverChainResponseType - -type GetDSFRecordSetFailoverChainsRequest GetDSFRecordSetFailoverChainsRequestType - -type GetDSFRecordSetFailoverChainsResponse GetDSFRecordSetFailoverChainsResponseType - -type GetOneDSFRecordSetFailoverChainRequest GetOneDSFRecordSetFailoverChainRequestType - -type GetOneDSFRecordSetFailoverChainResponse GetOneDSFRecordSetFailoverChainResponseType - -type DeleteOneDSFRecordSetFailoverChainRequest DeleteOneDSFRecordSetFailoverChainRequestType - -type DeleteOneDSFRecordSetFailoverChainResponse DeleteOneDSFRecordSetFailoverChainResponseType - -type CreateDSFRecordSetRequest CreateDSFRecordSetRequestType - -type CreateDSFRecordSetResponse CreateDSFRecordSetResponseType - -type UpdateDSFRecordSetRequest UpdateDSFRecordSetRequestType - -type UpdateDSFRecordSetResponse UpdateDSFRecordSetResponseType - -type GetOneDSFRecordSetRequest GetOneDSFRecordSetRequestType - -type GetOneDSFRecordSetResponse GetOneDSFRecordSetResponseType - -type GetDSFRecordSetsRequest GetDSFRecordSetsRequestType - -type GetDSFRecordSetsResponse GetDSFRecordSetsResponseType - -type DeleteOneDSFRecordSetRequest DeleteOneDSFRecordSetRequestType - -type DeleteOneDSFRecordSetResponse DeleteOneDSFRecordSetResponseType - -type CreateDSFRecordRequest CreateDSFRecordRequestType - -type CreateDSFRecordResponse CreateDSFRecordResponseType - -type UpdateDSFRecordRequest UpdateDSFRecordRequestType - -type UpdateDSFRecordResponse UpdateDSFRecordResponseType - -type GetOneDSFRecordRequest GetOneDSFRecordRequestType - -type GetOneDSFRecordResponse GetOneDSFRecordResponseType - -type GetDSFRecordsRequest GetDSFRecordsRequestType - -type GetDSFRecordsResponse GetDSFRecordsResponseType - -type DeleteOneDSFRecordRequest DeleteOneDSFRecordRequestType - -type DeleteOneDSFRecordResponse DeleteOneDSFRecordResponseType - -type AddDSFNodeRequest AddDSFNodeRequestType - -type AddDSFNodeResponse AddDSFNodeResponseType - -type UpdateDSFNodesRequest UpdateDSFNodesRequestType - -type UpdateDSFNodesResponse UpdateDSFNodesResponseType - -type GetDSFNodesRequest GetDSFNodesRequestType - -type GetDSFNodesResponse GetDSFNodesResponseType - -type DeleteOneDSFNodeRequest DeleteOneDSFNodeRequestType - -type DeleteOneDSFNodeResponse DeleteOneDSFNodeResponseType - -type CreateDSFMonitorRequest CreateDSFMonitorRequestType - -type CreateDSFMonitorResponse CreateDSFMonitorResponseType - -type UpdateDSFMonitorRequest UpdateDSFMonitorRequestType - -type UpdateDSFMonitorResponse UpdateDSFMonitorResponseType - -type GetOneDSFMonitorRequest GetOneDSFMonitorRequestType - -type GetOneDSFMonitorResponse GetOneDSFMonitorResponseType - -type GetDSFMonitorsRequest GetDSFMonitorsRequestType - -type GetDSFMonitorsResponse GetDSFMonitorsResponseType - -type DeleteOneDSFMonitorRequest DeleteOneDSFMonitorRequestType - -type DeleteOneDSFMonitorResponse DeleteOneDSFMonitorResponseType - -type AddDSFMonitorNotifierRequest AddDSFMonitorNotifierRequestType - -type AddDSFMonitorNotifierResponse AddDSFMonitorNotifierResponseType - -type GetDSFMonitorSitesRequest GetDSFMonitorSitesRequestType - -type GetDSFMonitorSitesResponse GetDSFMonitorSitesResponseType - -type CreateNotifierRequest CreateNotifierRequestType - -type CreateNotifierResponse CreateNotifierResponseType - -type UpdateNotifierRequest UpdateNotifierRequestType - -type UpdateNotifierResponse UpdateNotifierResponseType - -type GetOneNotifierRequest GetOneNotifierRequestType - -type GetOneNotifierResponse GetOneNotifierResponseType - -type GetNotifiersRequest GetNotifiersRequestType - -type GetNotifiersResponse GetNotifiersResponseType - -type DeleteOneNotifierRequest DeleteOneNotifierRequestType - -type DeleteOneNotifierResponse DeleteOneNotifierResponseType - -type CreateConfigLimitRequest CreateConfigLimitRequestType - -type CreateConfigLimitResponse CreateConfigLimitResponseType - -type GetOneConfigLimitRequest GetOneConfigLimitRequestType - -type GetOneConfigLimitResponse GetOneConfigLimitResponseType - -type GetConfigLimitsRequest GetConfigLimitsRequestType - -type GetConfigLimitsResponse GetConfigLimitsResponseType - -type UpdateConfigLimitRequest UpdateConfigLimitRequestType - -type UpdateConfigLimitResponse UpdateConfigLimitResponseType - -type DeleteOneConfigLimitRequest DeleteOneConfigLimitRequestType - -type DeleteOneConfigLimitResponse DeleteOneConfigLimitResponseType - -type CreatePermissionGroupRequest CreatePermissionGroupRequestType - -type CreatePermissionGroupResponse CreatePermissionGroupResponseType - -type GetOnePermissionGroupRequest GetOnePermissionGroupRequestType - -type GetOnePermissionGroupResponse GetOnePermissionGroupResponseType - -type GetPermissionGroupsRequest GetPermissionGroupsRequestType - -type GetPermissionGroupsResponse GetPermissionGroupsResponseType - -type DeleteOnePermissionGroupRequest DeleteOnePermissionGroupRequestType - -type DeleteOnePermissionGroupResponse DeleteOnePermissionGroupResponseType - -type UpdatePermissionGroupRequest UpdatePermissionGroupRequestType - -type UpdatePermissionGroupResponse UpdatePermissionGroupResponseType - -type GetCustomerPermissionsRequest GetCustomerPermissionsRequestType - -type GetCustomerPermissionsResponse GetCustomerPermissionsResponseType - -type GetUserPermissionsRequest GetUserPermissionsRequestType - -type GetUserPermissionsResponse GetUserPermissionsResponseType - -type CheckPermissionsRequest CheckPermissionsRequestType - -type CheckPermissionsResponse CheckPermissionsResponseType - -type AddPermissionGroupUsersRequest AddPermissionGroupUsersRequestType - -type AddPermissionGroupUsersResponse AddPermissionGroupUsersResponseType - -type SetPermissionGroupUsersRequest SetPermissionGroupUsersRequestType - -type SetPermissionGroupUsersResponse SetPermissionGroupUsersResponseType - -type RemovePermissionGroupUsersRequest RemovePermissionGroupUsersRequestType - -type RemovePermissionGroupUsersResponse RemovePermissionGroupUsersResponseType - -type AddPermissionGroupSubgroupsRequest AddPermissionGroupSubgroupsRequestType - -type AddPermissionGroupSubgroupsResponse AddPermissionGroupSubgroupsResponseType - -type SetPermissionGroupSubgroupsRequest SetPermissionGroupSubgroupsRequestType - -type SetPermissionGroupSubgroupsResponse SetPermissionGroupSubgroupsResponseType - -type RemovePermissionGroupSubgroupsRequest RemovePermissionGroupSubgroupsRequestType - -type RemovePermissionGroupSubgroupsResponse RemovePermissionGroupSubgroupsResponseType - -type AddPermissionGroupPermissionsRequest AddPermissionGroupPermissionsRequestType - -type AddPermissionGroupPermissionsResponse AddPermissionGroupPermissionsResponseType - -type SetPermissionGroupPermissionsRequest SetPermissionGroupPermissionsRequestType - -type SetPermissionGroupPermissionsResponse SetPermissionGroupPermissionsResponseType - -type RemovePermissionGroupPermissionsRequest RemovePermissionGroupPermissionsRequestType - -type RemovePermissionGroupPermissionsResponse RemovePermissionGroupPermissionsResponseType - -type AddPermissionGroupZonesRequest AddPermissionGroupZonesRequestType - -type AddPermissionGroupZonesResponse AddPermissionGroupZonesResponseType - -type SetPermissionGroupZonesRequest SetPermissionGroupZonesRequestType - -type SetPermissionGroupZonesResponse SetPermissionGroupZonesResponseType - -type RemovePermissionGroupZonesRequest RemovePermissionGroupZonesRequestType - -type RemovePermissionGroupZonesResponse RemovePermissionGroupZonesResponseType - -type AddUserGroupsRequest AddUserGroupsRequestType - -type AddUserGroupsResponse AddUserGroupsResponseType - -type SetUserGroupsRequest SetUserGroupsRequestType - -type SetUserGroupsResponse SetUserGroupsResponseType - -type RemoveUserGroupsRequest RemoveUserGroupsRequestType - -type RemoveUserGroupsResponse RemoveUserGroupsResponseType - -type AddUserZonesRequest AddUserZonesRequestType - -type AddUserZonesResponse AddUserZonesResponseType - -type SetUserZonesRequest SetUserZonesRequestType - -type SetUserZonesResponse SetUserZonesResponseType - -type RemoveUserZonesRequest RemoveUserZonesRequestType - -type RemoveUserZonesResponse RemoveUserZonesResponseType - -type AddUserPermissionsRequest AddUserPermissionsRequestType - -type AddUserPermissionsResponse AddUserPermissionsResponseType - -type SetUserPermissionsRequest SetUserPermissionsRequestType - -type SetUserPermissionsResponse SetUserPermissionsResponseType - -type RemoveUserPermissionsRequest RemoveUserPermissionsRequestType - -type RemoveUserPermissionsResponse RemoveUserPermissionsResponseType - -type AddUserForbidsRequest AddUserForbidsRequestType - -type AddUserForbidsResponse AddUserForbidsResponseType - -type SetUserForbidsRequest SetUserForbidsRequestType - -type SetUserForbidsResponse SetUserForbidsResponseType - -type RemoveUserForbidsRequest RemoveUserForbidsRequestType - -type RemoveUserForbidsResponse RemoveUserForbidsResponseType - -type AddCustomerPermissionsRequest AddCustomerPermissionsRequestType - -type AddCustomerPermissionsResponse AddCustomerPermissionsResponseType - -type SetCustomerPermissionsRequest SetCustomerPermissionsRequestType - -type SetCustomerPermissionsResponse SetCustomerPermissionsResponseType - -type RemoveCustomerPermissionsRequest RemoveCustomerPermissionsRequestType - -type RemoveCustomerPermissionsResponse RemoveCustomerPermissionsResponseType - -type AddCustomerForbidsRequest AddCustomerForbidsRequestType - -type AddCustomerForbidsResponse AddCustomerForbidsResponseType - -type SetCustomerForbidsRequest SetCustomerForbidsRequestType - -type SetCustomerForbidsResponse SetCustomerForbidsResponseType - -type RemoveCustomerForbidsRequest RemoveCustomerForbidsRequestType - -type RemoveCustomerForbidsResponse RemoveCustomerForbidsResponseType - -type GetHostStatsFlagsRequest GetHostStatsFlagsRequestType - -type GetHostStatsFlagsResponse GetHostStatsFlagsResponseType - -type SetHostStatsFlagsRequest SetHostStatsFlagsRequestType - -type SetHostStatsFlagsResponse SetHostStatsFlagsResponseType - -type CreateTSIGKeyRequest CreateTSIGKeyRequestType - -type CreateTSIGKeyResponse CreateTSIGKeyResponseType - -type GetOneTSIGKeyRequest GetOneTSIGKeyRequestType - -type GetOneTSIGKeyResponse GetOneTSIGKeyResponseType - -type GetTSIGKeysRequest GetTSIGKeysRequestType - -type GetTSIGKeysResponse GetTSIGKeysResponseType - -type UpdateTSIGKeyRequest UpdateTSIGKeyRequestType - -type UpdateTSIGKeyResponse UpdateTSIGKeyResponseType - -type DeleteOneTSIGKeyRequest DeleteOneTSIGKeyRequestType - -type DeleteOneTSIGKeyResponse DeleteOneTSIGKeyResponseType - -type CreateZoneRequest CreateZoneRequestType - -type CreateZoneResponse CreateZoneResponseType - -type GetOneZoneRequest GetOneZoneRequestType - -type GetOneZoneResponse GetOneZoneResponseType - -type GetZonesRequest GetZonesRequestType - -type GetZonesResponse GetZonesResponseType - -type DeleteOneZoneRequest DeleteOneZoneRequestType - -type DeleteOneZoneResponse DeleteOneZoneResponseType - -type CreateSecondaryZoneRequest CreateSecondaryZoneRequestType - -type CreateSecondaryZoneResponse CreateSecondaryZoneResponseType - -type UpdateSecondaryRequest UpdateSecondaryRequestType - -type UpdateSecondaryResponse UpdateSecondaryResponseType - -type ActivateSecondaryRequest ActivateSecondaryRequestType - -type ActivateSecondaryResponse ActivateSecondaryResponseType - -type DeactivateSecondaryRequest DeactivateSecondaryRequestType - -type DeactivateSecondaryResponse DeactivateSecondaryResponseType - -type RetransferSecondaryRequest RetransferSecondaryRequestType - -type RetransferSecondaryResponse RetransferSecondaryResponseType - -type GetOneSecondaryRequest GetOneSecondaryRequestType - -type GetOneSecondaryResponse GetOneSecondaryResponseType - -type GetSecondariesRequest GetSecondariesRequestType - -type GetSecondariesResponse GetSecondariesResponseType - -type GetZoneApexRequest GetZoneApexRequestType - -type GetZoneApexResponse GetZoneApexResponseType - -type CreateARecordRequest CreateARecordRequestType - -type CreateARecordResponse CreateARecordResponseType - -type GetOneARecordRequest GetOneARecordRequestType - -type GetOneARecordResponse GetOneARecordResponseType - -type GetARecordsRequest GetARecordsRequestType - -type GetARecordsResponse GetARecordsResponseType - -type UpdateARecordRequest UpdateARecordRequestType - -type UpdateARecordResponse UpdateARecordResponseType - -type DeleteARecordsRequest DeleteARecordsRequestType - -type DeleteARecordsResponse DeleteARecordsResponseType - -type DeleteOneARecordRequest DeleteOneARecordRequestType - -type DeleteOneARecordResponse DeleteOneARecordResponseType - -type CreateAAAARecordRequest CreateAAAARecordRequestType - -type CreateAAAARecordResponse CreateAAAARecordResponseType - -type GetOneAAAARecordRequest GetOneAAAARecordRequestType - -type GetOneAAAARecordResponse GetOneAAAARecordResponseType - -type GetAAAARecordsRequest GetAAAARecordsRequestType - -type GetAAAARecordsResponse GetAAAARecordsResponseType - -type UpdateAAAARecordRequest UpdateAAAARecordRequestType - -type UpdateAAAARecordResponse UpdateAAAARecordResponseType - -type DeleteAAAARecordsRequest DeleteAAAARecordsRequestType - -type DeleteAAAARecordsResponse DeleteAAAARecordsResponseType - -type DeleteOneAAAARecordRequest DeleteOneAAAARecordRequestType - -type DeleteOneAAAARecordResponse DeleteOneAAAARecordResponseType - -type CreateALIASRecordRequest CreateALIASRecordRequestType - -type CreateALIASRecordResponse CreateALIASRecordResponseType - -type GetOneALIASRecordRequest GetOneALIASRecordRequestType - -type GetOneALIASRecordResponse GetOneALIASRecordResponseType - -type GetALIASRecordsRequest GetALIASRecordsRequestType - -type GetALIASRecordsResponse GetALIASRecordsResponseType - -type UpdateALIASRecordRequest UpdateALIASRecordRequestType - -type UpdateALIASRecordResponse UpdateALIASRecordResponseType - -type DeleteALIASRecordsRequest DeleteALIASRecordsRequestType - -type DeleteALIASRecordsResponse DeleteALIASRecordsResponseType - -type DeleteOneALIASRecordRequest DeleteOneALIASRecordRequestType - -type DeleteOneALIASRecordResponse DeleteOneALIASRecordResponseType - -type CreateCAARecordRequest CreateCAARecordRequestType - -type CreateCAARecordResponse CreateCAARecordResponseType - -type GetOneCAARecordRequest GetOneCAARecordRequestType - -type GetOneCAARecordResponse GetOneCAARecordResponseType - -type GetCAARecordsRequest GetCAARecordsRequestType - -type GetCAARecordsResponse GetCAARecordsResponseType - -type UpdateCAARecordRequest UpdateCAARecordRequestType - -type UpdateCAARecordResponse UpdateCAARecordResponseType - -type DeleteCAARecordsRequest DeleteCAARecordsRequestType - -type DeleteCAARecordsResponse DeleteCAARecordsResponseType - -type DeleteOneCAARecordRequest DeleteOneCAARecordRequestType - -type DeleteOneCAARecordResponse DeleteOneCAARecordResponseType - -type CreateCDNSKEYRecordRequest CreateCDNSKEYRecordRequestType - -type CreateCDNSKEYRecordResponse CreateCDNSKEYRecordResponseType - -type GetOneCDNSKEYRecordRequest GetOneCDNSKEYRecordRequestType - -type GetOneCDNSKEYRecordResponse GetOneCDNSKEYRecordResponseType - -type GetCDNSKEYRecordsRequest GetCDNSKEYRecordsRequestType - -type GetCDNSKEYRecordsResponse GetCDNSKEYRecordsResponseType - -type UpdateCDNSKEYRecordRequest UpdateCDNSKEYRecordRequestType - -type UpdateCDNSKEYRecordResponse UpdateCDNSKEYRecordResponseType - -type DeleteCDNSKEYRecordsRequest DeleteCDNSKEYRecordsRequestType - -type DeleteCDNSKEYRecordsResponse DeleteCDNSKEYRecordsResponseType - -type DeleteOneCDNSKEYRecordRequest DeleteOneCDNSKEYRecordRequestType - -type DeleteOneCDNSKEYRecordResponse DeleteOneCDNSKEYRecordResponseType - -type CreateCDSRecordRequest CreateCDSRecordRequestType - -type CreateCDSRecordResponse CreateCDSRecordResponseType - -type GetOneCDSRecordRequest GetOneCDSRecordRequestType - -type GetOneCDSRecordResponse GetOneCDSRecordResponseType - -type GetCDSRecordsRequest GetCDSRecordsRequestType - -type GetCDSRecordsResponse GetCDSRecordsResponseType - -type UpdateCDSRecordRequest UpdateCDSRecordRequestType - -type UpdateCDSRecordResponse UpdateCDSRecordResponseType - -type DeleteCDSRecordsRequest DeleteCDSRecordsRequestType - -type DeleteCDSRecordsResponse DeleteCDSRecordsResponseType - -type DeleteOneCDSRecordRequest DeleteOneCDSRecordRequestType - -type DeleteOneCDSRecordResponse DeleteOneCDSRecordResponseType - -type CreateCERTRecordRequest CreateCERTRecordRequestType - -type CreateCERTRecordResponse CreateCERTRecordResponseType - -type GetOneCERTRecordRequest GetOneCERTRecordRequestType - -type GetOneCERTRecordResponse GetOneCERTRecordResponseType - -type GetCERTRecordsRequest GetCERTRecordsRequestType - -type GetCERTRecordsResponse GetCERTRecordsResponseType - -type UpdateCERTRecordRequest UpdateCERTRecordRequestType - -type UpdateCERTRecordResponse UpdateCERTRecordResponseType - -type DeleteCERTRecordsRequest DeleteCERTRecordsRequestType - -type DeleteCERTRecordsResponse DeleteCERTRecordsResponseType - -type DeleteOneCERTRecordRequest DeleteOneCERTRecordRequestType - -type DeleteOneCERTRecordResponse DeleteOneCERTRecordResponseType - -type CreateCNAMERecordRequest CreateCNAMERecordRequestType - -type CreateCNAMERecordResponse CreateCNAMERecordResponseType - -type GetOneCNAMERecordRequest GetOneCNAMERecordRequestType - -type GetOneCNAMERecordResponse GetOneCNAMERecordResponseType - -type GetCNAMERecordsRequest GetCNAMERecordsRequestType - -type GetCNAMERecordsResponse GetCNAMERecordsResponseType - -type UpdateCNAMERecordRequest UpdateCNAMERecordRequestType - -type UpdateCNAMERecordResponse UpdateCNAMERecordResponseType - -type DeleteCNAMERecordsRequest DeleteCNAMERecordsRequestType - -type DeleteCNAMERecordsResponse DeleteCNAMERecordsResponseType - -type DeleteOneCNAMERecordRequest DeleteOneCNAMERecordRequestType - -type DeleteOneCNAMERecordResponse DeleteOneCNAMERecordResponseType - -type CreateCSYNCRecordRequest CreateCSYNCRecordRequestType - -type CreateCSYNCRecordResponse CreateCSYNCRecordResponseType - -type GetOneCSYNCRecordRequest GetOneCSYNCRecordRequestType - -type GetOneCSYNCRecordResponse GetOneCSYNCRecordResponseType - -type GetCSYNCRecordsRequest GetCSYNCRecordsRequestType - -type GetCSYNCRecordsResponse GetCSYNCRecordsResponseType - -type UpdateCSYNCRecordRequest UpdateCSYNCRecordRequestType - -type UpdateCSYNCRecordResponse UpdateCSYNCRecordResponseType - -type DeleteCSYNCRecordsRequest DeleteCSYNCRecordsRequestType - -type DeleteCSYNCRecordsResponse DeleteCSYNCRecordsResponseType - -type DeleteOneCSYNCRecordRequest DeleteOneCSYNCRecordRequestType - -type DeleteOneCSYNCRecordResponse DeleteOneCSYNCRecordResponseType - -type CreateDHCIDRecordRequest CreateDHCIDRecordRequestType - -type CreateDHCIDRecordResponse CreateDHCIDRecordResponseType - -type GetOneDHCIDRecordRequest GetOneDHCIDRecordRequestType - -type GetOneDHCIDRecordResponse GetOneDHCIDRecordResponseType - -type GetDHCIDRecordsRequest GetDHCIDRecordsRequestType - -type GetDHCIDRecordsResponse GetDHCIDRecordsResponseType - -type UpdateDHCIDRecordRequest UpdateDHCIDRecordRequestType - -type UpdateDHCIDRecordResponse UpdateDHCIDRecordResponseType - -type DeleteDHCIDRecordsRequest DeleteDHCIDRecordsRequestType - -type DeleteDHCIDRecordsResponse DeleteDHCIDRecordsResponseType - -type DeleteOneDHCIDRecordRequest DeleteOneDHCIDRecordRequestType - -type DeleteOneDHCIDRecordResponse DeleteOneDHCIDRecordResponseType - -type CreateDNAMERecordRequest CreateDNAMERecordRequestType - -type CreateDNAMERecordResponse CreateDNAMERecordResponseType - -type GetOneDNAMERecordRequest GetOneDNAMERecordRequestType - -type GetOneDNAMERecordResponse GetOneDNAMERecordResponseType - -type GetDNAMERecordsRequest GetDNAMERecordsRequestType - -type GetDNAMERecordsResponse GetDNAMERecordsResponseType - -type UpdateDNAMERecordRequest UpdateDNAMERecordRequestType - -type UpdateDNAMERecordResponse UpdateDNAMERecordResponseType - -type DeleteDNAMERecordsRequest DeleteDNAMERecordsRequestType - -type DeleteDNAMERecordsResponse DeleteDNAMERecordsResponseType - -type DeleteOneDNAMERecordRequest DeleteOneDNAMERecordRequestType - -type DeleteOneDNAMERecordResponse DeleteOneDNAMERecordResponseType - -type CreateDNSKEYRecordRequest CreateDNSKEYRecordRequestType - -type CreateDNSKEYRecordResponse CreateDNSKEYRecordResponseType - -type GetOneDNSKEYRecordRequest GetOneDNSKEYRecordRequestType - -type GetOneDNSKEYRecordResponse GetOneDNSKEYRecordResponseType - -type GetDNSKEYRecordsRequest GetDNSKEYRecordsRequestType - -type GetDNSKEYRecordsResponse GetDNSKEYRecordsResponseType - -type UpdateDNSKEYRecordRequest UpdateDNSKEYRecordRequestType - -type UpdateDNSKEYRecordResponse UpdateDNSKEYRecordResponseType - -type DeleteDNSKEYRecordsRequest DeleteDNSKEYRecordsRequestType - -type DeleteDNSKEYRecordsResponse DeleteDNSKEYRecordsResponseType - -type DeleteOneDNSKEYRecordRequest DeleteOneDNSKEYRecordRequestType - -type DeleteOneDNSKEYRecordResponse DeleteOneDNSKEYRecordResponseType - -type CreateDSRecordRequest CreateDSRecordRequestType - -type CreateDSRecordResponse CreateDSRecordResponseType - -type GetOneDSRecordRequest GetOneDSRecordRequestType - -type GetOneDSRecordResponse GetOneDSRecordResponseType - -type GetDSRecordsRequest GetDSRecordsRequestType - -type GetDSRecordsResponse GetDSRecordsResponseType - -type UpdateDSRecordRequest UpdateDSRecordRequestType - -type UpdateDSRecordResponse UpdateDSRecordResponseType - -type DeleteDSRecordsRequest DeleteDSRecordsRequestType - -type DeleteDSRecordsResponse DeleteDSRecordsResponseType - -type DeleteOneDSRecordRequest DeleteOneDSRecordRequestType - -type DeleteOneDSRecordResponse DeleteOneDSRecordResponseType - -type CreateIPSECKEYRecordRequest CreateIPSECKEYRecordRequestType - -type CreateIPSECKEYRecordResponse CreateIPSECKEYRecordResponseType - -type GetOneIPSECKEYRecordRequest GetOneIPSECKEYRecordRequestType - -type GetOneIPSECKEYRecordResponse GetOneIPSECKEYRecordResponseType - -type GetIPSECKEYRecordsRequest GetIPSECKEYRecordsRequestType - -type GetIPSECKEYRecordsResponse GetIPSECKEYRecordsResponseType - -type UpdateIPSECKEYRecordRequest UpdateIPSECKEYRecordRequestType - -type UpdateIPSECKEYRecordResponse UpdateIPSECKEYRecordResponseType - -type DeleteIPSECKEYRecordsRequest DeleteIPSECKEYRecordsRequestType - -type DeleteIPSECKEYRecordsResponse DeleteIPSECKEYRecordsResponseType - -type DeleteOneIPSECKEYRecordRequest DeleteOneIPSECKEYRecordRequestType - -type DeleteOneIPSECKEYRecordResponse DeleteOneIPSECKEYRecordResponseType - -type CreateKEYRecordRequest CreateKEYRecordRequestType - -type CreateKEYRecordResponse CreateKEYRecordResponseType - -type GetOneKEYRecordRequest GetOneKEYRecordRequestType - -type GetOneKEYRecordResponse GetOneKEYRecordResponseType - -type GetKEYRecordsRequest GetKEYRecordsRequestType - -type GetKEYRecordsResponse GetKEYRecordsResponseType - -type UpdateKEYRecordRequest UpdateKEYRecordRequestType - -type UpdateKEYRecordResponse UpdateKEYRecordResponseType - -type DeleteKEYRecordsRequest DeleteKEYRecordsRequestType - -type DeleteKEYRecordsResponse DeleteKEYRecordsResponseType - -type DeleteOneKEYRecordRequest DeleteOneKEYRecordRequestType - -type DeleteOneKEYRecordResponse DeleteOneKEYRecordResponseType - -type CreateKXRecordRequest CreateKXRecordRequestType - -type CreateKXRecordResponse CreateKXRecordResponseType - -type GetOneKXRecordRequest GetOneKXRecordRequestType - -type GetOneKXRecordResponse GetOneKXRecordResponseType - -type GetKXRecordsRequest GetKXRecordsRequestType - -type GetKXRecordsResponse GetKXRecordsResponseType - -type UpdateKXRecordRequest UpdateKXRecordRequestType - -type UpdateKXRecordResponse UpdateKXRecordResponseType - -type DeleteKXRecordsRequest DeleteKXRecordsRequestType - -type DeleteKXRecordsResponse DeleteKXRecordsResponseType - -type DeleteOneKXRecordRequest DeleteOneKXRecordRequestType - -type DeleteOneKXRecordResponse DeleteOneKXRecordResponseType - -type CreateLOCRecordRequest CreateLOCRecordRequestType - -type CreateLOCRecordResponse CreateLOCRecordResponseType - -type GetOneLOCRecordRequest GetOneLOCRecordRequestType - -type GetOneLOCRecordResponse GetOneLOCRecordResponseType - -type GetLOCRecordsRequest GetLOCRecordsRequestType - -type GetLOCRecordsResponse GetLOCRecordsResponseType - -type UpdateLOCRecordRequest UpdateLOCRecordRequestType - -type UpdateLOCRecordResponse UpdateLOCRecordResponseType - -type DeleteLOCRecordsRequest DeleteLOCRecordsRequestType - -type DeleteLOCRecordsResponse DeleteLOCRecordsResponseType - -type DeleteOneLOCRecordRequest DeleteOneLOCRecordRequestType - -type DeleteOneLOCRecordResponse DeleteOneLOCRecordResponseType - -type CreateMXRecordRequest CreateMXRecordRequestType - -type CreateMXRecordResponse CreateMXRecordResponseType - -type GetOneMXRecordRequest GetOneMXRecordRequestType - -type GetOneMXRecordResponse GetOneMXRecordResponseType - -type GetMXRecordsRequest GetMXRecordsRequestType - -type GetMXRecordsResponse GetMXRecordsResponseType - -type UpdateMXRecordRequest UpdateMXRecordRequestType - -type UpdateMXRecordResponse UpdateMXRecordResponseType - -type DeleteMXRecordsRequest DeleteMXRecordsRequestType - -type DeleteMXRecordsResponse DeleteMXRecordsResponseType - -type DeleteOneMXRecordRequest DeleteOneMXRecordRequestType - -type DeleteOneMXRecordResponse DeleteOneMXRecordResponseType - -type CreateNAPTRRecordRequest CreateNAPTRRecordRequestType - -type CreateNAPTRRecordResponse CreateNAPTRRecordResponseType - -type GetOneNAPTRRecordRequest GetOneNAPTRRecordRequestType - -type GetOneNAPTRRecordResponse GetOneNAPTRRecordResponseType - -type GetNAPTRRecordsRequest GetNAPTRRecordsRequestType - -type GetNAPTRRecordsResponse GetNAPTRRecordsResponseType - -type UpdateNAPTRRecordRequest UpdateNAPTRRecordRequestType - -type UpdateNAPTRRecordResponse UpdateNAPTRRecordResponseType - -type DeleteNAPTRRecordsRequest DeleteNAPTRRecordsRequestType - -type DeleteNAPTRRecordsResponse DeleteNAPTRRecordsResponseType - -type DeleteOneNAPTRRecordRequest DeleteOneNAPTRRecordRequestType - -type DeleteOneNAPTRRecordResponse DeleteOneNAPTRRecordResponseType - -type CreateNSAPRecordRequest CreateNSAPRecordRequestType - -type CreateNSAPRecordResponse CreateNSAPRecordResponseType - -type GetOneNSAPRecordRequest GetOneNSAPRecordRequestType - -type GetOneNSAPRecordResponse GetOneNSAPRecordResponseType - -type GetNSAPRecordsRequest GetNSAPRecordsRequestType - -type GetNSAPRecordsResponse GetNSAPRecordsResponseType - -type UpdateNSAPRecordRequest UpdateNSAPRecordRequestType - -type UpdateNSAPRecordResponse UpdateNSAPRecordResponseType - -type DeleteNSAPRecordsRequest DeleteNSAPRecordsRequestType - -type DeleteNSAPRecordsResponse DeleteNSAPRecordsResponseType - -type DeleteOneNSAPRecordRequest DeleteOneNSAPRecordRequestType - -type DeleteOneNSAPRecordResponse DeleteOneNSAPRecordResponseType - -type CreatePOLICYRecordRequest CreatePOLICYRecordRequestType - -type CreatePOLICYRecordResponse CreatePOLICYRecordResponseType - -type GetOnePOLICYRecordRequest GetOnePOLICYRecordRequestType - -type GetOnePOLICYRecordResponse GetOnePOLICYRecordResponseType - -type GetPOLICYRecordsRequest GetPOLICYRecordsRequestType - -type GetPOLICYRecordsResponse GetPOLICYRecordsResponseType - -type UpdatePOLICYRecordRequest UpdatePOLICYRecordRequestType - -type UpdatePOLICYRecordResponse UpdatePOLICYRecordResponseType - -type DeletePOLICYRecordsRequest DeletePOLICYRecordsRequestType - -type DeletePOLICYRecordsResponse DeletePOLICYRecordsResponseType - -type DeleteOnePOLICYRecordRequest DeleteOnePOLICYRecordRequestType - -type DeleteOnePOLICYRecordResponse DeleteOnePOLICYRecordResponseType - -type CreatePTRRecordRequest CreatePTRRecordRequestType - -type CreatePTRRecordResponse CreatePTRRecordResponseType - -type GetOnePTRRecordRequest GetOnePTRRecordRequestType - -type GetOnePTRRecordResponse GetOnePTRRecordResponseType - -type GetPTRRecordsRequest GetPTRRecordsRequestType - -type GetPTRRecordsResponse GetPTRRecordsResponseType - -type UpdatePTRRecordRequest UpdatePTRRecordRequestType - -type UpdatePTRRecordResponse UpdatePTRRecordResponseType - -type DeletePTRRecordsRequest DeletePTRRecordsRequestType - -type DeletePTRRecordsResponse DeletePTRRecordsResponseType - -type DeleteOnePTRRecordRequest DeleteOnePTRRecordRequestType - -type DeleteOnePTRRecordResponse DeleteOnePTRRecordResponseType - -type CreatePXRecordRequest CreatePXRecordRequestType - -type CreatePXRecordResponse CreatePXRecordResponseType - -type GetOnePXRecordRequest GetOnePXRecordRequestType - -type GetOnePXRecordResponse GetOnePXRecordResponseType - -type GetPXRecordsRequest GetPXRecordsRequestType - -type GetPXRecordsResponse GetPXRecordsResponseType - -type UpdatePXRecordRequest UpdatePXRecordRequestType - -type UpdatePXRecordResponse UpdatePXRecordResponseType - -type DeletePXRecordsRequest DeletePXRecordsRequestType - -type DeletePXRecordsResponse DeletePXRecordsResponseType - -type DeleteOnePXRecordRequest DeleteOnePXRecordRequestType - -type DeleteOnePXRecordResponse DeleteOnePXRecordResponseType - -type CreateRPRecordRequest CreateRPRecordRequestType - -type CreateRPRecordResponse CreateRPRecordResponseType - -type GetOneRPRecordRequest GetOneRPRecordRequestType - -type GetOneRPRecordResponse GetOneRPRecordResponseType - -type GetRPRecordsRequest GetRPRecordsRequestType - -type GetRPRecordsResponse GetRPRecordsResponseType - -type UpdateRPRecordRequest UpdateRPRecordRequestType - -type UpdateRPRecordResponse UpdateRPRecordResponseType - -type DeleteRPRecordsRequest DeleteRPRecordsRequestType - -type DeleteRPRecordsResponse DeleteRPRecordsResponseType - -type DeleteOneRPRecordRequest DeleteOneRPRecordRequestType - -type DeleteOneRPRecordResponse DeleteOneRPRecordResponseType - -type CreateSPFRecordRequest CreateSPFRecordRequestType - -type CreateSPFRecordResponse CreateSPFRecordResponseType - -type GetOneSPFRecordRequest GetOneSPFRecordRequestType - -type GetOneSPFRecordResponse GetOneSPFRecordResponseType - -type GetSPFRecordsRequest GetSPFRecordsRequestType - -type GetSPFRecordsResponse GetSPFRecordsResponseType - -type UpdateSPFRecordRequest UpdateSPFRecordRequestType - -type UpdateSPFRecordResponse UpdateSPFRecordResponseType - -type DeleteSPFRecordsRequest DeleteSPFRecordsRequestType - -type DeleteSPFRecordsResponse DeleteSPFRecordsResponseType - -type DeleteOneSPFRecordRequest DeleteOneSPFRecordRequestType - -type DeleteOneSPFRecordResponse DeleteOneSPFRecordResponseType - -type CreateSRVRecordRequest CreateSRVRecordRequestType - -type CreateSRVRecordResponse CreateSRVRecordResponseType - -type GetOneSRVRecordRequest GetOneSRVRecordRequestType - -type GetOneSRVRecordResponse GetOneSRVRecordResponseType - -type GetSRVRecordsRequest GetSRVRecordsRequestType - -type GetSRVRecordsResponse GetSRVRecordsResponseType - -type UpdateSRVRecordRequest UpdateSRVRecordRequestType - -type UpdateSRVRecordResponse UpdateSRVRecordResponseType - -type DeleteSRVRecordsRequest DeleteSRVRecordsRequestType - -type DeleteSRVRecordsResponse DeleteSRVRecordsResponseType - -type DeleteOneSRVRecordRequest DeleteOneSRVRecordRequestType - -type DeleteOneSRVRecordResponse DeleteOneSRVRecordResponseType - -type CreateSSHFPRecordRequest CreateSSHFPRecordRequestType - -type CreateSSHFPRecordResponse CreateSSHFPRecordResponseType - -type GetOneSSHFPRecordRequest GetOneSSHFPRecordRequestType - -type GetOneSSHFPRecordResponse GetOneSSHFPRecordResponseType - -type GetSSHFPRecordsRequest GetSSHFPRecordsRequestType - -type GetSSHFPRecordsResponse GetSSHFPRecordsResponseType - -type UpdateSSHFPRecordRequest UpdateSSHFPRecordRequestType - -type UpdateSSHFPRecordResponse UpdateSSHFPRecordResponseType - -type DeleteSSHFPRecordsRequest DeleteSSHFPRecordsRequestType - -type DeleteSSHFPRecordsResponse DeleteSSHFPRecordsResponseType - -type DeleteOneSSHFPRecordRequest DeleteOneSSHFPRecordRequestType - -type DeleteOneSSHFPRecordResponse DeleteOneSSHFPRecordResponseType - -type CreateTLSARecordRequest CreateTLSARecordRequestType - -type CreateTLSARecordResponse CreateTLSARecordResponseType - -type GetOneTLSARecordRequest GetOneTLSARecordRequestType - -type GetOneTLSARecordResponse GetOneTLSARecordResponseType - -type GetTLSARecordsRequest GetTLSARecordsRequestType - -type GetTLSARecordsResponse GetTLSARecordsResponseType - -type UpdateTLSARecordRequest UpdateTLSARecordRequestType - -type UpdateTLSARecordResponse UpdateTLSARecordResponseType - -type DeleteTLSARecordsRequest DeleteTLSARecordsRequestType - -type DeleteTLSARecordsResponse DeleteTLSARecordsResponseType - -type DeleteOneTLSARecordRequest DeleteOneTLSARecordRequestType - -type DeleteOneTLSARecordResponse DeleteOneTLSARecordResponseType - -type CreateTXTRecordRequest CreateTXTRecordRequestType - -type CreateTXTRecordResponse CreateTXTRecordResponseType - -type GetOneTXTRecordRequest GetOneTXTRecordRequestType - -type GetOneTXTRecordResponse GetOneTXTRecordResponseType - -type GetTXTRecordsRequest GetTXTRecordsRequestType - -type GetTXTRecordsResponse GetTXTRecordsResponseType - -type UpdateTXTRecordRequest UpdateTXTRecordRequestType - -type UpdateTXTRecordResponse UpdateTXTRecordResponseType - -type DeleteTXTRecordsRequest DeleteTXTRecordsRequestType - -type DeleteTXTRecordsResponse DeleteTXTRecordsResponseType - -type DeleteOneTXTRecordRequest DeleteOneTXTRecordRequestType - -type DeleteOneTXTRecordResponse DeleteOneTXTRecordResponseType - -type GetOneSOARecordRequest GetOneSOARecordRequestType - -type GetOneSOARecordResponse GetOneSOARecordResponseType - -type GetSOARecordsRequest GetSOARecordsRequestType - -type GetSOARecordsResponse GetSOARecordsResponseType - -type UpdateSOARecordRequest UpdateSOARecordRequestType - -type UpdateSOARecordResponse UpdateSOARecordResponseType - -type CreateNSRecordRequest CreateNSRecordRequestType - -type CreateNSRecordResponse CreateNSRecordResponseType - -type GetOneNSRecordRequest GetOneNSRecordRequestType - -type GetOneNSRecordResponse GetOneNSRecordResponseType - -type GetNSRecordsRequest GetNSRecordsRequestType - -type GetNSRecordsResponse GetNSRecordsResponseType - -type UpdateNSRecordRequest UpdateNSRecordRequestType - -type UpdateNSRecordResponse UpdateNSRecordResponseType - -type DeleteNSRecordsRequest DeleteNSRecordsRequestType - -type DeleteNSRecordsResponse DeleteNSRecordsResponseType - -type DeleteOneNSRecordRequest DeleteOneNSRecordRequestType - -type DeleteOneNSRecordResponse DeleteOneNSRecordResponseType - -type ReplaceARecordsRequest ReplaceARecordsRequestType - -type ReplaceARecordsResponse ReplaceARecordsResponseType - -type ReplaceAAAARecordsRequest ReplaceAAAARecordsRequestType - -type ReplaceAAAARecordsResponse ReplaceAAAARecordsResponseType - -type ReplaceALIASRecordsRequest ReplaceALIASRecordsRequestType - -type ReplaceALIASRecordsResponse ReplaceALIASRecordsResponseType - -type ReplaceCAARecordsRequest ReplaceCAARecordsRequestType - -type ReplaceCAARecordsResponse ReplaceCAARecordsResponseType - -type ReplaceCDNSKEYRecordsRequest ReplaceCDNSKEYRecordsRequestType - -type ReplaceCDNSKEYRecordsResponse ReplaceCDNSKEYRecordsResponseType - -type ReplaceCDSRecordsRequest ReplaceCDSRecordsRequestType - -type ReplaceCDSRecordsResponse ReplaceCDSRecordsResponseType - -type ReplaceCERTRecordsRequest ReplaceCERTRecordsRequestType - -type ReplaceCERTRecordsResponse ReplaceCERTRecordsResponseType - -type ReplaceCNAMERecordsRequest ReplaceCNAMERecordsRequestType - -type ReplaceCNAMERecordsResponse ReplaceCNAMERecordsResponseType - -type ReplaceCSYNCRecordsRequest ReplaceCSYNCRecordsRequestType - -type ReplaceCSYNCRecordsResponse ReplaceCSYNCRecordsResponseType - -type ReplaceDHCIDRecordsRequest ReplaceDHCIDRecordsRequestType - -type ReplaceDHCIDRecordsResponse ReplaceDHCIDRecordsResponseType - -type ReplaceDNAMERecordsRequest ReplaceDNAMERecordsRequestType - -type ReplaceDNAMERecordsResponse ReplaceDNAMERecordsResponseType - -type ReplaceDNSKEYRecordsRequest ReplaceDNSKEYRecordsRequestType - -type ReplaceDNSKEYRecordsResponse ReplaceDNSKEYRecordsResponseType - -type ReplaceDSRecordsRequest ReplaceDSRecordsRequestType - -type ReplaceDSRecordsResponse ReplaceDSRecordsResponseType - -type ReplaceIPSECKEYRecordsRequest ReplaceIPSECKEYRecordsRequestType - -type ReplaceIPSECKEYRecordsResponse ReplaceIPSECKEYRecordsResponseType - -type ReplaceKEYRecordsRequest ReplaceKEYRecordsRequestType - -type ReplaceKEYRecordsResponse ReplaceKEYRecordsResponseType - -type ReplaceKXRecordsRequest ReplaceKXRecordsRequestType - -type ReplaceKXRecordsResponse ReplaceKXRecordsResponseType - -type ReplaceLOCRecordsRequest ReplaceLOCRecordsRequestType - -type ReplaceLOCRecordsResponse ReplaceLOCRecordsResponseType - -type ReplaceMXRecordsRequest ReplaceMXRecordsRequestType - -type ReplaceMXRecordsResponse ReplaceMXRecordsResponseType - -type ReplaceNAPTRRecordsRequest ReplaceNAPTRRecordsRequestType - -type ReplaceNAPTRRecordsResponse ReplaceNAPTRRecordsResponseType - -type ReplaceNSAPRecordsRequest ReplaceNSAPRecordsRequestType - -type ReplaceNSAPRecordsResponse ReplaceNSAPRecordsResponseType - -type ReplacePOLICYRecordsRequest ReplacePOLICYRecordsRequestType - -type ReplacePOLICYRecordsResponse ReplacePOLICYRecordsResponseType - -type ReplacePTRRecordsRequest ReplacePTRRecordsRequestType - -type ReplacePTRRecordsResponse ReplacePTRRecordsResponseType - -type ReplacePXRecordsRequest ReplacePXRecordsRequestType - -type ReplacePXRecordsResponse ReplacePXRecordsResponseType - -type ReplaceRPRecordsRequest ReplaceRPRecordsRequestType - -type ReplaceRPRecordsResponse ReplaceRPRecordsResponseType - -type ReplaceSPFRecordsRequest ReplaceSPFRecordsRequestType - -type ReplaceSPFRecordsResponse ReplaceSPFRecordsResponseType - -type ReplaceSRVRecordsRequest ReplaceSRVRecordsRequestType - -type ReplaceSRVRecordsResponse ReplaceSRVRecordsResponseType - -type ReplaceSSHFPRecordsRequest ReplaceSSHFPRecordsRequestType - -type ReplaceSSHFPRecordsResponse ReplaceSSHFPRecordsResponseType - -type ReplaceTLSARecordsRequest ReplaceTLSARecordsRequestType - -type ReplaceTLSARecordsResponse ReplaceTLSARecordsResponseType - -type ReplaceTXTRecordsRequest ReplaceTXTRecordsRequestType - -type ReplaceTXTRecordsResponse ReplaceTXTRecordsResponseType - -type ReplaceNSRecordsRequest ReplaceNSRecordsRequestType - -type ReplaceNSRecordsResponse ReplaceNSRecordsResponseType - -type GetANYRecordsRequest GetANYRecordsRequestType - -type GetANYRecordsResponse GetANYRecordsResponseType - -type GetAllRecordsRequest GetAllRecordsRequestType - -type GetAllRecordsResponse GetAllRecordsResponseType - -type GetAllAliasQNamesRequest GetAllAliasQNamesRequestType - -type GetAllAliasQNamesResponse GetAllAliasQNamesResponseType - -type GetOneUserRequest GetOneUserRequestType - -type GetOneUserResponse GetOneUserResponseType - -type DeleteOneUserRequest DeleteOneUserRequestType - -type DeleteOneUserResponse DeleteOneUserResponseType - -type CreateUserRequest CreateUserRequestType - -type CreateUserResponse CreateUserResponseType - -type UpdateUserRequest UpdateUserRequestType - -type UpdateUserResponse UpdateUserResponseType - -type GetUsersRequest GetUsersRequestType - -type GetUsersResponse GetUsersResponseType - -type GetUpdateUsersRequest GetUpdateUsersRequestType - -type GetUpdateUsersResponse GetUpdateUsersResponseType - -type UpdateUpdateUserRequest UpdateUpdateUserRequestType - -type UpdateUpdateUserResponse UpdateUpdateUserResponseType - -type DeleteOneUpdateUserRequest DeleteOneUpdateUserRequestType - -type DeleteOneUpdateUserResponse DeleteOneUpdateUserResponseType - -type UpdateUserPasswordRequest UpdateUserPasswordRequestType - -type UpdateUserPasswordResponse UpdateUserPasswordResponseType - -type BlockUserRequest BlockUserRequestType - -type BlockUserResponse BlockUserResponseType - -type UnblockUserRequest UnblockUserRequestType - -type UnblockUserResponse UnblockUserResponseType - -type CreateContactRequest CreateContactRequestType - -type CreateContactResponse CreateContactResponseType - -type GetOneContactRequest GetOneContactRequestType - -type GetOneContactResponse GetOneContactResponseType - -type GetContactsRequest GetContactsRequestType - -type GetContactsResponse GetContactsResponseType - -type DeleteOneContactRequest DeleteOneContactRequestType - -type DeleteOneContactResponse DeleteOneContactResponseType - -type UpdateContactRequest UpdateContactRequestType - -type UpdateContactResponse UpdateContactResponseType - -type CreateCustomerRequest CreateCustomerRequestType - -type CreateCustomerResponse CreateCustomerResponseType - -type UpdateCustomerRequest UpdateCustomerRequestType - -type UpdateCustomerResponse UpdateCustomerResponseType - -type GetOneCustomerRequest GetOneCustomerRequestType - -type GetOneCustomerResponse GetOneCustomerResponseType - -type GetCustomersRequest GetCustomersRequestType - -type GetCustomersResponse GetCustomersResponseType - -type DeleteOneCustomerRequest DeleteOneCustomerRequestType - -type DeleteOneCustomerResponse DeleteOneCustomerResponseType - -type GetCustomerPrefsRequest GetCustomerPrefsRequestType - -type GetCustomerPrefsResponse GetCustomerPrefsResponseType - -type SetCustomerPrefsRequest SetCustomerPrefsRequestType - -type SetCustomerPrefsResponse SetCustomerPrefsResponseType - -type GetCustomerIPACLRequest GetCustomerIPACLRequestType - -type GetCustomerIPACLResponse GetCustomerIPACLResponseType - -type SetCustomerIPACLRequest SetCustomerIPACLRequestType - -type SetCustomerIPACLResponse SetCustomerIPACLResponseType - -type CreateCustomerOracleMetadataRequest CreateCustomerOracleMetadataRequestType - -type CreateCustomerOracleMetadataResponse CreateCustomerOracleMetadataResponseType - -type UpdateCustomerOracleMetadataRequest UpdateCustomerOracleMetadataRequestType - -type UpdateCustomerOracleMetadataResponse UpdateCustomerOracleMetadataResponseType - -type GetCustomerOracleMetadataRequest GetCustomerOracleMetadataRequestType - -type GetCustomerOracleMetadataResponse GetCustomerOracleMetadataResponseType - -type DeleteCustomerOracleMetadataRequest DeleteCustomerOracleMetadataRequestType - -type DeleteCustomerOracleMetadataResponse DeleteCustomerOracleMetadataResponseType - -type CreateZoneOracleMetadataRequest CreateZoneOracleMetadataRequestType - -type CreateZoneOracleMetadataResponse CreateZoneOracleMetadataResponseType - -type UpdateZoneOracleMetadataRequest UpdateZoneOracleMetadataRequestType - -type UpdateZoneOracleMetadataResponse UpdateZoneOracleMetadataResponseType - -type GetZoneOracleMetadataRequest GetZoneOracleMetadataRequestType - -type GetZoneOracleMetadataResponse GetZoneOracleMetadataResponseType - -type DeleteZoneOracleMetadataRequest DeleteZoneOracleMetadataRequestType - -type DeleteZoneOracleMetadataResponse DeleteZoneOracleMetadataResponseType - -type OCIMigrateRequest OCIMigrateRequestType - -type OCIMigrateResponse OCIMigrateResponseType - -type CreateDDNSRequest CreateDDNSRequestType - -type CreateDDNSResponse CreateDDNSResponseType - -type GetOneDDNSRequest GetOneDDNSRequestType - -type GetOneDDNSResponse GetOneDDNSResponseType - -type GetDDNSsRequest GetDDNSsRequestType - -type GetDDNSsResponse GetDDNSsResponseType - -type UpdateDDNSRequest UpdateDDNSRequestType - -type UpdateDDNSResponse UpdateDDNSResponseType - -type DeleteOneDDNSRequest DeleteOneDDNSRequestType - -type DeleteOneDDNSResponse DeleteOneDDNSResponseType - -type ActivateDDNSRequest ActivateDDNSRequestType - -type ActivateDDNSResponse ActivateDDNSResponseType - -type DeactivateDDNSRequest DeactivateDDNSRequestType - -type DeactivateDDNSResponse DeactivateDDNSResponseType - -type ResetDDNSRequest ResetDDNSRequestType - -type ResetDDNSResponse ResetDDNSResponseType - -type GetUpdateUserPasswordRequest GetUpdateUserPasswordRequestType - -type GetUpdateUserPasswordResponse GetUpdateUserPasswordResponseType - -type CreateDDNSHostRequest CreateDDNSHostRequestType - -type CreateDDNSHostResponse CreateDDNSHostResponseType - -type CreateUpdateUserRequest CreateUpdateUserRequestType - -type CreateUpdateUserResponse CreateUpdateUserResponseType - -type AddDDNSRequest AddDDNSRequestType - -type AddDDNSResponse AddDDNSResponseType - -type CreateFailoverRequest CreateFailoverRequestType - -type CreateFailoverResponse CreateFailoverResponseType - -type GetOneFailoverRequest GetOneFailoverRequestType - -type GetOneFailoverResponse GetOneFailoverResponseType - -type GetFailoversRequest GetFailoversRequestType - -type GetFailoversResponse GetFailoversResponseType - -type UpdateFailoverRequest UpdateFailoverRequestType - -type UpdateFailoverResponse UpdateFailoverResponseType - -type DeleteOneFailoverRequest DeleteOneFailoverRequestType - -type DeleteOneFailoverResponse DeleteOneFailoverResponseType - -type ActivateFailoverRequest ActivateFailoverRequestType - -type ActivateFailoverResponse ActivateFailoverResponseType - -type DeactivateFailoverRequest DeactivateFailoverRequestType - -type DeactivateFailoverResponse DeactivateFailoverResponseType - -type RecoverFailoverRequest RecoverFailoverRequestType - -type RecoverFailoverResponse RecoverFailoverResponseType - -type CreateLoadBalanceRequest CreateLoadBalanceRequestType - -type CreateLoadBalanceResponse CreateLoadBalanceResponseType - -type GetOneLoadBalanceRequest GetOneLoadBalanceRequestType - -type GetOneLoadBalanceResponse GetOneLoadBalanceResponseType - -type GetLoadBalancesRequest GetLoadBalancesRequestType - -type GetLoadBalancesResponse GetLoadBalancesResponseType - -type UpdateLoadBalanceRequest UpdateLoadBalanceRequestType - -type UpdateLoadBalanceResponse UpdateLoadBalanceResponseType - -type DeleteOneLoadBalanceRequest DeleteOneLoadBalanceRequestType - -type DeleteOneLoadBalanceResponse DeleteOneLoadBalanceResponseType - -type ActivateLoadBalanceRequest ActivateLoadBalanceRequestType - -type ActivateLoadBalanceResponse ActivateLoadBalanceResponseType - -type DeactivateLoadBalanceRequest DeactivateLoadBalanceRequestType - -type DeactivateLoadBalanceResponse DeactivateLoadBalanceResponseType - -type RecoverLoadBalanceRequest RecoverLoadBalanceRequestType - -type RecoverLoadBalanceResponse RecoverLoadBalanceResponseType - -type RecoverLoadBalanceIPRequest RecoverLoadBalanceIPRequestType - -type RecoverLoadBalanceIPResponse RecoverLoadBalanceIPResponseType - -type CreateLoadBalancePoolEntryRequest CreateLoadBalancePoolEntryRequestType - -type CreateLoadBalancePoolEntryResponse CreateLoadBalancePoolEntryResponseType - -type UpdateLoadBalancePoolEntryRequest UpdateLoadBalancePoolEntryRequestType - -type UpdateLoadBalancePoolEntryResponse UpdateLoadBalancePoolEntryResponseType - -type GetOneLoadBalancePoolEntryRequest GetOneLoadBalancePoolEntryRequestType - -type GetOneLoadBalancePoolEntryResponse GetOneLoadBalancePoolEntryResponseType - -type GetLoadBalancePoolEntriesRequest GetLoadBalancePoolEntriesRequestType - -type GetLoadBalancePoolEntriesResponse GetLoadBalancePoolEntriesResponseType - -type DeleteOneLoadBalancePoolEntryRequest DeleteOneLoadBalancePoolEntryRequestType - -type DeleteOneLoadBalancePoolEntryResponse DeleteOneLoadBalancePoolEntryResponseType - -type CreateGSLBRequest CreateGSLBRequestType - -type CreateGSLBResponse CreateGSLBResponseType - -type GetOneGSLBRequest GetOneGSLBRequestType - -type GetOneGSLBResponse GetOneGSLBResponseType - -type GetGSLBsRequest GetGSLBsRequestType - -type GetGSLBsResponse GetGSLBsResponseType - -type UpdateGSLBRequest UpdateGSLBRequestType - -type UpdateGSLBResponse UpdateGSLBResponseType - -type DeleteOneGSLBRequest DeleteOneGSLBRequestType - -type DeleteOneGSLBResponse DeleteOneGSLBResponseType - -type ActivateGSLBRequest ActivateGSLBRequestType - -type ActivateGSLBResponse ActivateGSLBResponseType - -type DeactivateGSLBRequest DeactivateGSLBRequestType - -type DeactivateGSLBResponse DeactivateGSLBResponseType - -type RecoverGSLBRequest RecoverGSLBRequestType - -type RecoverGSLBResponse RecoverGSLBResponseType - -type RecoverGSLBIPRequest RecoverGSLBIPRequestType - -type RecoverGSLBIPResponse RecoverGSLBIPResponseType - -type CreateGSLBRegionRequest CreateGSLBRegionRequestType - -type CreateGSLBRegionResponse CreateGSLBRegionResponseType - -type GetOneGSLBRegionRequest GetOneGSLBRegionRequestType - -type GetOneGSLBRegionResponse GetOneGSLBRegionResponseType - -type GetGSLBRegionsRequest GetGSLBRegionsRequestType - -type GetGSLBRegionsResponse GetGSLBRegionsResponseType - -type UpdateGSLBRegionRequest UpdateGSLBRegionRequestType - -type UpdateGSLBRegionResponse UpdateGSLBRegionResponseType - -type DeleteOneGSLBRegionRequest DeleteOneGSLBRegionRequestType - -type DeleteOneGSLBRegionResponse DeleteOneGSLBRegionResponseType - -type CreateGSLBRegionPoolEntryRequest CreateGSLBRegionPoolEntryRequestType - -type CreateGSLBRegionPoolEntryResponse CreateGSLBRegionPoolEntryResponseType - -type UpdateGSLBRegionPoolEntryRequest UpdateGSLBRegionPoolEntryRequestType - -type UpdateGSLBRegionPoolEntryResponse UpdateGSLBRegionPoolEntryResponseType - -type GetOneGSLBRegionPoolEntryRequest GetOneGSLBRegionPoolEntryRequestType - -type GetOneGSLBRegionPoolEntryResponse GetOneGSLBRegionPoolEntryResponseType - -type GetGSLBRegionPoolEntriesRequest GetGSLBRegionPoolEntriesRequestType - -type GetGSLBRegionPoolEntriesResponse GetGSLBRegionPoolEntriesResponseType - -type DeleteOneGSLBRegionPoolEntryRequest DeleteOneGSLBRegionPoolEntryRequestType - -type DeleteOneGSLBRegionPoolEntryResponse DeleteOneGSLBRegionPoolEntryResponseType - -type CreateRTTMRequest CreateRTTMRequestType - -type CreateRTTMResponse CreateRTTMResponseType - -type GetOneRTTMRequest GetOneRTTMRequestType - -type GetOneRTTMResponse GetOneRTTMResponseType - -type GetRTTMsRequest GetRTTMsRequestType - -type GetRTTMsResponse GetRTTMsResponseType - -type UpdateRTTMRequest UpdateRTTMRequestType - -type UpdateRTTMResponse UpdateRTTMResponseType - -type DeleteOneRTTMRequest DeleteOneRTTMRequestType - -type DeleteOneRTTMResponse DeleteOneRTTMResponseType - -type ActivateRTTMRequest ActivateRTTMRequestType - -type ActivateRTTMResponse ActivateRTTMResponseType - -type DeactivateRTTMRequest DeactivateRTTMRequestType - -type DeactivateRTTMResponse DeactivateRTTMResponseType - -type RecoverRTTMRequest RecoverRTTMRequestType - -type RecoverRTTMResponse RecoverRTTMResponseType - -type RecoverRTTMIPRequest RecoverRTTMIPRequestType - -type RecoverRTTMIPResponse RecoverRTTMIPResponseType - -type GetRTTMLogsRequest GetRTTMLogsRequestType - -type GetRTTMLogsResponse GetRTTMLogsResponseType - -type GetRTTMRRSetsRequest GetRTTMRRSetsRequestType - -type GetRTTMRRSetsResponse GetRTTMRRSetsResponseType - -type CreateRTTMRegionRequest CreateRTTMRegionRequestType - -type CreateRTTMRegionResponse CreateRTTMRegionResponseType - -type GetOneRTTMRegionRequest GetOneRTTMRegionRequestType - -type GetOneRTTMRegionResponse GetOneRTTMRegionResponseType - -type GetRTTMRegionsRequest GetRTTMRegionsRequestType - -type GetRTTMRegionsResponse GetRTTMRegionsResponseType - -type UpdateRTTMRegionRequest UpdateRTTMRegionRequestType - -type UpdateRTTMRegionResponse UpdateRTTMRegionResponseType - -type DeleteOneRTTMRegionRequest DeleteOneRTTMRegionRequestType - -type DeleteOneRTTMRegionResponse DeleteOneRTTMRegionResponseType - -type CreateRTTMRegionPoolEntryRequest CreateRTTMRegionPoolEntryRequestType - -type CreateRTTMRegionPoolEntryResponse CreateRTTMRegionPoolEntryResponseType - -type UpdateRTTMRegionPoolEntryRequest UpdateRTTMRegionPoolEntryRequestType - -type UpdateRTTMRegionPoolEntryResponse UpdateRTTMRegionPoolEntryResponseType - -type GetOneRTTMRegionPoolEntryRequest GetOneRTTMRegionPoolEntryRequestType - -type GetOneRTTMRegionPoolEntryResponse GetOneRTTMRegionPoolEntryResponseType - -type GetRTTMRegionPoolEntriesRequest GetRTTMRegionPoolEntriesRequestType - -type GetRTTMRegionPoolEntriesResponse GetRTTMRegionPoolEntriesResponseType - -type DeleteOneRTTMRegionPoolEntryRequest DeleteOneRTTMRegionPoolEntryRequestType - -type DeleteOneRTTMRegionPoolEntryResponse DeleteOneRTTMRegionPoolEntryResponseType - -type CreateHTTPRedirectRequest CreateHTTPRedirectRequestType - -type CreateHTTPRedirectResponse CreateHTTPRedirectResponseType - -type GetOneHTTPRedirectRequest GetOneHTTPRedirectRequestType - -type GetOneHTTPRedirectResponse GetOneHTTPRedirectResponseType - -type GetHTTPRedirectsRequest GetHTTPRedirectsRequestType - -type GetHTTPRedirectsResponse GetHTTPRedirectsResponseType - -type UpdateHTTPRedirectRequest UpdateHTTPRedirectRequestType - -type UpdateHTTPRedirectResponse UpdateHTTPRedirectResponseType - -type DeleteOneHTTPRedirectRequest DeleteOneHTTPRedirectRequestType - -type DeleteOneHTTPRedirectResponse DeleteOneHTTPRedirectResponseType - -type CreateAdvRedirectRuleRequest CreateAdvRedirectRuleRequestType - -type CreateAdvRedirectRuleResponse CreateAdvRedirectRuleResponseType - -type UpdateAdvRedirectRuleRequest UpdateAdvRedirectRuleRequestType - -type UpdateAdvRedirectRuleResponse UpdateAdvRedirectRuleResponseType - -type GetOneAdvRedirectRuleRequest GetOneAdvRedirectRuleRequestType - -type GetOneAdvRedirectRuleResponse GetOneAdvRedirectRuleResponseType - -type GetAdvRedirectRulesRequest GetAdvRedirectRulesRequestType - -type GetAdvRedirectRulesResponse GetAdvRedirectRulesResponseType - -type DeleteOneAdvRedirectRuleRequest DeleteOneAdvRedirectRuleRequestType - -type DeleteOneAdvRedirectRuleResponse DeleteOneAdvRedirectRuleResponseType - -type CreateAdvRedirectRequest CreateAdvRedirectRequestType - -type CreateAdvRedirectResponse CreateAdvRedirectResponseType - -type GetOneAdvRedirectRequest GetOneAdvRedirectRequestType - -type GetOneAdvRedirectResponse GetOneAdvRedirectResponseType - -type GetAdvRedirectsRequest GetAdvRedirectsRequestType - -type GetAdvRedirectsResponse GetAdvRedirectsResponseType - -type UpdateAdvRedirectRequest UpdateAdvRedirectRequestType - -type UpdateAdvRedirectResponse UpdateAdvRedirectResponseType - -type DeleteOneAdvRedirectRequest DeleteOneAdvRedirectRequestType - -type DeleteOneAdvRedirectResponse DeleteOneAdvRedirectResponseType - -type GetNodeListRequest GetNodeListRequestType - -type GetNodeListResponse GetNodeListResponseType - -type PublishZoneRequest PublishZoneRequestType - -type PublishZoneResponse PublishZoneResponseType - -type PruneZoneRequest PruneZoneRequestType - -type PruneZoneResponse PruneZoneResponseType - -type FreezeZoneRequest FreezeZoneRequestType - -type FreezeZoneResponse FreezeZoneResponseType - -type ThawZoneRequest ThawZoneRequestType - -type ThawZoneResponse ThawZoneResponseType - -type RestoreZoneRequest RestoreZoneRequestType - -type RestoreZoneResponse RestoreZoneResponseType - -type BlockZoneRequest BlockZoneRequestType - -type BlockZoneResponse BlockZoneResponseType - -type DeleteZoneChangesetRequest DeleteZoneChangesetRequestType - -type DeleteZoneChangesetResponse DeleteZoneChangesetResponseType - -type GetZoneChangesetRequest GetZoneChangesetRequestType - -type GetZoneChangesetResponse GetZoneChangesetResponseType - -type GetZoneNotesRequest GetZoneNotesRequestType - -type GetZoneNotesResponse GetZoneNotesResponseType - -type UploadZoneFileRequest UploadZoneFileRequestType - -type UploadZoneFileResponse UploadZoneFileResponseType - -type TransferZoneInRequest TransferZoneInRequestType - -type TransferZoneInResponse TransferZoneInResponseType - -type GetTransferStatusRequest GetTransferStatusRequestType - -type GetTransferStatusResponse GetTransferStatusResponseType - -type GetZoneConfigOptionsRequest GetZoneConfigOptionsRequestType - -type GetZoneConfigOptionsResponse GetZoneConfigOptionsResponseType - -type SetZoneConfigOptionsRequest SetZoneConfigOptionsRequestType - -type SetZoneConfigOptionsResponse SetZoneConfigOptionsResponseType - -type CreateIPTrackRequest CreateIPTrackRequestType - -type CreateIPTrackResponse CreateIPTrackResponseType - -type GetOneIPTrackRequest GetOneIPTrackRequestType - -type GetOneIPTrackResponse GetOneIPTrackResponseType - -type GetIPTracksRequest GetIPTracksRequestType - -type GetIPTracksResponse GetIPTracksResponseType - -type UpdateIPTrackRequest UpdateIPTrackRequestType - -type UpdateIPTrackResponse UpdateIPTrackResponseType - -type DeleteOneIPTrackRequest DeleteOneIPTrackRequestType - -type DeleteOneIPTrackResponse DeleteOneIPTrackResponseType - -type ActivateIPTrackRequest ActivateIPTrackRequestType - -type ActivateIPTrackResponse ActivateIPTrackResponseType - -type DeactivateIPTrackRequest DeactivateIPTrackRequestType - -type DeactivateIPTrackResponse DeactivateIPTrackResponseType - -type CreateDNSSECRequest CreateDNSSECRequestType - -type CreateDNSSECResponse CreateDNSSECResponseType - -type GetOneDNSSECRequest GetOneDNSSECRequestType - -type GetOneDNSSECResponse GetOneDNSSECResponseType - -type GetDNSSECsRequest GetDNSSECsRequestType - -type GetDNSSECsResponse GetDNSSECsResponseType - -type UpdateDNSSECRequest UpdateDNSSECRequestType - -type UpdateDNSSECResponse UpdateDNSSECResponseType - -type DeleteOneDNSSECRequest DeleteOneDNSSECRequestType - -type DeleteOneDNSSECResponse DeleteOneDNSSECResponseType - -type ActivateDNSSECRequest ActivateDNSSECRequestType - -type ActivateDNSSECResponse ActivateDNSSECResponseType - -type DeactivateDNSSECRequest DeactivateDNSSECRequestType - -type DeactivateDNSSECResponse DeactivateDNSSECResponseType - -type GetDNSSECTimelineRequest GetDNSSECTimelineRequestType - -type GetDNSSECTimelineResponse GetDNSSECTimelineResponseType - -type GetTasksRequest GetTasksRequestType - -type GetTasksResponse GetTasksResponseType - -type GetOneTaskRequest GetOneTaskRequestType - -type GetOneTaskResponse GetOneTaskResponseType - -type CancelTaskRequest CancelTaskRequestType - -type CancelTaskResponse CancelTaskResponseType - -type CreateExtNameserverRequest CreateExtNameserverRequestType - -type CreateExtNameserverResponse CreateExtNameserverResponseType - -type GetOneExtNameserverRequest GetOneExtNameserverRequestType - -type GetOneExtNameserverResponse GetOneExtNameserverResponseType - -type GetExtNameserversRequest GetExtNameserversRequestType - -type GetExtNameserversResponse GetExtNameserversResponseType - -type UpdateExtNameserverRequest UpdateExtNameserverRequestType - -type UpdateExtNameserverResponse UpdateExtNameserverResponseType - -type DeleteOneExtNameserverRequest DeleteOneExtNameserverRequestType - -type DeleteOneExtNameserverResponse DeleteOneExtNameserverResponseType - -type Messages struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ messages"` - - Source string `xml:"source,omitempty" json:"source,omitempty"` - - Lvl string `xml:"lvl,omitempty" json:"lvl,omitempty"` - - Err_cd string `xml:"err_cd,omitempty" json:"err_cd,omitempty"` - - Info string `xml:"info,omitempty" json:"info,omitempty"` -} - -type WeightData struct { - A_weight []string `xml:"a_weight,omitempty" json:"a_weight,omitempty"` - - Aaaa_weight []string `xml:"aaaa_weight,omitempty" json:"aaaa_weight,omitempty"` - - Cname_weight []string `xml:"cname_weight,omitempty" json:"cname_weight,omitempty"` -} - -type ServeCountData struct { - A_serve_count string `xml:"a_serve_count,omitempty" json:"a_serve_count,omitempty"` - - Aaaa_serve_count string `xml:"aaaa_serve_count,omitempty" json:"aaaa_serve_count,omitempty"` -} - -type TTLData struct { - A_ttl int32 `xml:"a_ttl,omitempty" json:"a_ttl,omitempty"` - - Aaaa_ttl int32 `xml:"aaaa_ttl,omitempty" json:"aaaa_ttl,omitempty"` - - Cert_ttl int32 `xml:"cert_ttl,omitempty" json:"cert_ttl,omitempty"` - - Cname_ttl int32 `xml:"cname_ttl,omitempty" json:"cname_ttl,omitempty"` - - Mx_ttl int32 `xml:"mx_ttl,omitempty" json:"mx_ttl,omitempty"` - - Txt_ttl int32 `xml:"txt_ttl,omitempty" json:"txt_ttl,omitempty"` - - Spf_ttl int32 `xml:"spf_ttl,omitempty" json:"spf_ttl,omitempty"` - - Ptr_ttl int32 `xml:"ptr_ttl,omitempty" json:"ptr_ttl,omitempty"` - - Loc_ttl int32 `xml:"loc_ttl,omitempty" json:"loc_ttl,omitempty"` - - Srv_ttl int32 `xml:"srv_ttl,omitempty" json:"srv_ttl,omitempty"` - - Rp_ttl int32 `xml:"rp_ttl,omitempty" json:"rp_ttl,omitempty"` - - Key_ttl int32 `xml:"key_ttl,omitempty" json:"key_ttl,omitempty"` - - Dnskey_ttl int32 `xml:"dnskey_ttl,omitempty" json:"dnskey_ttl,omitempty"` - - Sshfp_ttl int32 `xml:"sshfp_ttl,omitempty" json:"sshfp_ttl,omitempty"` - - Dhcid_ttl int32 `xml:"dhcid_ttl,omitempty" json:"dhcid_ttl,omitempty"` - - Nsap_ttl int32 `xml:"nsap_ttl,omitempty" json:"nsap_ttl,omitempty"` - - Px_ttl int32 `xml:"px_ttl,omitempty" json:"px_ttl,omitempty"` -} - -type LabelData struct { - A_label []string `xml:"a_label,omitempty" json:"a_label,omitempty"` - - Aaaa_label []string `xml:"aaaa_label,omitempty" json:"aaaa_label,omitempty"` - - Cert_label []string `xml:"cert_label,omitempty" json:"cert_label,omitempty"` - - Cname_label []string `xml:"cname_label,omitempty" json:"cname_label,omitempty"` - - Mx_label []string `xml:"mx_label,omitempty" json:"mx_label,omitempty"` - - Txt_label []string `xml:"txt_label,omitempty" json:"txt_label,omitempty"` - - Spf_label []string `xml:"spf_label,omitempty" json:"spf_label,omitempty"` - - Ptr_label []string `xml:"ptr_label,omitempty" json:"ptr_label,omitempty"` - - Loc_label []string `xml:"loc_label,omitempty" json:"loc_label,omitempty"` - - Srv_label []string `xml:"srv_label,omitempty" json:"srv_label,omitempty"` - - Rp_label []string `xml:"rp_label,omitempty" json:"rp_label,omitempty"` - - Key_label []string `xml:"key_label,omitempty" json:"key_label,omitempty"` - - Dnskey_label []string `xml:"dnskey_label,omitempty" json:"dnskey_label,omitempty"` - - Sshfp_label []string `xml:"sshfp_label,omitempty" json:"sshfp_label,omitempty"` - - Dhcid_label []string `xml:"dhcid_label,omitempty" json:"dhcid_label,omitempty"` - - Nsap_label []string `xml:"nsap_label,omitempty" json:"nsap_label,omitempty"` - - Px_label []string `xml:"px_label,omitempty" json:"px_label,omitempty"` -} - -type GeoRegionGroup struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Rdata *ANYRData `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Countries []string `xml:"countries,omitempty" json:"countries,omitempty"` - - Serve_count *ServeCountData `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - Weight *WeightData `xml:"weight,omitempty" json:"weight,omitempty"` - - Ttl *TTLData `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Label *LabelData `xml:"label,omitempty" json:"label,omitempty"` -} - -type GeoRegionGroupData struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Rdata *ANYRData `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Countries []string `xml:"countries,omitempty" json:"countries,omitempty"` - - Serve_count *ServeCountData `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - Weight *WeightData `xml:"weight,omitempty" json:"weight,omitempty"` - - Ttl *TTLData `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Label *LabelData `xml:"label,omitempty" json:"label,omitempty"` - - Service_name string `xml:"service_name,omitempty" json:"service_name,omitempty"` -} - -type GeoNode struct { - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type Geo struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Groups []*GeoRegionGroup `xml:"groups,omitempty" json:"groups,omitempty"` - - Nodes []*GeoNode `xml:"nodes,omitempty" json:"nodes,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Active string `xml:"active,omitempty" json:"active,omitempty"` -} - -type DSFRData struct { - Type_ string `xml:"type,omitempty" json:"type,omitempty"` - - Data *GenericRData `xml:"data,omitempty" json:"data,omitempty"` - - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type DSFRecord struct { - Master_line string `xml:"master_line,omitempty" json:"master_line,omitempty"` - - // Rdata to update the svc record with - Rdata *ANYOneRData `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Weight string `xml:"weight,omitempty" json:"weight,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Endpoints []string `xml:"endpoints,omitempty" json:"endpoints,omitempty"` - - Endpoint_up_count string `xml:"endpoint_up_count,omitempty" json:"endpoint_up_count,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` -} - -type DSFRecordData struct { - Dsf_record_id string `xml:"dsf_record_id,omitempty" json:"dsf_record_id,omitempty"` - - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Dsf_record_set_id string `xml:"dsf_record_set_id,omitempty" json:"dsf_record_set_id,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Master_line string `xml:"master_line,omitempty" json:"master_line,omitempty"` - - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Endpoints []string `xml:"endpoints,omitempty" json:"endpoints,omitempty"` - - Endpoint_up_count int32 `xml:"endpoint_up_count,omitempty" json:"endpoint_up_count,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - Rdata_class string `xml:"rdata_class,omitempty" json:"rdata_class,omitempty"` - - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata []*DSFRData `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Response_time int32 `xml:"response_time,omitempty" json:"response_time,omitempty"` - - Torpidity int32 `xml:"torpidity,omitempty" json:"torpidity,omitempty"` - - Last_monitored int32 `xml:"last_monitored,omitempty" json:"last_monitored,omitempty"` - - Pending_change string `xml:"pending_change,omitempty" json:"pending_change,omitempty"` -} - -type DSFRecordSet struct { - Dsf_record_set_id string `xml:"dsf_record_set_id,omitempty" json:"dsf_record_set_id,omitempty"` - - Failover string `xml:"failover,omitempty" json:"failover,omitempty"` - - Rdata_class string `xml:"rdata_class,omitempty" json:"rdata_class,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` - - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - Serve_count string `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - Fail_count string `xml:"fail_count,omitempty" json:"fail_count,omitempty"` - - Trouble_count string `xml:"trouble_count,omitempty" json:"trouble_count,omitempty"` - - Torpidity_max string `xml:"torpidity_max,omitempty" json:"torpidity_max,omitempty"` - - Index string `xml:"index,omitempty" json:"index,omitempty"` - - Records []*DSFRecord `xml:"records,omitempty" json:"records,omitempty"` -} - -type DSFRecordSetData struct { - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Dsf_record_set_id string `xml:"dsf_record_set_id,omitempty" json:"dsf_record_set_id,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Rdata_class string `xml:"rdata_class,omitempty" json:"rdata_class,omitempty"` - - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Serve_count string `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - Fail_count string `xml:"fail_count,omitempty" json:"fail_count,omitempty"` - - Trouble_count string `xml:"trouble_count,omitempty" json:"trouble_count,omitempty"` - - Torpidity_max string `xml:"torpidity_max,omitempty" json:"torpidity_max,omitempty"` - - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - Pending_change string `xml:"pending_change,omitempty" json:"pending_change,omitempty"` - - Ttl_derived string `xml:"ttl_derived,omitempty" json:"ttl_derived,omitempty"` - - Records []*DSFRecordData `xml:"records,omitempty" json:"records,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Last_monitored string `xml:"last_monitored,omitempty" json:"last_monitored,omitempty"` -} - -type DSFRecordSetFailoverChain struct { - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Core string `xml:"core,omitempty" json:"core,omitempty"` - - Record_sets []*DSFRecordSet `xml:"record_sets,omitempty" json:"record_sets,omitempty"` -} - -type DSFRecordSetFailoverChainData struct { - Dsf_record_set_failover_chain_id string `xml:"dsf_record_set_failover_chain_id,omitempty" json:"dsf_record_set_failover_chain_id,omitempty"` - - Dsf_response_pool_id string `xml:"dsf_response_pool_id,omitempty" json:"dsf_response_pool_id,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Core string `xml:"core,omitempty" json:"core,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Pending_change string `xml:"pending_change,omitempty" json:"pending_change,omitempty"` - - Record_sets []*DSFRecordSetData `xml:"record_sets,omitempty" json:"record_sets,omitempty"` -} - -type DSFCriteria struct { - Geoip *DSFGeoIPCriteria `xml:"geoip,omitempty" json:"geoip,omitempty"` -} - -type DSFGeoIPCriteria struct { - Country []string `xml:"country,omitempty" json:"country,omitempty"` - - Region []string `xml:"region,omitempty" json:"region,omitempty"` - - Province []string `xml:"province,omitempty" json:"province,omitempty"` -} - -type DSFRulesetData struct { - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Dsf_ruleset_id string `xml:"dsf_ruleset_id,omitempty" json:"dsf_ruleset_id,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Criteria_type string `xml:"criteria_type,omitempty" json:"criteria_type,omitempty"` - - Criteria *DSFCriteria `xml:"criteria,omitempty" json:"criteria,omitempty"` - - Ordering string `xml:"ordering,omitempty" json:"ordering,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - Response_pools []*DSFResponsePoolData `xml:"response_pools,omitempty" json:"response_pools,omitempty"` - - Pending_change string `xml:"pending_change,omitempty" json:"pending_change,omitempty"` -} - -type DSFRuleset struct { - Dsf_ruleset_id string `xml:"dsf_ruleset_id,omitempty" json:"dsf_ruleset_id,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // The type of criteria contained within this Pool - Criteria_type string `xml:"criteria_type,omitempty" json:"criteria_type,omitempty"` - - // Required based on criteria_type. Filtered in API/BLL - Criteria *DSFCriteria `xml:"criteria,omitempty" json:"criteria,omitempty"` - - // where in the list of rulesets this should be. Defaults to last. - Ordering string `xml:"ordering,omitempty" json:"ordering,omitempty"` - - Response_pools []*DSFResponsePool `xml:"response_pools,omitempty" json:"response_pools,omitempty"` -} - -type DSFResponsePoolData struct { - Dsf_response_pool_id string `xml:"dsf_response_pool_id,omitempty" json:"dsf_response_pool_id,omitempty"` - - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Notify Object - Notifier string `xml:"notifier,omitempty" json:"notifier,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - Core_set_count string `xml:"core_set_count,omitempty" json:"core_set_count,omitempty"` - - Pending_change string `xml:"pending_change,omitempty" json:"pending_change,omitempty"` - - Rs_chains []*DSFRecordSetFailoverChainData `xml:"rs_chains,omitempty" json:"rs_chains,omitempty"` - - Rulesets []*DSFRulesetData `xml:"rulesets,omitempty" json:"rulesets,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Last_monitored string `xml:"last_monitored,omitempty" json:"last_monitored,omitempty"` -} - -type DSFResponsePool struct { - Dsf_response_pool_id string `xml:"dsf_response_pool_id,omitempty" json:"dsf_response_pool_id,omitempty"` - - Failover string `xml:"failover,omitempty" json:"failover,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Notifier string `xml:"notifier,omitempty" json:"notifier,omitempty"` - - Core_set_count string `xml:"core_set_count,omitempty" json:"core_set_count,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - Rs_chains []*DSFRecordSetFailoverChain `xml:"rs_chains,omitempty" json:"rs_chains,omitempty"` - - Ruleset string `xml:"ruleset,omitempty" json:"ruleset,omitempty"` - - Index string `xml:"index,omitempty" json:"index,omitempty"` -} - -type DSFData struct { - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Active string `xml:"active,omitempty" json:"active,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Nodes []*DSFNode `xml:"nodes,omitempty" json:"nodes,omitempty"` - - Notifiers []*NotifierLinkData `xml:"notifiers,omitempty" json:"notifiers,omitempty"` - - Rulesets []*DSFRulesetData `xml:"rulesets,omitempty" json:"rulesets,omitempty"` - - Pending_change string `xml:"pending_change,omitempty" json:"pending_change,omitempty"` -} - -type DSFNode struct { - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DSFMonitorData struct { - - // ID - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` - - // Label for the DSF Monitor - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Indicates whether or not the DSF Monitor is active - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // Num of responses to determine status - Response_count string `xml:"response_count,omitempty" json:"response_count,omitempty"` - - // Interval, in seconds, between probes - Probe_interval string `xml:"probe_interval,omitempty" json:"probe_interval,omitempty"` - - // number of attempted retries on failure before giving up - Retries string `xml:"retries,omitempty" json:"retries,omitempty"` - - // name of the protocol to monitor - Protocol string `xml:"protocol,omitempty" json:"protocol,omitempty"` - - // options pertaining the monitor - Options *DSFMonitorOptions `xml:"options,omitempty" json:"options,omitempty"` - - // IDs of attached notifiers - Notifier []string `xml:"notifier,omitempty" json:"notifier,omitempty"` - - // Endpoints to monitor - Endpoints []*DSFMonitorEndpoint `xml:"endpoints,omitempty" json:"endpoints,omitempty"` - - // how are agents chosen? - Agent_scheme string `xml:"agent_scheme,omitempty" json:"agent_scheme,omitempty"` - - // IDs of attached services - Services []string `xml:"services,omitempty" json:"services,omitempty"` -} - -type DSFMonitorEndpoint struct { - - // Indicates whether or not the end point is active - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // label of the endpoint - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // address for the endpoint - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // ordered list of preferred sites for monitoring - Site_prefs []string `xml:"site_prefs,omitempty" json:"site_prefs,omitempty"` -} - -type DSFMonitorOptions struct { - - // time, in seconds, before the check timeout - Timeout string `xml:"timeout,omitempty" json:"timeout,omitempty"` - - // an alternate port to connect to - Port string `xml:"port,omitempty" json:"port,omitempty"` - - // a specific path to request - Path string `xml:"path,omitempty" json:"path,omitempty"` - - // a value to pass into the `HOST:` header - Host string `xml:"host,omitempty" json:"host,omitempty"` - - // additional header fields - Header string `xml:"header,omitempty" json:"header,omitempty"` - - // a string to search for in the response - Expected string `xml:"expected,omitempty" json:"expected,omitempty"` - - Host_override []*DSFMonitorHostOverride `xml:"host_override,omitempty" json:"host_override,omitempty"` -} - -type DSFMonitorHostOverride struct { - - // address of an endpoint - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // host to use when checking that endpoint - Host string `xml:"host,omitempty" json:"host,omitempty"` -} - -type DSFMonitorSitesData struct { - - // information for a site performing DSF monitoring - DSFMonitorSites []*DSFMonitorSite `xml:"DSFMonitorSites,omitempty" json:"DSFMonitorSites,omitempty"` -} - -type DSFMonitorSite struct { - - // site code for the monitoring machine - Code string `xml:"code,omitempty" json:"code,omitempty"` - - // description of the machine's location - Description string `xml:"description,omitempty" json:"description,omitempty"` - - // CIDR of the monitoring machine(s) - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type Notifier struct { - - // Label for the Notifier object - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // List of Recipients attached to the Notifier - Recipients []*Recipient `xml:"recipients,omitempty" json:"recipients,omitempty"` - - // List of services attached to the Notifier - Services []*Service `xml:"services,omitempty" json:"services,omitempty"` -} - -type NotifierLink struct { - - // Public_id of the Notifier to link to - Notifier_id string `xml:"notifier_id,omitempty" json:"notifier_id,omitempty"` - - // filters on when services should fire the notifier - Filters []string `xml:"filters,omitempty" json:"filters,omitempty"` -} - -type NotifierDataAlt struct { - - // Public ID of the Notifier object - Notifier_id string `xml:"notifier_id,omitempty" json:"notifier_id,omitempty"` - - // Label for the Notifier object - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Indicates whether or not the Notifier is active - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // List of Recepients attached to the Notifier - Recipients []string `xml:"recipients,omitempty" json:"recipients,omitempty"` - - // List of services attached to the Notifier - Services []*Service `xml:"services,omitempty" json:"services,omitempty"` -} - -type NotifierData struct { - - // Public ID of the Notifier object - Notifier_id string `xml:"notifier_id,omitempty" json:"notifier_id,omitempty"` - - // Label for the Notifier object - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Indicates whether or not the Notifier is active - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // List of Recepients attached to the Notifier - Recipients []*Recipient `xml:"recipients,omitempty" json:"recipients,omitempty"` - - // List of services attached to the Notifier - Services []*Service `xml:"services,omitempty" json:"services,omitempty"` -} - -type NotifierLinkData struct { - - // Public ID of the Notifier object - Link_id string `xml:"link_id,omitempty" json:"link_id,omitempty"` - - // Indicates whether or not the Notifier link is active - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // filters on when services should fire the notifier - Filters []string `xml:"filters,omitempty" json:"filters,omitempty"` - - Notifier *NotifierSummaryData `xml:"notifier,omitempty" json:"notifier,omitempty"` -} - -type NotifierSummaryData struct { - - // Public ID of the Notifier object - Notifier_id string `xml:"notifier_id,omitempty" json:"notifier_id,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // List of Recepients attached to the Notifier - Recipients []string `xml:"recipients,omitempty" json:"recipients,omitempty"` - - // Indicates whether or not the Notifier is active - Active string `xml:"active,omitempty" json:"active,omitempty"` -} - -type Recipient struct { - - // email or syslog - Format string `xml:"format,omitempty" json:"format,omitempty"` - - // For email, valid address or contact name. Syslog - address or hostname - Recipient string `xml:"recipient,omitempty" json:"recipient,omitempty"` - - // hash of options - Details *RecipientDetail `xml:"details,omitempty" json:"details,omitempty"` - - // List of string. For email - detail and summary are valid - Features []string `xml:"features,omitempty" json:"features,omitempty"` -} - -type RecipientDetail struct { - - // syslog port - Port string `xml:"port,omitempty" json:"port,omitempty"` - - // syslog ident - Ident string `xml:"ident,omitempty" json:"ident,omitempty"` - - // syslog facility - Facility string `xml:"facility,omitempty" json:"facility,omitempty"` - - // syslog tls - Tls string `xml:"tls,omitempty" json:"tls,omitempty"` -} - -type Service struct { - - // Valid entries - DSF or Monitor - Service_class string `xml:"service_class,omitempty" json:"service_class,omitempty"` - - // public_id of the specified service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // filters on when services should fire the notifier - Filters []string `xml:"filters,omitempty" json:"filters,omitempty"` - - // Indicates whether or not the link to the service is active - Active string `xml:"active,omitempty" json:"active,omitempty"` -} - -type ConfigLimitData struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Value string `xml:"value,omitempty" json:"value,omitempty"` -} - -type PermissionZone struct { - Zone_name string `xml:"zone_name,omitempty" json:"zone_name,omitempty"` - - Recurse string `xml:"recurse,omitempty" json:"recurse,omitempty"` - - // This field is returned in responses from the API, it should not be included in requests. - Reason []string `xml:"reason,omitempty" json:"reason,omitempty"` -} - -type PermissionResponse struct { - Admin_override string `xml:"admin_override,omitempty" json:"admin_override,omitempty"` - - Allowed []*PermissionData `xml:"allowed,omitempty" json:"allowed,omitempty"` - - Forbidden []*PermissionData `xml:"forbidden,omitempty" json:"forbidden,omitempty"` -} - -type PermissionData struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` - - Reason []string `xml:"reason,omitempty" json:"reason,omitempty"` -} - -type PermissionGroupData struct { - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Type_ string `xml:"type,omitempty" json:"type,omitempty"` - - Description string `xml:"description,omitempty" json:"description,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` - - User_name []string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Subgroup []string `xml:"subgroup,omitempty" json:"subgroup,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type TSIGKeyData struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Algorithm string `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Secret string `xml:"secret,omitempty" json:"secret,omitempty"` -} - -type HostStatFlagsData struct { - - // empty for customer-wide default - Zone_name string `xml:"zone_name,omitempty" json:"zone_name,omitempty"` - - // Y or N - Active string `xml:"active,omitempty" json:"active,omitempty"` -} - -type ZoneData struct { - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // code indicating how serial numbers are constructed on publish - Serial_style string `xml:"serial_style,omitempty" json:"serial_style,omitempty"` - - // current serial number - Serial int32 `xml:"serial,omitempty" json:"serial,omitempty"` - - // Type of zone. Primary or Secondary - Zone_type string `xml:"zone_type,omitempty" json:"zone_type,omitempty"` -} - -type SecondaryData struct { - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Masters []string `xml:"masters,omitempty" json:"masters,omitempty"` - - Tsig_key_name string `xml:"tsig_key_name,omitempty" json:"tsig_key_name,omitempty"` - - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - Active string `xml:"active,omitempty" json:"active,omitempty"` - - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` -} - -type SessionLoginData struct { - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Version string `xml:"version,omitempty" json:"version,omitempty"` -} - -type QueryStatsData struct { - Csv string `xml:"csv,omitempty" json:"csv,omitempty"` -} - -type ARecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type AAAARecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataAAAA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type ALIASRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataALIAS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type CAARecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCAA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type CDNSKEYRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type CDSRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCDS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type CERTRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCERT `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type CNAMERecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type CSYNCRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCSYNC `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DHCIDRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDHCID `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DNAMERecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DNSKEYRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DSRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type IPSECKEYRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataIPSECKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type KEYRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type KXRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataKX `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type LOCRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataLOC `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type MXRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataMX `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type NAPTRRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNAPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type NSAPRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNSAP `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type POLICYRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPOLICY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type PTRRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type PXRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPX `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type RPRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataRP `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type SPFRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSPF `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type SRVRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSRV `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type SSHFPRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSSHFP `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type TLSARecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataTLSA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type TXTRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataTXT `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type SOARecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataSOA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Serial_style string `xml:"serial_style,omitempty" json:"serial_style,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type RDataSOAUpdate struct { - Rname string `xml:"rname,omitempty" json:"rname,omitempty"` - - Refresh string `xml:"refresh,omitempty" json:"refresh,omitempty"` - - Retry string `xml:"retry,omitempty" json:"retry,omitempty"` - - Expire string `xml:"expire,omitempty" json:"expire,omitempty"` - - Minimum string `xml:"minimum,omitempty" json:"minimum,omitempty"` -} - -type NSRecordData struct { - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Service_class string `xml:"service_class,omitempty" json:"service_class,omitempty"` - - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type UserData struct { - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - User_id string `xml:"user_id,omitempty" json:"user_id,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` - - Group_name []string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Nickname string `xml:"nickname,omitempty" json:"nickname,omitempty"` - - First_name string `xml:"first_name,omitempty" json:"first_name,omitempty"` - - Last_name string `xml:"last_name,omitempty" json:"last_name,omitempty"` - - Phone string `xml:"phone,omitempty" json:"phone,omitempty"` - - Fax string `xml:"fax,omitempty" json:"fax,omitempty"` - - Email string `xml:"email,omitempty" json:"email,omitempty"` - - Notify_email string `xml:"notify_email,omitempty" json:"notify_email,omitempty"` - - Pager_email string `xml:"pager_email,omitempty" json:"pager_email,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` - - Address_2 string `xml:"address_2,omitempty" json:"address_2,omitempty"` - - City string `xml:"city,omitempty" json:"city,omitempty"` - - State string `xml:"state,omitempty" json:"state,omitempty"` - - Post_code string `xml:"post_code,omitempty" json:"post_code,omitempty"` - - Country string `xml:"country,omitempty" json:"country,omitempty"` - - Website string `xml:"website,omitempty" json:"website,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` -} - -type ContactData struct { - Nickname string `xml:"nickname,omitempty" json:"nickname,omitempty"` - - First_name string `xml:"first_name,omitempty" json:"first_name,omitempty"` - - Last_name string `xml:"last_name,omitempty" json:"last_name,omitempty"` - - Phone string `xml:"phone,omitempty" json:"phone,omitempty"` - - Fax string `xml:"fax,omitempty" json:"fax,omitempty"` - - Email string `xml:"email,omitempty" json:"email,omitempty"` - - Notify_email string `xml:"notify_email,omitempty" json:"notify_email,omitempty"` - - Pager_email string `xml:"pager_email,omitempty" json:"pager_email,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` - - Address_2 string `xml:"address_2,omitempty" json:"address_2,omitempty"` - - City string `xml:"city,omitempty" json:"city,omitempty"` - - State string `xml:"state,omitempty" json:"state,omitempty"` - - Post_code string `xml:"post_code,omitempty" json:"post_code,omitempty"` - - Country string `xml:"country,omitempty" json:"country,omitempty"` - - Website string `xml:"website,omitempty" json:"website,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` -} - -type CustomerNSData struct { - Primary string `xml:"primary,omitempty" json:"primary,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type CustomerInterfaceData struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Address []string `xml:"address,omitempty" json:"address,omitempty"` -} - -type CustomerData struct { - Id string `xml:"id,omitempty" json:"id,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Pool_id string `xml:"pool_id,omitempty" json:"pool_id,omitempty"` - - Activated string `xml:"activated,omitempty" json:"activated,omitempty"` - - Type_ string `xml:"type,omitempty" json:"type,omitempty"` - - Level string `xml:"level,omitempty" json:"level,omitempty"` - - Owner_contact string `xml:"owner_contact,omitempty" json:"owner_contact,omitempty"` - - Billing_contact string `xml:"billing_contact,omitempty" json:"billing_contact,omitempty"` - - Primary_sales_agent string `xml:"primary_sales_agent,omitempty" json:"primary_sales_agent,omitempty"` - - Salesforce_id string `xml:"salesforce_id,omitempty" json:"salesforce_id,omitempty"` - - Default_ns []*CustomerNSData `xml:"default_ns,omitempty" json:"default_ns,omitempty"` - - Interfaces []*CustomerInterfaceData `xml:"interfaces,omitempty" json:"interfaces,omitempty"` - - Admin_user_id string `xml:"admin_user_id,omitempty" json:"admin_user_id,omitempty"` - - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - Tenant string `xml:"tenant,omitempty" json:"tenant,omitempty"` -} - -type CustomerAdminData struct { - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` - - Email string `xml:"email,omitempty" json:"email,omitempty"` - - First_name string `xml:"first_name,omitempty" json:"first_name,omitempty"` - - Last_name string `xml:"last_name,omitempty" json:"last_name,omitempty"` - - Phone string `xml:"phone,omitempty" json:"phone,omitempty"` - - Fax string `xml:"fax,omitempty" json:"fax,omitempty"` - - Notify_email string `xml:"notify_email,omitempty" json:"notify_email,omitempty"` - - Pager_email string `xml:"pager_email,omitempty" json:"pager_email,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` - - Address_2 string `xml:"address_2,omitempty" json:"address_2,omitempty"` - - City string `xml:"city,omitempty" json:"city,omitempty"` - - State string `xml:"state,omitempty" json:"state,omitempty"` - - Post_code string `xml:"post_code,omitempty" json:"post_code,omitempty"` - - Country string `xml:"country,omitempty" json:"country,omitempty"` - - Website string `xml:"website,omitempty" json:"website,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` -} - -type CustomerPrefData struct { - - // name of the pref setting - Name string `xml:"name,omitempty" json:"name,omitempty"` - - // value of the setting - Value string `xml:"value,omitempty" json:"value,omitempty"` - - // Y/N: pref is not explicitly set, this is the default value - Default_ string `xml:"default,omitempty" json:"default,omitempty"` -} - -type CustomerIPACL struct { - - // comma or space-delimited list of netmasks, in CIDR form; no '/' assumes exact address - Netmasks string `xml:"netmasks,omitempty" json:"netmasks,omitempty"` - - // 'Y'/'N', default 'Y' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // 'web'/'api', default 'web' - Scope string `xml:"scope,omitempty" json:"scope,omitempty"` -} - -type CustomerOracleMetadataData struct { - - // compartment id - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - // customer id - Cust_id string `xml:"cust_id,omitempty" json:"cust_id,omitempty"` - - // tenant id - Tenant string `xml:"tenant,omitempty" json:"tenant,omitempty"` -} - -type ZoneOracleMetadataData struct { - - // compartment id - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - // public id - Public_id string `xml:"public_id,omitempty" json:"public_id,omitempty"` - - // zone id - Zone_id string `xml:"zone_id,omitempty" json:"zone_id,omitempty"` -} - -type RedirectData struct { - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata string `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Rtype string `xml:"rtype,omitempty" json:"rtype,omitempty"` - - SubstituteRtype string `xml:"substituteRtype,omitempty" json:"substituteRtype,omitempty"` -} - -type Replacement struct { - Redirects []*RedirectData `xml:"redirects,omitempty" json:"redirects,omitempty"` -} - -type DDNSData struct { - - // an IP address, either v4 or v6 - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // either A or AAAA - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // last time this service was update by a Dynamic DNS client - Last_updated string `xml:"last_updated,omitempty" json:"last_updated,omitempty"` - - // count of excessive updates - Abuse_count string `xml:"abuse_count,omitempty" json:"abuse_count,omitempty"` - - // 'Y', 'N' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type UpdateUserPasswordData struct { - Password string `xml:"password,omitempty" json:"password,omitempty"` -} - -type UpdateUser struct { - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` - - Group_name []string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` -} - -type DDNSHostData struct { - Ddns *DDNSData `xml:"ddns,omitempty" json:"ddns,omitempty"` - - New_user *UpdateUser `xml:"new_user,omitempty" json:"new_user,omitempty"` -} - -type FailoverData struct { - - // normally served address - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // 'ip' or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // address or CNAME to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` - - // 'ok', 'trouble', 'failover' - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // 'Y', 'N' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // monitoring changes task - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` - - // Recent monitoring results. This field is returned in responses from the API, it should not be included in requests. - Log []*MonitorLogData `xml:"log,omitempty" json:"log,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type MonitorData struct { - - // HTTP, HTTPS, PING, SMTP, TCP, NONE - Protocol string `xml:"protocol,omitempty" json:"protocol,omitempty"` - - // time between checks, in minutes - Interval int32 `xml:"interval,omitempty" json:"interval,omitempty"` - - // times to retest on failure - Retries int32 `xml:"retries,omitempty" json:"retries,omitempty"` - - // if different from service default - Port int32 `xml:"port,omitempty" json:"port,omitempty"` - - // e.g: http://host/path - Path string `xml:"path,omitempty" json:"path,omitempty"` - - // if different from fqdn - Host string `xml:"host,omitempty" json:"host,omitempty"` - - // check response for specific text - Expected string `xml:"expected,omitempty" json:"expected,omitempty"` - - // additional HTTP headers - Header string `xml:"header,omitempty" json:"header,omitempty"` - - // test timeout - Timeout int32 `xml:"timeout,omitempty" json:"timeout,omitempty"` -} - -type MonitorLogData struct { - - // 'up', 'down', 'unk' - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // more details on error - Message string `xml:"message,omitempty" json:"message,omitempty"` - - // unix timestamp of monitor - Time int32 `xml:"time,omitempty" json:"time,omitempty"` - - // "airport" code - Site_code string `xml:"site_code,omitempty" json:"site_code,omitempty"` -} - -type LoadBalanceData struct { - - // pool of IP addresses to balance - Pool []*LoadBalanceAddress `xml:"pool,omitempty" json:"pool,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // 'ip', 'global', or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' or 'cname', what to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` - - // 'ok', 'trouble', 'failover' - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // 'Y', 'N' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type LoadBalanceAddress struct { - - // an IP address to monitor and publish - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` - - // current monitoring status This field is returned in responses from the API, it should not be included in requests. - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // Recent monitoring results for this address. This field is returned in responses from the API, it should not be included in requests. - Log []*MonitorLogData `xml:"log,omitempty" json:"log,omitempty"` -} - -type LoadBalancePoolEntry struct { - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // an IP address to monitor and publish - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` - - // current monitoring status This field is returned in responses from the API, it should not be included in requests. - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // Recent monitoring results for this address. This field is returned in responses from the API, it should not be included in requests. - Log []*MonitorLogData `xml:"log,omitempty" json:"log,omitempty"` -} - -type GSLBData struct { - - // per-region addresses and configuration - Region []*GSLBRegion `xml:"region,omitempty" json:"region,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` - - // 'ok', 'trouble', 'failover' - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // 'Y', 'N' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // monitoring changes task - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GSLBRegion struct { - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // 'ip', 'global', or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' or 'cname', what to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // number of 'ok' addresses before region fails over - Min_healthy int32 `xml:"min_healthy,omitempty" json:"min_healthy,omitempty"` - - // pool of IP addresses to balance - Pool []*GSLBAddress `xml:"pool,omitempty" json:"pool,omitempty"` -} - -type GSLBAddress struct { - - // an IP address or FQDN to monitor and publish - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` - - // current monitoring status This field is returned in responses from the API, it should not be included in requests. - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // Recent monitoring results for this address. This field is returned in responses from the API, it should not be included in requests. - Log []*MonitorLogData `xml:"log,omitempty" json:"log,omitempty"` -} - -type GSLBRegionData struct { - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // 'ip', 'global', or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' or 'cname', what to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // number of 'ok' addresses before region fails over - Min_healthy int32 `xml:"min_healthy,omitempty" json:"min_healthy,omitempty"` - - // pool of IP addresses to balance - Pool []*GSLBAddress `xml:"pool,omitempty" json:"pool,omitempty"` - - // 'ok', 'trouble', 'failover' - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // monitoring changes task - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GSLBRegionPoolEntry struct { - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // an IP address or FQDN to monitor and publish - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` - - // current monitoring status This field is returned in responses from the API, it should not be included in requests. - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // monitoring changes task This field is returned in responses from the API, it should not be included in requests. - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` - - // Recent monitoring results for this address. This field is returned in responses from the API, it should not be included in requests. - Log []*MonitorLogData `xml:"log,omitempty" json:"log,omitempty"` -} - -type RTTMData struct { - - // per-region addresses and configuration - Region []*RTTMRegion `xml:"region,omitempty" json:"region,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // for custom syslog messages - Syslog_rttm_fmt string `xml:"syslog_rttm_fmt,omitempty" json:"syslog_rttm_fmt,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` - - // details about performance monitoring - Performance_monitor *MonitorData `xml:"performance_monitor,omitempty" json:"performance_monitor,omitempty"` - - // 'ok', 'unk', 'trouble', 'failover' - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // 'Y', 'N' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // monitoring changes task - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type RTTMRegion struct { - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // 'Y' or 'N', if 'Y', region will filled in with global settings - Autopopulate string `xml:"autopopulate,omitempty" json:"autopopulate,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // pool_count, number of addresses to be included in the serve pool - Ep int32 `xml:"ep,omitempty" json:"ep,omitempty"` - - // 'ip', 'global', 'region', default 'global' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' mode, address to serve on failover. For 'region' mode, region_code of the region to failover to. - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // failover_count, number of addresses that must be 'ok', otherwise a region is considered 'failover' - Apmc int32 `xml:"apmc,omitempty" json:"apmc,omitempty"` - - // failover_count2, number of addresses that must be 'ok', otherwise a region is considered 'failover' - Epmc int32 `xml:"epmc,omitempty" json:"epmc,omitempty"` - - // pool of IP addresses to balance - Pool []*RTTMAddress `xml:"pool,omitempty" json:"pool,omitempty"` - - // 'ok, 'unk', 'trouble', 'failover', This field is returned in responses from the API, it should not be included in requests. - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // monitoring changes task This field is returned in responses from the API, it should not be included in requests. - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` -} - -type RTTMAddress struct { - - // an IP address to monitor and publish - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` - - // current monitoring status This field is returned in responses from the API, it should not be included in requests. - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // Recent monitoring results for this address. This field is returned in responses from the API, it should not be included in requests. - Log []*MonitorLogData `xml:"log,omitempty" json:"log,omitempty"` -} - -type RTTMLogData struct { - - // zone serial at which this status was made - Serial string `xml:"serial,omitempty" json:"serial,omitempty"` - - // timestamp in UTC at which this status was made - Change_ts string `xml:"change_ts,omitempty" json:"change_ts,omitempty"` - - // type of status change. 'health', 'perf', or 'user' - Change_type string `xml:"change_type,omitempty" json:"change_type,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // 'up', 'trouble', 'failover', or 'reg_remove' - Region_status string `xml:"region_status,omitempty" json:"region_status,omitempty"` - - // If change_type is 'user', the user that made the change - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - // number of addresses in each DNS response - Serve_count string `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // 'A', 'AAAA', or 'CNAME' - Rdata_type string `xml:"rdata_type,omitempty" json:"rdata_type,omitempty"` - - // List of rdata being served for this region - Region_rdata []*RTTMLogRData `xml:"region_rdata,omitempty" json:"region_rdata,omitempty"` -} - -type RTTMLogRData struct { - - // how often this is served relative to others in pool - Weight string `xml:"weight,omitempty" json:"weight,omitempty"` - - Rdata_a *RDataA `xml:"rdata_a,omitempty" json:"rdata_a,omitempty"` - - Rdata_aaaa *RDataAAAA `xml:"rdata_aaaa,omitempty" json:"rdata_aaaa,omitempty"` - - Rdata_cname *RDataCNAME `xml:"rdata_cname,omitempty" json:"rdata_cname,omitempty"` -} - -type RTTMRegionData struct { - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // 'Y' or 'N', if 'Y', region will filled in with global settings - Autopopulate string `xml:"autopopulate,omitempty" json:"autopopulate,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // pool_count, number of addresses to be included in the serve pool - Ep int32 `xml:"ep,omitempty" json:"ep,omitempty"` - - // 'ip', 'global', 'region', default 'global' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' mode, address to serve on failover. For 'region' mode, region_code of the region to failover to. - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // failover_count, number of addresses that must be 'ok', otherwise a region is considered 'failover' - Apmc int32 `xml:"apmc,omitempty" json:"apmc,omitempty"` - - // failover_count2, number of addresses that must be 'ok', otherwise a region is considered 'failover' - Epmc int32 `xml:"epmc,omitempty" json:"epmc,omitempty"` - - // pool of IP addresses to balance - Pool []*RTTMAddress `xml:"pool,omitempty" json:"pool,omitempty"` - - // monitoring changes task This field is returned in responses from the API, it should not be included in requests. - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` - - // 'ok, 'unk', 'trouble', 'failover', - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type RTTMRegionPoolEntry struct { - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // an IP address to monitor and publish - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` - - // current monitoring status This field is returned in responses from the API, it should not be included in requests. - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // Recent monitoring results for this address. This field is returned in responses from the API, it should not be included in requests. - Log []*MonitorLogData `xml:"log,omitempty" json:"log,omitempty"` - - // monitoring changes task This field is returned in responses from the API, it should not be included in requests. - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` -} - -type HTTPRedirectData struct { - - // URL requests are redirecto to - Url string `xml:"url,omitempty" json:"url,omitempty"` - - // either '301' (temporary) or '302' (permanent) - Code string `xml:"code,omitempty" json:"code,omitempty"` - - // should redirected URL include requested URL - Keep_uri string `xml:"keep_uri,omitempty" json:"keep_uri,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type AdvRedirectRuleData struct { - - // Public ID of rule. - Public_id string `xml:"public_id,omitempty" json:"public_id,omitempty"` - - // either '301' (temporary) or '302' (permanent) - Code string `xml:"code,omitempty" json:"code,omitempty"` - - // host portion of URL to match - Host_prefix string `xml:"host_prefix,omitempty" json:"host_prefix,omitempty"` - - // path portion of URL to match - Path string `xml:"path,omitempty" json:"path,omitempty"` - - // replacement pattern - Url_pattern string `xml:"url_pattern,omitempty" json:"url_pattern,omitempty"` - - // 'Y'/'N', default 'Y' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // Public ID of next AdvRedirect rule to be processed. (default to end of list) - Next_public_id string `xml:"next_public_id,omitempty" json:"next_public_id,omitempty"` -} - -type AdvRedirectData struct { - - // 'Y'/'N', default 'Y' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // List of AdvRedirectRules - Rules []*AdvRedirectRuleData `xml:"rules,omitempty" json:"rules,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type RDataA struct { - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type RDataAAAA struct { - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type RDataALIAS struct { - Alias string `xml:"alias,omitempty" json:"alias,omitempty"` -} - -type RDataCAA struct { - Flags int32 `xml:"flags,omitempty" json:"flags,omitempty"` - - Tag string `xml:"tag,omitempty" json:"tag,omitempty"` - - Value string `xml:"value,omitempty" json:"value,omitempty"` -} - -type RDataCDNSKEY struct { - Flags int32 `xml:"flags,omitempty" json:"flags,omitempty"` - - Algorithm int32 `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Protocol int32 `xml:"protocol,omitempty" json:"protocol,omitempty"` - - Public_key string `xml:"public_key,omitempty" json:"public_key,omitempty"` -} - -type RDataCDS struct { - Keytag int32 `xml:"keytag,omitempty" json:"keytag,omitempty"` - - Algorithm int32 `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Digtype int32 `xml:"digtype,omitempty" json:"digtype,omitempty"` - - Digest string `xml:"digest,omitempty" json:"digest,omitempty"` -} - -type RDataCERT struct { - Format int32 `xml:"format,omitempty" json:"format,omitempty"` - - Tag int32 `xml:"tag,omitempty" json:"tag,omitempty"` - - Algorithm int32 `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Certificate string `xml:"certificate,omitempty" json:"certificate,omitempty"` -} - -type RDataCNAME struct { - Cname string `xml:"cname,omitempty" json:"cname,omitempty"` -} - -type RDataCSYNC struct { - Soa_serial int32 `xml:"soa_serial,omitempty" json:"soa_serial,omitempty"` - - Flags string `xml:"flags,omitempty" json:"flags,omitempty"` - - Types string `xml:"types,omitempty" json:"types,omitempty"` -} - -type RDataDNSKEY struct { - Flags int32 `xml:"flags,omitempty" json:"flags,omitempty"` - - Algorithm int32 `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Protocol int32 `xml:"protocol,omitempty" json:"protocol,omitempty"` - - Public_key string `xml:"public_key,omitempty" json:"public_key,omitempty"` -} - -type RDataDHCID struct { - Digest string `xml:"digest,omitempty" json:"digest,omitempty"` -} - -type RDataDNAME struct { - Dname string `xml:"dname,omitempty" json:"dname,omitempty"` -} - -type RDataDS struct { - Keytag int32 `xml:"keytag,omitempty" json:"keytag,omitempty"` - - Algorithm int32 `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Digtype int32 `xml:"digtype,omitempty" json:"digtype,omitempty"` - - Digest string `xml:"digest,omitempty" json:"digest,omitempty"` -} - -type RDataIPSECKEY struct { - Precedence int32 `xml:"precedence,omitempty" json:"precedence,omitempty"` - - Gatetype int32 `xml:"gatetype,omitempty" json:"gatetype,omitempty"` - - Algorithm int32 `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Gateway string `xml:"gateway,omitempty" json:"gateway,omitempty"` - - Public_key string `xml:"public_key,omitempty" json:"public_key,omitempty"` -} - -type RDataKEY struct { - Flags int32 `xml:"flags,omitempty" json:"flags,omitempty"` - - Algorithm int32 `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Protocol int32 `xml:"protocol,omitempty" json:"protocol,omitempty"` - - Public_key string `xml:"public_key,omitempty" json:"public_key,omitempty"` -} - -type RDataKX struct { - Preference int32 `xml:"preference,omitempty" json:"preference,omitempty"` - - Exchange string `xml:"exchange,omitempty" json:"exchange,omitempty"` -} - -type RDataLOC struct { - Latitude string `xml:"latitude,omitempty" json:"latitude,omitempty"` - - Longitude string `xml:"longitude,omitempty" json:"longitude,omitempty"` - - Altitude int32 `xml:"altitude,omitempty" json:"altitude,omitempty"` - - Horiz_pre int32 `xml:"horiz_pre,omitempty" json:"horiz_pre,omitempty"` - - Vert_pre int32 `xml:"vert_pre,omitempty" json:"vert_pre,omitempty"` - - Size int32 `xml:"size,omitempty" json:"size,omitempty"` - - Version int32 `xml:"version,omitempty" json:"version,omitempty"` -} - -type RDataMX struct { - Preference int32 `xml:"preference,omitempty" json:"preference,omitempty"` - - Exchange string `xml:"exchange,omitempty" json:"exchange,omitempty"` -} - -type RDataNAPTR struct { - Order int32 `xml:"order,omitempty" json:"order,omitempty"` - - Preference int32 `xml:"preference,omitempty" json:"preference,omitempty"` - - Flags string `xml:"flags,omitempty" json:"flags,omitempty"` - - Services string `xml:"services,omitempty" json:"services,omitempty"` - - Regexp string `xml:"regexp,omitempty" json:"regexp,omitempty"` - - Replacement string `xml:"replacement,omitempty" json:"replacement,omitempty"` -} - -type RDataNS struct { - Nsdname string `xml:"nsdname,omitempty" json:"nsdname,omitempty"` -} - -type RDataNSAP struct { - Nsap string `xml:"nsap,omitempty" json:"nsap,omitempty"` -} - -type RDataPOLICY struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Rtype string `xml:"rtype,omitempty" json:"rtype,omitempty"` - - Api_url string `xml:"api_url,omitempty" json:"api_url,omitempty"` - - Gui_url string `xml:"gui_url,omitempty" json:"gui_url,omitempty"` - - Policy string `xml:"policy,omitempty" json:"policy,omitempty"` -} - -type RDataPTR struct { - Ptrdname string `xml:"ptrdname,omitempty" json:"ptrdname,omitempty"` -} - -type RDataPX struct { - Preference int32 `xml:"preference,omitempty" json:"preference,omitempty"` - - Map822 string `xml:"map822,omitempty" json:"map822,omitempty"` - - Mapx400 string `xml:"mapx400,omitempty" json:"mapx400,omitempty"` -} - -type RDataRP struct { - Mbox string `xml:"mbox,omitempty" json:"mbox,omitempty"` - - Txtdname string `xml:"txtdname,omitempty" json:"txtdname,omitempty"` -} - -type RDataSPF struct { - Txtdata string `xml:"txtdata,omitempty" json:"txtdata,omitempty"` -} - -type RDataSSHFP struct { - Algorithm int32 `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Fptype int32 `xml:"fptype,omitempty" json:"fptype,omitempty"` - - Fingerprint string `xml:"fingerprint,omitempty" json:"fingerprint,omitempty"` -} - -type RDataSRV struct { - Priority int32 `xml:"priority,omitempty" json:"priority,omitempty"` - - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - Port int32 `xml:"port,omitempty" json:"port,omitempty"` - - Target string `xml:"target,omitempty" json:"target,omitempty"` -} - -type RDataTLSA struct { - Cert_usage int32 `xml:"cert_usage,omitempty" json:"cert_usage,omitempty"` - - Selector int32 `xml:"selector,omitempty" json:"selector,omitempty"` - - Match_type int32 `xml:"match_type,omitempty" json:"match_type,omitempty"` - - Certificate string `xml:"certificate,omitempty" json:"certificate,omitempty"` -} - -type RDataTXT struct { - Txtdata string `xml:"txtdata,omitempty" json:"txtdata,omitempty"` -} - -type RDataSOA struct { - Mname string `xml:"mname,omitempty" json:"mname,omitempty"` - - Rname string `xml:"rname,omitempty" json:"rname,omitempty"` - - Serial int32 `xml:"serial,omitempty" json:"serial,omitempty"` - - Refresh int32 `xml:"refresh,omitempty" json:"refresh,omitempty"` - - Retry int32 `xml:"retry,omitempty" json:"retry,omitempty"` - - Expire int32 `xml:"expire,omitempty" json:"expire,omitempty"` - - Minimum int32 `xml:"minimum,omitempty" json:"minimum,omitempty"` -} - -type GenericRData struct { - Rdata_a *RDataA `xml:"rdata_a,omitempty" json:"rdata_a,omitempty"` - - Rdata_aaaa *RDataAAAA `xml:"rdata_aaaa,omitempty" json:"rdata_aaaa,omitempty"` - - Rdata_alias *RDataALIAS `xml:"rdata_alias,omitempty" json:"rdata_alias,omitempty"` - - Rdata_caa *RDataCAA `xml:"rdata_caa,omitempty" json:"rdata_caa,omitempty"` - - Rdata_cdnskey *RDataCDNSKEY `xml:"rdata_cdnskey,omitempty" json:"rdata_cdnskey,omitempty"` - - Rdata_cds *RDataCDS `xml:"rdata_cds,omitempty" json:"rdata_cds,omitempty"` - - Rdata_cert *RDataCERT `xml:"rdata_cert,omitempty" json:"rdata_cert,omitempty"` - - Rdata_cname *RDataCNAME `xml:"rdata_cname,omitempty" json:"rdata_cname,omitempty"` - - Rdata_csync *RDataCSYNC `xml:"rdata_csync,omitempty" json:"rdata_csync,omitempty"` - - Rdata_dhcid *RDataDHCID `xml:"rdata_dhcid,omitempty" json:"rdata_dhcid,omitempty"` - - Rdata_dname *RDataDNAME `xml:"rdata_dname,omitempty" json:"rdata_dname,omitempty"` - - Rdata_dnskey *RDataDNSKEY `xml:"rdata_dnskey,omitempty" json:"rdata_dnskey,omitempty"` - - Rdata_ds *RDataDS `xml:"rdata_ds,omitempty" json:"rdata_ds,omitempty"` - - Rdata_ipseckey *RDataIPSECKEY `xml:"rdata_ipseckey,omitempty" json:"rdata_ipseckey,omitempty"` - - Rdata_key *RDataKEY `xml:"rdata_key,omitempty" json:"rdata_key,omitempty"` - - Rdata_kx *RDataKX `xml:"rdata_kx,omitempty" json:"rdata_kx,omitempty"` - - Rdata_loc *RDataLOC `xml:"rdata_loc,omitempty" json:"rdata_loc,omitempty"` - - Rdata_mx *RDataMX `xml:"rdata_mx,omitempty" json:"rdata_mx,omitempty"` - - Rdata_naptr *RDataNAPTR `xml:"rdata_naptr,omitempty" json:"rdata_naptr,omitempty"` - - Rdata_ns *RDataNS `xml:"rdata_ns,omitempty" json:"rdata_ns,omitempty"` - - Rdata_nsap *RDataNSAP `xml:"rdata_nsap,omitempty" json:"rdata_nsap,omitempty"` - - Rdata_policy *RDataPOLICY `xml:"rdata_policy,omitempty" json:"rdata_policy,omitempty"` - - Rdata_ptr *RDataPTR `xml:"rdata_ptr,omitempty" json:"rdata_ptr,omitempty"` - - Rdata_px *RDataPX `xml:"rdata_px,omitempty" json:"rdata_px,omitempty"` - - Rdata_rp *RDataRP `xml:"rdata_rp,omitempty" json:"rdata_rp,omitempty"` - - Rdata_spf *RDataSPF `xml:"rdata_spf,omitempty" json:"rdata_spf,omitempty"` - - Rdata_sshfp *RDataSSHFP `xml:"rdata_sshfp,omitempty" json:"rdata_sshfp,omitempty"` - - Rdata_srv *RDataSRV `xml:"rdata_srv,omitempty" json:"rdata_srv,omitempty"` - - Rdata_tlsa *RDataTLSA `xml:"rdata_tlsa,omitempty" json:"rdata_tlsa,omitempty"` - - Rdata_txt *RDataTXT `xml:"rdata_txt,omitempty" json:"rdata_txt,omitempty"` - - Rdata_soa *RDataSOA `xml:"rdata_soa,omitempty" json:"rdata_soa,omitempty"` -} - -type QNames struct { - Names []string `xml:"names,omitempty" json:"names,omitempty"` -} - -type ANYRecordData struct { - A_records []*ARecordData `xml:"a_records,omitempty" json:"a_records,omitempty"` - - Aaaa_records []*AAAARecordData `xml:"aaaa_records,omitempty" json:"aaaa_records,omitempty"` - - Alias_records []*ALIASRecordData `xml:"alias_records,omitempty" json:"alias_records,omitempty"` - - Caa_records []*CAARecordData `xml:"caa_records,omitempty" json:"caa_records,omitempty"` - - Cdnskey_records []*CDNSKEYRecordData `xml:"cdnskey_records,omitempty" json:"cdnskey_records,omitempty"` - - Cds_records []*CDSRecordData `xml:"cds_records,omitempty" json:"cds_records,omitempty"` - - Cert_records []*CERTRecordData `xml:"cert_records,omitempty" json:"cert_records,omitempty"` - - Cname_records []*CNAMERecordData `xml:"cname_records,omitempty" json:"cname_records,omitempty"` - - Csync_records []*CSYNCRecordData `xml:"csync_records,omitempty" json:"csync_records,omitempty"` - - Dhcid_records []*DHCIDRecordData `xml:"dhcid_records,omitempty" json:"dhcid_records,omitempty"` - - Dname_records []*DNAMERecordData `xml:"dname_records,omitempty" json:"dname_records,omitempty"` - - Dnskey_records []*DNSKEYRecordData `xml:"dnskey_records,omitempty" json:"dnskey_records,omitempty"` - - Ds_records []*DSRecordData `xml:"ds_records,omitempty" json:"ds_records,omitempty"` - - Ipseckey_records []*IPSECKEYRecordData `xml:"ipseckey_records,omitempty" json:"ipseckey_records,omitempty"` - - Key_records []*KEYRecordData `xml:"key_records,omitempty" json:"key_records,omitempty"` - - Kx_records []*KXRecordData `xml:"kx_records,omitempty" json:"kx_records,omitempty"` - - Loc_records []*LOCRecordData `xml:"loc_records,omitempty" json:"loc_records,omitempty"` - - Mx_records []*MXRecordData `xml:"mx_records,omitempty" json:"mx_records,omitempty"` - - Naptr_records []*NAPTRRecordData `xml:"naptr_records,omitempty" json:"naptr_records,omitempty"` - - Nsap_records []*NSAPRecordData `xml:"nsap_records,omitempty" json:"nsap_records,omitempty"` - - Policy_records []*POLICYRecordData `xml:"policy_records,omitempty" json:"policy_records,omitempty"` - - Ptr_records []*PTRRecordData `xml:"ptr_records,omitempty" json:"ptr_records,omitempty"` - - Px_records []*PXRecordData `xml:"px_records,omitempty" json:"px_records,omitempty"` - - Rp_records []*RPRecordData `xml:"rp_records,omitempty" json:"rp_records,omitempty"` - - Spf_records []*SPFRecordData `xml:"spf_records,omitempty" json:"spf_records,omitempty"` - - Srv_records []*SRVRecordData `xml:"srv_records,omitempty" json:"srv_records,omitempty"` - - Sshfp_records []*SSHFPRecordData `xml:"sshfp_records,omitempty" json:"sshfp_records,omitempty"` - - Tlsa_records []*TLSARecordData `xml:"tlsa_records,omitempty" json:"tlsa_records,omitempty"` - - Txt_records []*TXTRecordData `xml:"txt_records,omitempty" json:"txt_records,omitempty"` - - Soa_records []*SOARecordData `xml:"soa_records,omitempty" json:"soa_records,omitempty"` - - Ns_records []*NSRecordData `xml:"ns_records,omitempty" json:"ns_records,omitempty"` -} - -type ANYRData struct { - A_rdata []*RDataA `xml:"a_rdata,omitempty" json:"a_rdata,omitempty"` - - Aaaa_rdata []*RDataAAAA `xml:"aaaa_rdata,omitempty" json:"aaaa_rdata,omitempty"` - - Alias_rdata []*RDataALIAS `xml:"alias_rdata,omitempty" json:"alias_rdata,omitempty"` - - Caa_rdata []*RDataCAA `xml:"caa_rdata,omitempty" json:"caa_rdata,omitempty"` - - Cdnskey_rdata []*RDataCDNSKEY `xml:"cdnskey_rdata,omitempty" json:"cdnskey_rdata,omitempty"` - - Cds_rdata []*RDataCDS `xml:"cds_rdata,omitempty" json:"cds_rdata,omitempty"` - - Cert_rdata []*RDataCERT `xml:"cert_rdata,omitempty" json:"cert_rdata,omitempty"` - - Cname_rdata []*RDataCNAME `xml:"cname_rdata,omitempty" json:"cname_rdata,omitempty"` - - Csync_rdata []*RDataCSYNC `xml:"csync_rdata,omitempty" json:"csync_rdata,omitempty"` - - Dhcid_rdata []*RDataDHCID `xml:"dhcid_rdata,omitempty" json:"dhcid_rdata,omitempty"` - - Dname_rdata []*RDataDNAME `xml:"dname_rdata,omitempty" json:"dname_rdata,omitempty"` - - Dnskey_rdata []*RDataDNSKEY `xml:"dnskey_rdata,omitempty" json:"dnskey_rdata,omitempty"` - - Ds_rdata []*RDataDS `xml:"ds_rdata,omitempty" json:"ds_rdata,omitempty"` - - Ipseckey_rdata []*RDataIPSECKEY `xml:"ipseckey_rdata,omitempty" json:"ipseckey_rdata,omitempty"` - - Key_rdata []*RDataKEY `xml:"key_rdata,omitempty" json:"key_rdata,omitempty"` - - Kx_rdata []*RDataKX `xml:"kx_rdata,omitempty" json:"kx_rdata,omitempty"` - - Loc_rdata []*RDataLOC `xml:"loc_rdata,omitempty" json:"loc_rdata,omitempty"` - - Mx_rdata []*RDataMX `xml:"mx_rdata,omitempty" json:"mx_rdata,omitempty"` - - Naptr_rdata []*RDataNAPTR `xml:"naptr_rdata,omitempty" json:"naptr_rdata,omitempty"` - - Nsap_rdata []*RDataNSAP `xml:"nsap_rdata,omitempty" json:"nsap_rdata,omitempty"` - - Policy_rdata []*RDataPOLICY `xml:"policy_rdata,omitempty" json:"policy_rdata,omitempty"` - - Ptr_rdata []*RDataPTR `xml:"ptr_rdata,omitempty" json:"ptr_rdata,omitempty"` - - Px_rdata []*RDataPX `xml:"px_rdata,omitempty" json:"px_rdata,omitempty"` - - Rp_rdata []*RDataRP `xml:"rp_rdata,omitempty" json:"rp_rdata,omitempty"` - - Spf_rdata []*RDataSPF `xml:"spf_rdata,omitempty" json:"spf_rdata,omitempty"` - - Srv_rdata []*RDataSRV `xml:"srv_rdata,omitempty" json:"srv_rdata,omitempty"` - - Sshfp_rdata []*RDataSSHFP `xml:"sshfp_rdata,omitempty" json:"sshfp_rdata,omitempty"` - - Tlsa_rdata []*RDataTLSA `xml:"tlsa_rdata,omitempty" json:"tlsa_rdata,omitempty"` - - Txt_rdata []*RDataTXT `xml:"txt_rdata,omitempty" json:"txt_rdata,omitempty"` - - Soa_rdata []*RDataSOA `xml:"soa_rdata,omitempty" json:"soa_rdata,omitempty"` - - Ns_rdata []*RDataNS `xml:"ns_rdata,omitempty" json:"ns_rdata,omitempty"` -} - -type ANYOneRData struct { - A_rdata *RDataA `xml:"a_rdata,omitempty" json:"a_rdata,omitempty"` - - Aaaa_rdata *RDataAAAA `xml:"aaaa_rdata,omitempty" json:"aaaa_rdata,omitempty"` - - Alias_rdata *RDataALIAS `xml:"alias_rdata,omitempty" json:"alias_rdata,omitempty"` - - Caa_rdata *RDataCAA `xml:"caa_rdata,omitempty" json:"caa_rdata,omitempty"` - - Cdnskey_rdata *RDataCDNSKEY `xml:"cdnskey_rdata,omitempty" json:"cdnskey_rdata,omitempty"` - - Cds_rdata *RDataCDS `xml:"cds_rdata,omitempty" json:"cds_rdata,omitempty"` - - Cert_rdata *RDataCERT `xml:"cert_rdata,omitempty" json:"cert_rdata,omitempty"` - - Cname_rdata *RDataCNAME `xml:"cname_rdata,omitempty" json:"cname_rdata,omitempty"` - - Csync_rdata *RDataCSYNC `xml:"csync_rdata,omitempty" json:"csync_rdata,omitempty"` - - Dhcid_rdata *RDataDHCID `xml:"dhcid_rdata,omitempty" json:"dhcid_rdata,omitempty"` - - Dname_rdata *RDataDNAME `xml:"dname_rdata,omitempty" json:"dname_rdata,omitempty"` - - Dnskey_rdata *RDataDNSKEY `xml:"dnskey_rdata,omitempty" json:"dnskey_rdata,omitempty"` - - Ds_rdata *RDataDS `xml:"ds_rdata,omitempty" json:"ds_rdata,omitempty"` - - Ipseckey_rdata *RDataIPSECKEY `xml:"ipseckey_rdata,omitempty" json:"ipseckey_rdata,omitempty"` - - Key_rdata *RDataKEY `xml:"key_rdata,omitempty" json:"key_rdata,omitempty"` - - Kx_rdata *RDataKX `xml:"kx_rdata,omitempty" json:"kx_rdata,omitempty"` - - Loc_rdata *RDataLOC `xml:"loc_rdata,omitempty" json:"loc_rdata,omitempty"` - - Mx_rdata *RDataMX `xml:"mx_rdata,omitempty" json:"mx_rdata,omitempty"` - - Naptr_rdata *RDataNAPTR `xml:"naptr_rdata,omitempty" json:"naptr_rdata,omitempty"` - - Nsap_rdata *RDataNSAP `xml:"nsap_rdata,omitempty" json:"nsap_rdata,omitempty"` - - Policy_rdata *RDataPOLICY `xml:"policy_rdata,omitempty" json:"policy_rdata,omitempty"` - - Ptr_rdata *RDataPTR `xml:"ptr_rdata,omitempty" json:"ptr_rdata,omitempty"` - - Px_rdata *RDataPX `xml:"px_rdata,omitempty" json:"px_rdata,omitempty"` - - Rp_rdata *RDataRP `xml:"rp_rdata,omitempty" json:"rp_rdata,omitempty"` - - Spf_rdata *RDataSPF `xml:"spf_rdata,omitempty" json:"spf_rdata,omitempty"` - - Srv_rdata *RDataSRV `xml:"srv_rdata,omitempty" json:"srv_rdata,omitempty"` - - Sshfp_rdata *RDataSSHFP `xml:"sshfp_rdata,omitempty" json:"sshfp_rdata,omitempty"` - - Tlsa_rdata *RDataTLSA `xml:"tlsa_rdata,omitempty" json:"tlsa_rdata,omitempty"` - - Txt_rdata *RDataTXT `xml:"txt_rdata,omitempty" json:"txt_rdata,omitempty"` - - Soa_rdata *RDataSOA `xml:"soa_rdata,omitempty" json:"soa_rdata,omitempty"` - - Ns_rdata *RDataNS `xml:"ns_rdata,omitempty" json:"ns_rdata,omitempty"` -} - -type ZoneChangeData struct { - Id int64 `xml:"id,omitempty" json:"id,omitempty"` - - User_id int64 `xml:"user_id,omitempty" json:"user_id,omitempty"` - - Rdata_type string `xml:"rdata_type,omitempty" json:"rdata_type,omitempty"` - - Rdata *GenericRData `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Serial int32 `xml:"serial,omitempty" json:"serial,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type ZoneNoteData struct { - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Serial int32 `xml:"serial,omitempty" json:"serial,omitempty"` - - Type_ string `xml:"type,omitempty" json:"type,omitempty"` - - Note string `xml:"note,omitempty" json:"note,omitempty"` - - Timestamp string `xml:"timestamp,omitempty" json:"timestamp,omitempty"` -} - -type ZoneTransferStatus struct { - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Master_ip string `xml:"master_ip,omitempty" json:"master_ip,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Message string `xml:"message,omitempty" json:"message,omitempty"` -} - -type ZoneConfigOptionData struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Value string `xml:"value,omitempty" json:"value,omitempty"` - - Target string `xml:"target,omitempty" json:"target,omitempty"` -} - -type PublishZoneData struct { - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Serial int32 `xml:"serial,omitempty" json:"serial,omitempty"` - - Serial_style string `xml:"serial_style,omitempty" json:"serial_style,omitempty"` - - Zone_type string `xml:"zone_type,omitempty" json:"zone_type,omitempty"` - - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` -} - -type IPTrackData struct { - - // A, Dynamic_A, AAAA, Dynamic_AAAA - Record_types []string `xml:"record_types,omitempty" json:"record_types,omitempty"` - - // List of hostnames to watch for records - Hosts []string `xml:"hosts,omitempty" json:"hosts,omitempty"` - - // 'match', 'default', or a valid ttl - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // Mask that records should match - Netmask string `xml:"netmask,omitempty" json:"netmask,omitempty"` - - Iptrack_id int64 `xml:"iptrack_id,omitempty" json:"iptrack_id,omitempty"` - - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DNSSECData struct { - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // , contact that gets key notifications - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - Keys []*DNSSECKey `xml:"keys,omitempty" json:"keys,omitempty"` - - Active string `xml:"active,omitempty" json:"active,omitempty"` -} - -type DNSSECKey struct { - - // 'KSK' or 'ZSK' - Type_ string `xml:"type,omitempty" json:"type,omitempty"` - - // 'RSA/SHA-1', 'RSA/SHA-256', 'RSA/SHA-512', 'DSA' - Algorithm string `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Bits string `xml:"bits,omitempty" json:"bits,omitempty"` - - Start_ts int32 `xml:"start_ts,omitempty" json:"start_ts,omitempty"` - - Lifetime int32 `xml:"lifetime,omitempty" json:"lifetime,omitempty"` - - Overlap int32 `xml:"overlap,omitempty" json:"overlap,omitempty"` - - Expire_ts int32 `xml:"expire_ts,omitempty" json:"expire_ts,omitempty"` - - // Only for updates: 'rollover', 'rollover_now', 'remove' - Action string `xml:"action,omitempty" json:"action,omitempty"` - - Dnssec_key_id int64 `xml:"dnssec_key_id,omitempty" json:"dnssec_key_id,omitempty"` - - // This field is returned in responses from the API, it should not be included in requests. - Dnskey *RDataDNSKEY `xml:"dnskey,omitempty" json:"dnskey,omitempty"` - - // preserved for compatibility This field is returned in responses from the API, it should not be included in requests. - Ds *RDataDS `xml:"ds,omitempty" json:"ds,omitempty"` - - All_ds []*RDataDS `xml:"all_ds,omitempty" json:"all_ds,omitempty"` -} - -type DNSSECTimelineEvent struct { - Scheduled_ts int32 `xml:"scheduled_ts,omitempty" json:"scheduled_ts,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Event string `xml:"event,omitempty" json:"event,omitempty"` - - Message string `xml:"message,omitempty" json:"message,omitempty"` - - Send_notify string `xml:"send_notify,omitempty" json:"send_notify,omitempty"` - - User string `xml:"user,omitempty" json:"user,omitempty"` - - Dnssec_key_id int64 `xml:"dnssec_key_id,omitempty" json:"dnssec_key_id,omitempty"` -} - -type TaskArgData struct { - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Value string `xml:"value,omitempty" json:"value,omitempty"` -} - -type TaskIDData struct { - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` -} - -type TaskData struct { - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` - - // identifies the task operation - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Zone_name string `xml:"zone_name,omitempty" json:"zone_name,omitempty"` - - // ready running waiting complete failed canceled stalled - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // in a multi-step process, how far along - Step_count int32 `xml:"step_count,omitempty" json:"step_count,omitempty"` - - // total number of steps in multi-step process - Total_steps int32 `xml:"total_steps,omitempty" json:"total_steps,omitempty"` - - // Y/N - does this task block further zone operations? - Blocking string `xml:"blocking,omitempty" json:"blocking,omitempty"` - - Message string `xml:"message,omitempty" json:"message,omitempty"` - - Debug string `xml:"debug,omitempty" json:"debug,omitempty"` - - Created_ts int64 `xml:"created_ts,omitempty" json:"created_ts,omitempty"` - - Modified_ts int64 `xml:"modified_ts,omitempty" json:"modified_ts,omitempty"` - - // other arguments passed to the task - Args []*TaskArgData `xml:"args,omitempty" json:"args,omitempty"` -} - -type ExtNameserverData struct { - - // can be empty or 'default' - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // Y/N - does this block requests or add them - Deny string `xml:"deny,omitempty" json:"deny,omitempty"` - - Hosts []*ExtNSEntry `xml:"hosts,omitempty" json:"hosts,omitempty"` - - Tsig_key_name string `xml:"tsig_key_name,omitempty" json:"tsig_key_name,omitempty"` - - Active string `xml:"active,omitempty" json:"active,omitempty"` -} - -type ExtNSEntry struct { - - // address or CIDR - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // Y/N - do we send NOTIFYs to this host? - Notifies string `xml:"notifies,omitempty" json:"notifies,omitempty"` - - // Y/N - do we accept [AI]XFRs from this host? - Transfers string `xml:"transfers,omitempty" json:"transfers,omitempty"` -} - -type ErrorResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ErrorResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - // should be empty and can be ignored - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetJobRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetJobRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` -} - -type GetJobResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetJobResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - // Contains the response data. Can be any type as GetJob is request-agnostic. - Data interface{} `xml:"data,omitempty" json:"data,omitempty"` -} - -type SessionLoginRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SessionLoginRequest"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` -} - -type SessionLoginResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SessionLoginResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - // identifies your session token (needed for all other Dynect API calls) and the API protocol version - Data *SessionLoginData `xml:"data,omitempty" json:"data,omitempty"` -} - -type SessionLogoutRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SessionLogoutRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type SessionLogoutResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SessionLogoutResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SessionIsAliveRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SessionIsAliveRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type SessionIsAliveResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SessionIsAliveResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SessionKeepAliveRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SessionKeepAliveRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type SessionKeepAliveResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SessionKeepAliveResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ScopeInRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ScopeInRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - // defaults to admin user - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type ScopeInResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ScopeInResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ScopeAsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ScopeAsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - // defaults to admin user - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type ScopeAsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ScopeAsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type UnscopeRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UnscopeRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type UnscopeResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UnscopeResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetQueryStatsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetQueryStatsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // The timestamp indicating the beginning of the period to report on - Start_ts int32 `xml:"start_ts,omitempty" json:"start_ts,omitempty"` - - // The timestamp indicating the end of the period to report on - End_ts int32 `xml:"end_ts,omitempty" json:"end_ts,omitempty"` - - // The fields to break down the data with - Breakdown []string `xml:"breakdown,omitempty" json:"breakdown,omitempty"` - - // A list of specific hostnames to report on. A hostname beginning with '!' will cause that hostname to be excluded - Hosts []string `xml:"hosts,omitempty" json:"hosts,omitempty"` - - // A list of specific nameservers to report on. A nameserver beginning with '!' will cause that nameserver to be excluded - Nameservers []string `xml:"nameservers,omitempty" json:"nameservers,omitempty"` - - // A list of record types to report on. A record type beginning with '!' will cause that record type to be excluded - Rrecs []string `xml:"rrecs,omitempty" json:"rrecs,omitempty"` - - // A list of zone names to report on. A zone name beginning with '!' will cause that zone to be excluded. - Zones []string `xml:"zones,omitempty" json:"zones,omitempty"` -} - -type GetQueryStatsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetQueryStatsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - // The CSV data containing the requested statistics - Data *QueryStatsData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateGeoRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGeoRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the service we want to create - Name string `xml:"name,omitempty" json:"name,omitempty"` - - // List of region groups that contain a list of countries and records to be served - Groups []*GeoRegionGroup `xml:"groups,omitempty" json:"groups,omitempty"` - - // List of zone name, node name pairs to link a node to the Geo Service - Nodes []*GeoNode `xml:"nodes,omitempty" json:"nodes,omitempty"` - - // Default TTL for records - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type CreateGeoResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGeoResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *Geo `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateGeoRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGeoRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to update - Name string `xml:"name,omitempty" json:"name,omitempty"` - - // The new name to assign to the Geo Service - New_name string `xml:"new_name,omitempty" json:"new_name,omitempty"` - - // List of region groups that contain a list of countries and records to be served - Groups []*GeoRegionGroup `xml:"groups,omitempty" json:"groups,omitempty"` - - // List of zone name, node name pairs to link a node to the Geo Service - Nodes []*GeoNode `xml:"nodes,omitempty" json:"nodes,omitempty"` - - // Default TTL for records - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateGeoResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGeoResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *Geo `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetGeosRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGeosRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name (partial) of the Geo Service to find - Name string `xml:"name,omitempty" json:"name,omitempty"` - - // Name (partial) of the Geo Region Group to find - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` -} - -type GetGeosResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGeosResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*Geo `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneGeoRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGeoRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name (partial) of the Geo Service to find - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type GetOneGeoResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGeoResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *Geo `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneGeoRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGeoRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to delete - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type DeleteOneGeoResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGeoResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ActivateGeoRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateGeoRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to activate - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type ActivateGeoResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateGeoResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *Geo `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeactivateGeoRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateGeoRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to deactivate - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type DeactivateGeoResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateGeoResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *Geo `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateGeoRegionGroupRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGeoRegionGroupRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to update - Service_name string `xml:"service_name,omitempty" json:"service_name,omitempty"` - - // , Name of the Region Group - Name string `xml:"name,omitempty" json:"name,omitempty"` - - // Rdata to update the Region Group with - Rdata *ANYRData `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // List of countries to update the Region Group with - Countries []string `xml:"countries,omitempty" json:"countries,omitempty"` - - // Optional weights to accompany the rdata - Weight *WeightData `xml:"weight,omitempty" json:"weight,omitempty"` - - // Optional serve counts to accompany the rdata - Serve_count *ServeCountData `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // Optional Default TTL values for each record - Ttl *TTLData `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // Optional labels for the rdata - Label *LabelData `xml:"label,omitempty" json:"label,omitempty"` -} - -type CreateGeoRegionGroupResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGeoRegionGroupResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *Geo `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateGeoRegionGroupRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGeoRegionGroupRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to update - Service_name string `xml:"service_name,omitempty" json:"service_name,omitempty"` - - // , Name of the Region Group - Name string `xml:"name,omitempty" json:"name,omitempty"` - - // Rdata to update the Region Group with - Rdata *ANYRData `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // List of countries to update the Region Group with - Countries []string `xml:"countries,omitempty" json:"countries,omitempty"` - - // Optional weights to accompany the rdata - Weight *WeightData `xml:"weight,omitempty" json:"weight,omitempty"` - - // Optional serve counts to accompany the rdata - Serve_count *ServeCountData `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // Optional Default TTL values for each record - Ttl *TTLData `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // Optional labels for the rdata - Label *LabelData `xml:"label,omitempty" json:"label,omitempty"` -} - -type UpdateGeoRegionGroupResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGeoRegionGroupResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *Geo `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneGeoRegionGroupRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGeoRegionGroupRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to update - Service_name string `xml:"service_name,omitempty" json:"service_name,omitempty"` - - // , Name of the Region Group - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type DeleteOneGeoRegionGroupResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGeoRegionGroupResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetGeoRegionGroupsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGeoRegionGroupsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to update - Service_name string `xml:"service_name,omitempty" json:"service_name,omitempty"` -} - -type GetGeoRegionGroupsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGeoRegionGroupsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*GeoRegionGroupData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneGeoRegionGroupRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGeoRegionGroupRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to update - Service_name string `xml:"service_name,omitempty" json:"service_name,omitempty"` - - // , Name of the Region Group - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type GetOneGeoRegionGroupResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGeoRegionGroupResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GeoRegionGroupData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateGeoNodeRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGeoNodeRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to add the nodes to - Service_name string `xml:"service_name,omitempty" json:"service_name,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type CreateGeoNodeResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGeoNodeResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *Geo `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneGeoNodeRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGeoNodeRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service to delete the nodes from - Service_name string `xml:"service_name,omitempty" json:"service_name,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteOneGeoNodeResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGeoNodeResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetGeoNodesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGeoNodesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Name of the Geo Service - Service_name string `xml:"service_name,omitempty" json:"service_name,omitempty"` -} - -type GetGeoNodesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGeoNodesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDSFRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // DSF Label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Default TTL to be used in this service - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // A list of fqdn,zone pairs to identify nodes to attach - Nodes []*DSFNode `xml:"nodes,omitempty" json:"nodes,omitempty"` - - // A list of DSF Rulesets defined for the service - Rulesets []*DSFRuleset `xml:"rulesets,omitempty" json:"rulesets,omitempty"` - - // A list of notifier links - Notifiers []*NotifierLink `xml:"notifiers,omitempty" json:"notifiers,omitempty"` - - // If 'Y', service will be published on creation - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional Publish Notes. - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type CreateDSFResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDSFRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF service to update - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // A new label for the service - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Default TTL to be used - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // A list of fqdn,zone pairs to identify nodes to attach - Nodes []*DSFNode `xml:"nodes,omitempty" json:"nodes,omitempty"` - - Rulesets []*DSFRuleset `xml:"rulesets,omitempty" json:"rulesets,omitempty"` - - // A list of notifier links - Notifiers []*NotifierLink `xml:"notifiers,omitempty" json:"notifiers,omitempty"` - - // If true, the service is immediately published - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional Publish Notes. - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type UpdateDSFResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label, ID, or wildcard - Cust string `xml:"cust,omitempty" json:"cust,omitempty"` - - // label or ID - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // wildcard - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // linker - Linker string `xml:"linker,omitempty" json:"linker,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetDSFsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFNotifiersRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFNotifiersRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Identifier for DSF service to search on - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` -} - -type GetDSFNotifiersResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFNotifiersResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*NotifierDataAlt `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDSFRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF service to delete - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` -} - -type DeleteOneDSFResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDSFRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label or ID - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetOneDSFResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RevertDSFRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RevertDSFRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label or ID - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` -} - -type RevertDSFResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RevertDSFResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFData `xml:"data,omitempty" json:"data,omitempty"` -} - -type PublishDSFRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ PublishDSFRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label or ID - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type PublishDSFResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ PublishDSFResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFData `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddDSFNotifierRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddDSFNotifierRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Identifier for DSF service to search on - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // Public_id of the Notifier to link to - Notifier_id string `xml:"notifier_id,omitempty" json:"notifier_id,omitempty"` - - // filters on when services should fire the notifier - Filters []string `xml:"filters,omitempty" json:"filters,omitempty"` - - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type AddDSFNotifierResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddDSFNotifierResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NotifierLinkData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemoveDSFNotifierRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveDSFNotifierRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Identifier for DSF service to search on - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // Public_id of the Notifier to link to - Link_id string `xml:"link_id,omitempty" json:"link_id,omitempty"` - - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type RemoveDSFNotifierResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveDSFNotifierResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NotifierLinkData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDSFRulesetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFRulesetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // Ruleset label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // The type of criteria contained within this Pool - Criteria_type string `xml:"criteria_type,omitempty" json:"criteria_type,omitempty"` - - // Required based on criteria_type. Filtered in API/BLL - Criteria *DSFCriteria `xml:"criteria,omitempty" json:"criteria,omitempty"` - - // Where in the chain does the ruleset land. Defautls to the last. - Ordering string `xml:"ordering,omitempty" json:"ordering,omitempty"` - - // A list of DSF Reponse Pools that comprise the Ruleset - Response_pools []*DSFResponsePool `xml:"response_pools,omitempty" json:"response_pools,omitempty"` - - // boolean - immediately save change and publish - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type CreateDSFRulesetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFRulesetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRulesetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDSFRulesetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFRulesetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID of the ruleset to update - Dsf_ruleset_id string `xml:"dsf_ruleset_id,omitempty" json:"dsf_ruleset_id,omitempty"` - - // Ruleset label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // The type of criteria contained within this Pool - Criteria_type string `xml:"criteria_type,omitempty" json:"criteria_type,omitempty"` - - // Required based on criteria_type. Filtered in API/BLL - Criteria *DSFCriteria `xml:"criteria,omitempty" json:"criteria,omitempty"` - - // Where in the chain does the ruleset land. Defautls to the last. - Ordering string `xml:"ordering,omitempty" json:"ordering,omitempty"` - - // A list of DSF Reponse Pools that comprise the Ruleset - Response_pools []*DSFResponsePool `xml:"response_pools,omitempty" json:"response_pools,omitempty"` - - // boolean - immediately save change and publish - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional Publish Notes. - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type UpdateDSFRulesetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFRulesetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRulesetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFRulesetsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFRulesetsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // Ruleset label to search on. Can be wildcarded - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Can be wildcarded...must be string representation - Criteria string `xml:"criteria,omitempty" json:"criteria,omitempty"` - - // The type of criteria contained within this Pool - Criteria_type string `xml:"criteria_type,omitempty" json:"criteria_type,omitempty"` - - // Where in the chain does the ruleset land. Defautls to the last. - Ordering string `xml:"ordering,omitempty" json:"ordering,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetDSFRulesetsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFRulesetsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFRulesetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDSFRulesetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFRulesetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID of the ruleset to update - Dsf_ruleset_id string `xml:"dsf_ruleset_id,omitempty" json:"dsf_ruleset_id,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetOneDSFRulesetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFRulesetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRulesetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDSFRulesetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFRulesetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID of the ruleset to update - Dsf_ruleset_id string `xml:"dsf_ruleset_id,omitempty" json:"dsf_ruleset_id,omitempty"` - - // boolean - immediately save change and publish - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type DeleteOneDSFRulesetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFRulesetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRulesetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDSFResponsePoolRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFResponsePoolRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // Response Pool label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Core_set_count string `xml:"core_set_count,omitempty" json:"core_set_count,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - // Defaults to true - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - // ID or label of the DSF Ruleset to join - Dsf_ruleset_id string `xml:"dsf_ruleset_id,omitempty" json:"dsf_ruleset_id,omitempty"` - - // Index within the specified DSF Ruleset - Index string `xml:"index,omitempty" json:"index,omitempty"` - - Rs_chains []*DSFRecordSetFailoverChain `xml:"rs_chains,omitempty" json:"rs_chains,omitempty"` - - // boolean - immediately save change and publish - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type CreateDSFResponsePoolResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFResponsePoolResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFResponsePoolData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDSFResponsePoolRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFResponsePoolRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the Response Pool to update - Dsf_response_pool_id string `xml:"dsf_response_pool_id,omitempty" json:"dsf_response_pool_id,omitempty"` - - // Response Pool label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Core_set_count string `xml:"core_set_count,omitempty" json:"core_set_count,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - // Defaults to true - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - // Entire chain must be specified - Rs_chains []*DSFRecordSetFailoverChain `xml:"rs_chains,omitempty" json:"rs_chains,omitempty"` - - // ID or label of the DSF Ruleset to join - Dsf_ruleset_id string `xml:"dsf_ruleset_id,omitempty" json:"dsf_ruleset_id,omitempty"` - - // If true, removes record-sets that are no longer referenced by anyone - Remove_orphans string `xml:"remove_orphans,omitempty" json:"remove_orphans,omitempty"` - - // boolean - immediately save change and publish - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional Publish Notes. - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type UpdateDSFResponsePoolResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFResponsePoolResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFResponsePoolData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFResponsePoolsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFResponsePoolsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // ID or label of a DSF Ruleset that could contain - Dsf_ruleset_id string `xml:"dsf_ruleset_id,omitempty" json:"dsf_ruleset_id,omitempty"` - - Core_set_count string `xml:"core_set_count,omitempty" json:"core_set_count,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // bool, if true, finds pools that do not exist in any Rulesets - No_ruleset string `xml:"no_ruleset,omitempty" json:"no_ruleset,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetDSFResponsePoolsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFResponsePoolsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFResponsePoolData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDSFResponsePoolRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFResponsePoolRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or the label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the desired response pool - Dsf_response_pool_id string `xml:"dsf_response_pool_id,omitempty" json:"dsf_response_pool_id,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetOneDSFResponsePoolResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFResponsePoolResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFResponsePoolData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDSFResponsePoolRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFResponsePoolRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or the label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the desired response pool - Dsf_response_pool_id string `xml:"dsf_response_pool_id,omitempty" json:"dsf_response_pool_id,omitempty"` - - // If 'Y', Pool will be deleted on execution - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type DeleteOneDSFResponsePoolResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFResponsePoolResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFResponsePoolData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDSFRecordSetFailoverChainRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFRecordSetFailoverChainRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID of the DSF Response Pool that the Rec Set Fail chain belongs to - Dsf_response_pool_id string `xml:"dsf_response_pool_id,omitempty" json:"dsf_response_pool_id,omitempty"` - - // Label of the DSF Record Set Failover Chain - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Optional, defaults to false, indicates whether enclosed Record Sets are Core - Core string `xml:"core,omitempty" json:"core,omitempty"` - - // A list of record sets to be included in this chain - Record_sets []*DSFRecordSet `xml:"record_sets,omitempty" json:"record_sets,omitempty"` - - // If 'Y', RS Chain will be deleted on execution - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type CreateDSFRecordSetFailoverChainResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFRecordSetFailoverChainResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordSetFailoverChainData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDSFRecordSetFailoverChainRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFRecordSetFailoverChainRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the DSF Rec Set Failover Chain - Dsf_record_set_failover_chain_id string `xml:"dsf_record_set_failover_chain_id,omitempty" json:"dsf_record_set_failover_chain_id,omitempty"` - - // Label of the DSF Record Set Failover Chain - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Optional, defaults to false, indicates whether enclosed Record Sets are Core - Core string `xml:"core,omitempty" json:"core,omitempty"` - - // A list of record sets to be included in this chain - Record_sets []*DSFRecordSet `xml:"record_sets,omitempty" json:"record_sets,omitempty"` - - // If 'Y', RS Chain will be deleted on execution - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional Publish Notes. - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type UpdateDSFRecordSetFailoverChainResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFRecordSetFailoverChainResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordSetFailoverChainData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFRecordSetFailoverChainsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFRecordSetFailoverChainsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the DSF Response Pool that the Rec Set Fail chain belongs to - Dsf_response_pool_id string `xml:"dsf_response_pool_id,omitempty" json:"dsf_response_pool_id,omitempty"` - - // Label of the DSF Record Set Failover Chain - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Search for core DSF Record Set Failover Chains that are core - Core string `xml:"core,omitempty" json:"core,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetDSFRecordSetFailoverChainsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFRecordSetFailoverChainsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFRecordSetFailoverChainData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDSFRecordSetFailoverChainRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFRecordSetFailoverChainRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the DSF Rec Set Failover Chain - Dsf_record_set_failover_chain_id string `xml:"dsf_record_set_failover_chain_id,omitempty" json:"dsf_record_set_failover_chain_id,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetOneDSFRecordSetFailoverChainResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFRecordSetFailoverChainResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordSetFailoverChainData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDSFRecordSetFailoverChainRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFRecordSetFailoverChainRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the DSF Rec Set Failover Chain - Dsf_record_set_failover_chain_id string `xml:"dsf_record_set_failover_chain_id,omitempty" json:"dsf_record_set_failover_chain_id,omitempty"` - - // If 'Y', Pool will be deleted on execution - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type DeleteOneDSFRecordSetFailoverChainResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFRecordSetFailoverChainResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordSetFailoverChainData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDSFRecordSetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFRecordSetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // class of rdata that the set will contain - Rdata_class string `xml:"rdata_class,omitempty" json:"rdata_class,omitempty"` - - // Record Set label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // ID or label of the associated monitor - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` - - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Serve_count string `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - Fail_count string `xml:"fail_count,omitempty" json:"fail_count,omitempty"` - - Trouble_count string `xml:"trouble_count,omitempty" json:"trouble_count,omitempty"` - - Torpidity_max string `xml:"torpidity_max,omitempty" json:"torpidity_max,omitempty"` - - // list of hashes that contain information to create DSF Records - Records []*DSFRecord `xml:"records,omitempty" json:"records,omitempty"` - - // ID or label to associate the new RS with an existing RP - Dsf_record_set_failover_chain_id string `xml:"dsf_record_set_failover_chain_id,omitempty" json:"dsf_record_set_failover_chain_id,omitempty"` - - // Index of the RS in the specified chain - Index string `xml:"index,omitempty" json:"index,omitempty"` - - // ID or label to associate the new RS with an existing RP - Dsf_response_pool_id string `xml:"dsf_response_pool_id,omitempty" json:"dsf_response_pool_id,omitempty"` - - // Defaults to true - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - // boolean - immediately save change and publish - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type CreateDSFRecordSetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFRecordSetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordSetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDSFRecordSetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFRecordSetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the DSF Record Set - Dsf_record_set_id string `xml:"dsf_record_set_id,omitempty" json:"dsf_record_set_id,omitempty"` - - // new label for the DSF Record Set - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // ID or label of the associated monitor - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` - - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Serve_count string `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - Fail_count string `xml:"fail_count,omitempty" json:"fail_count,omitempty"` - - Trouble_count string `xml:"trouble_count,omitempty" json:"trouble_count,omitempty"` - - Torpidity_max string `xml:"torpidity_max,omitempty" json:"torpidity_max,omitempty"` - - // Defaults to true - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - // hash of information to create DSF Records - Records []*DSFRecord `xml:"records,omitempty" json:"records,omitempty"` - - // boolean - immediately save change and publish - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional Publish Notes. - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type UpdateDSFRecordSetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFRecordSetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordSetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDSFRecordSetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFRecordSetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the DSF Record Set - Dsf_record_set_id string `xml:"dsf_record_set_id,omitempty" json:"dsf_record_set_id,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetOneDSFRecordSetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFRecordSetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordSetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFRecordSetsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFRecordSetsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // Record Set label - can be wildcarded - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Serve_count string `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - Fail_count string `xml:"fail_count,omitempty" json:"fail_count,omitempty"` - - Trouble_count string `xml:"trouble_count,omitempty" json:"trouble_count,omitempty"` - - Torpidity_max string `xml:"torpidity_max,omitempty" json:"torpidity_max,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // class of rdata that the set will contain - Rdata_class string `xml:"rdata_class,omitempty" json:"rdata_class,omitempty"` - - // ID or label to associate the RS with an existing DSF Record Set Failover Chain - Dsf_record_set_failover_chain_id string `xml:"dsf_record_set_failover_chain_id,omitempty" json:"dsf_record_set_failover_chain_id,omitempty"` - - // ID or label of the associated monitor - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetDSFRecordSetsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFRecordSetsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFRecordSetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDSFRecordSetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFRecordSetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID or label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // ID or label of the DSF Record Set - Dsf_record_set_id string `xml:"dsf_record_set_id,omitempty" json:"dsf_record_set_id,omitempty"` - - // If 'Y', Record Set will be deleted on execution - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type DeleteOneDSFRecordSetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFRecordSetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordSetData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDSFRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // label of the DSF Record Set - Dsf_record_set_id string `xml:"dsf_record_set_id,omitempty" json:"dsf_record_set_id,omitempty"` - - Master_line string `xml:"master_line,omitempty" json:"master_line,omitempty"` - - // Rdata to create the svc record with - Rdata *ANYOneRData `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of the DSF record - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Weight string `xml:"weight,omitempty" json:"weight,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Endpoints []string `xml:"endpoints,omitempty" json:"endpoints,omitempty"` - - // number of endpoints that need to be up - Endpoint_up_count string `xml:"endpoint_up_count,omitempty" json:"endpoint_up_count,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - // boolean, if true add and immediately publish - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type CreateDSFRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDSFRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // label of the DSF Record - Dsf_record_id string `xml:"dsf_record_id,omitempty" json:"dsf_record_id,omitempty"` - - Master_line string `xml:"master_line,omitempty" json:"master_line,omitempty"` - - // Rdata to update the svc record with - Rdata *ANYOneRData `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of the DSF record - Label string `xml:"label,omitempty" json:"label,omitempty"` - - Weight string `xml:"weight,omitempty" json:"weight,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Endpoints []string `xml:"endpoints,omitempty" json:"endpoints,omitempty"` - - // number of endpoints that need to be up - Endpoint_up_count string `xml:"endpoint_up_count,omitempty" json:"endpoint_up_count,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - // boolean, if true add and immediately publish - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional Publish Notes. - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type UpdateDSFRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDSFRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // label of the DSF Record - Dsf_record_id string `xml:"dsf_record_id,omitempty" json:"dsf_record_id,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetOneDSFRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // DSF Record Set Failover Chain ID to search on - Dsf_record_set_failover_chain_id string `xml:"dsf_record_set_failover_chain_id,omitempty" json:"dsf_record_set_failover_chain_id,omitempty"` - - // Record set id to search on - Dsf_record_set_id string `xml:"dsf_record_set_id,omitempty" json:"dsf_record_set_id,omitempty"` - - // Wildcard allowed - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Wildcard allowed - Master_line string `xml:"master_line,omitempty" json:"master_line,omitempty"` - - // Wildcard allowed - Endpoints string `xml:"endpoints,omitempty" json:"endpoints,omitempty"` - - Endpoint_up_count string `xml:"endpoint_up_count,omitempty" json:"endpoint_up_count,omitempty"` - - Weight string `xml:"weight,omitempty" json:"weight,omitempty"` - - Automation string `xml:"automation,omitempty" json:"automation,omitempty"` - - Eligible string `xml:"eligible,omitempty" json:"eligible,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetDSFRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDSFRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // label of the DSF Record - Dsf_record_id string `xml:"dsf_record_id,omitempty" json:"dsf_record_id,omitempty"` - - // If 'Y', Record will be deleted on execution - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type DeleteOneDSFRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddDSFNodeRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddDSFNodeRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // an fqdn, zone pair - Node *DSFNode `xml:"node,omitempty" json:"node,omitempty"` - - // If 'Y', change is published immediately - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type AddDSFNodeResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddDSFNodeResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFNode `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDSFNodesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFNodesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // A list of fqdn, zone pairs - Nodes []*DSFNode `xml:"nodes,omitempty" json:"nodes,omitempty"` - - // If 'Y', change is published immediately - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional Publish Notes. - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type UpdateDSFNodesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFNodesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFNode `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFNodesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFNodesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // response will include pending changes - Pending_changes string `xml:"pending_changes,omitempty" json:"pending_changes,omitempty"` -} - -type GetDSFNodesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFNodesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFNode `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDSFNodeRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFNodeRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // label of the DSF Service - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // an fqdn, zone pair - Node *DSFNode `xml:"node,omitempty" json:"node,omitempty"` - - // If 'Y', change is published immediately - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` - - // Optional notes - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type DeleteOneDSFNodeResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFNodeResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFNode `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDSFMonitorRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFMonitorRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Label for the DSF Monitor - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Num of responses to determine status - Response_count string `xml:"response_count,omitempty" json:"response_count,omitempty"` - - // Interval, in seconds, between probes - Probe_interval string `xml:"probe_interval,omitempty" json:"probe_interval,omitempty"` - - // number of attempted retries on failure before giving up - Retries string `xml:"retries,omitempty" json:"retries,omitempty"` - - // name of the protocol to monitor - Protocol string `xml:"protocol,omitempty" json:"protocol,omitempty"` - - // indicates if the monitor is active, default is N - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // options pertaining the monitor - Options *DSFMonitorOptions `xml:"options,omitempty" json:"options,omitempty"` - - // Endpoints to monitor - Endpoints []*DSFMonitorEndpoint `xml:"endpoints,omitempty" json:"endpoints,omitempty"` -} - -type CreateDSFMonitorResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSFMonitorResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFMonitorData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDSFMonitorRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFMonitorRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` - - // New label for the DSF Monitor - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Num of responses to determine status - Response_count string `xml:"response_count,omitempty" json:"response_count,omitempty"` - - // Interval, in seconds, between probes - Probe_interval string `xml:"probe_interval,omitempty" json:"probe_interval,omitempty"` - - // number of attempted retries on failure before giving up - Retries string `xml:"retries,omitempty" json:"retries,omitempty"` - - // name of the protocol to monitor - Protocol string `xml:"protocol,omitempty" json:"protocol,omitempty"` - - // indicates if the monitor is active - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // options pertaining the monitor - Options *DSFMonitorOptions `xml:"options,omitempty" json:"options,omitempty"` - - // Endpoints to monitor - Endpoints []*DSFMonitorEndpoint `xml:"endpoints,omitempty" json:"endpoints,omitempty"` -} - -type UpdateDSFMonitorResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSFMonitorResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFMonitorData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDSFMonitorRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFMonitorRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` -} - -type GetOneDSFMonitorResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSFMonitorResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFMonitorData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFMonitorsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFMonitorsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Label for the DSF Monitor - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Interval, in seconds, between probes - Probe_interval string `xml:"probe_interval,omitempty" json:"probe_interval,omitempty"` - - // number of attempted retries on failure before giving up - Retries string `xml:"retries,omitempty" json:"retries,omitempty"` - - // name of the protocol to monitor - Protocol string `xml:"protocol,omitempty" json:"protocol,omitempty"` -} - -type GetDSFMonitorsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFMonitorsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSFMonitorData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDSFMonitorRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFMonitorRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // ID - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` -} - -type DeleteOneDSFMonitorResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSFMonitorResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddDSFMonitorNotifierRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddDSFMonitorNotifierRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Monitor ID - Dsf_monitor_id string `xml:"dsf_monitor_id,omitempty" json:"dsf_monitor_id,omitempty"` - - // Notifier ID passed in for existing Notifier, or the follow params used to create - Dsf_notify_id string `xml:"dsf_notify_id,omitempty" json:"dsf_notify_id,omitempty"` - - // filters on when services should fire the notifier - Filters []string `xml:"filters,omitempty" json:"filters,omitempty"` -} - -type AddDSFMonitorNotifierResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddDSFMonitorNotifierResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NotifierData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSFMonitorSitesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFMonitorSitesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetDSFMonitorSitesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSFMonitorSitesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSFMonitorSitesData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateNotifierRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateNotifierRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Label for the Notifier - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // List of Recipients attached to the Notifier - Recipients []*Recipient `xml:"recipients,omitempty" json:"recipients,omitempty"` - - // List of Services attached to the Notifier - Services []*Service `xml:"services,omitempty" json:"services,omitempty"` -} - -type CreateNotifierResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateNotifierResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NotifierData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateNotifierRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateNotifierRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Public_id of the Notifier to update - Notifier_id string `xml:"notifier_id,omitempty" json:"notifier_id,omitempty"` - - // Label for the DSF Notify - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // List of Recipients attached to the Notifier - Recipients []*Recipient `xml:"recipients,omitempty" json:"recipients,omitempty"` - - // List of Services attached to the Notifier - Services []*Service `xml:"services,omitempty" json:"services,omitempty"` -} - -type UpdateNotifierResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateNotifierResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NotifierData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneNotifierRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneNotifierRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Public_id of the Notifier to retrieve - Notifier_id string `xml:"notifier_id,omitempty" json:"notifier_id,omitempty"` -} - -type GetOneNotifierResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneNotifierResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NotifierData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetNotifiersRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNotifiersRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Label for the DSF Notify - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // Search for active or inactive notifiers - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // Search for email or syslog recipients - Format string `xml:"format,omitempty" json:"format,omitempty"` - - // Search on the recipient email, hostname, or contact - Recipient string `xml:"recipient,omitempty" json:"recipient,omitempty"` - - // Search for active or inactive recipients - Recipient_active string `xml:"recipient_active,omitempty" json:"recipient_active,omitempty"` - - // Must be specified with service public id - Service_class string `xml:"service_class,omitempty" json:"service_class,omitempty"` - - // Public_id of the service_class item to search for - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - // Search for active or inactive services - Service_active string `xml:"service_active,omitempty" json:"service_active,omitempty"` -} - -type GetNotifiersResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNotifiersResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*NotifierDataAlt `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneNotifierRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneNotifierRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // Public_id of the Notifier to delete - Notifier_id string `xml:"notifier_id,omitempty" json:"notifier_id,omitempty"` -} - -type DeleteOneNotifierResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneNotifierResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateConfigLimitRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateConfigLimitRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Value string `xml:"value,omitempty" json:"value,omitempty"` -} - -type CreateConfigLimitResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateConfigLimitResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ConfigLimitData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneConfigLimitRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneConfigLimitRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type GetOneConfigLimitResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneConfigLimitResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ConfigLimitData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetConfigLimitsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetConfigLimitsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` -} - -type GetConfigLimitsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetConfigLimitsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ConfigLimitData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateConfigLimitRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateConfigLimitRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Value string `xml:"value,omitempty" json:"value,omitempty"` -} - -type UpdateConfigLimitResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateConfigLimitResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ConfigLimitData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneConfigLimitRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneConfigLimitRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Service_id string `xml:"service_id,omitempty" json:"service_id,omitempty"` - - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type DeleteOneConfigLimitResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneConfigLimitResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreatePermissionGroupRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreatePermissionGroupRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Type_ string `xml:"type,omitempty" json:"type,omitempty"` - - All_users string `xml:"all_users,omitempty" json:"all_users,omitempty"` - - Description string `xml:"description,omitempty" json:"description,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` - - User_name []string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Subgroup []string `xml:"subgroup,omitempty" json:"subgroup,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type CreatePermissionGroupResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreatePermissionGroupResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PermissionGroupData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOnePermissionGroupRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOnePermissionGroupRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` -} - -type GetOnePermissionGroupResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOnePermissionGroupResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PermissionGroupData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetPermissionGroupsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetPermissionGroupsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetPermissionGroupsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetPermissionGroupsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*PermissionGroupData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOnePermissionGroupRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOnePermissionGroupRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` -} - -type DeleteOnePermissionGroupResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOnePermissionGroupResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdatePermissionGroupRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdatePermissionGroupRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - New_group_name string `xml:"new_group_name,omitempty" json:"new_group_name,omitempty"` - - Type_ string `xml:"type,omitempty" json:"type,omitempty"` - - All_users string `xml:"all_users,omitempty" json:"all_users,omitempty"` - - Description string `xml:"description,omitempty" json:"description,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` - - User_name []string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Subgroup []string `xml:"subgroup,omitempty" json:"subgroup,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type UpdatePermissionGroupResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdatePermissionGroupResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PermissionGroupData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCustomerPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomerPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` -} - -type GetCustomerPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomerPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PermissionResponse `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetUserPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetUserPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type GetUserPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetUserPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PermissionResponse `xml:"data,omitempty" json:"data,omitempty"` -} - -type CheckPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CheckPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` - - Zone_name string `xml:"zone_name,omitempty" json:"zone_name,omitempty"` -} - -type CheckPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CheckPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PermissionResponse `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddPermissionGroupUsersRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddPermissionGroupUsersRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - User_name []string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type AddPermissionGroupUsersResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddPermissionGroupUsersResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetPermissionGroupUsersRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetPermissionGroupUsersRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - User_name []string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type SetPermissionGroupUsersResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetPermissionGroupUsersResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemovePermissionGroupUsersRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemovePermissionGroupUsersRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - User_name []string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type RemovePermissionGroupUsersResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemovePermissionGroupUsersResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddPermissionGroupSubgroupsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddPermissionGroupSubgroupsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Subgroup []string `xml:"subgroup,omitempty" json:"subgroup,omitempty"` -} - -type AddPermissionGroupSubgroupsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddPermissionGroupSubgroupsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetPermissionGroupSubgroupsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetPermissionGroupSubgroupsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Subgroup []string `xml:"subgroup,omitempty" json:"subgroup,omitempty"` -} - -type SetPermissionGroupSubgroupsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetPermissionGroupSubgroupsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemovePermissionGroupSubgroupsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemovePermissionGroupSubgroupsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Subgroup []string `xml:"subgroup,omitempty" json:"subgroup,omitempty"` -} - -type RemovePermissionGroupSubgroupsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemovePermissionGroupSubgroupsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddPermissionGroupPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddPermissionGroupPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` -} - -type AddPermissionGroupPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddPermissionGroupPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetPermissionGroupPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetPermissionGroupPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` -} - -type SetPermissionGroupPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetPermissionGroupPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemovePermissionGroupPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemovePermissionGroupPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` -} - -type RemovePermissionGroupPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemovePermissionGroupPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddPermissionGroupZonesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddPermissionGroupZonesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type AddPermissionGroupZonesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddPermissionGroupZonesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetPermissionGroupZonesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetPermissionGroupZonesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type SetPermissionGroupZonesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetPermissionGroupZonesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemovePermissionGroupZonesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemovePermissionGroupZonesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Group_name string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type RemovePermissionGroupZonesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemovePermissionGroupZonesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddUserGroupsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddUserGroupsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Group []string `xml:"group,omitempty" json:"group,omitempty"` -} - -type AddUserGroupsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddUserGroupsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetUserGroupsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetUserGroupsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Group []string `xml:"group,omitempty" json:"group,omitempty"` -} - -type SetUserGroupsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetUserGroupsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemoveUserGroupsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveUserGroupsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Group []string `xml:"group,omitempty" json:"group,omitempty"` -} - -type RemoveUserGroupsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveUserGroupsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddUserZonesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddUserZonesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type AddUserZonesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddUserZonesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetUserZonesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetUserZonesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type SetUserZonesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetUserZonesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemoveUserZonesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveUserZonesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type RemoveUserZonesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveUserZonesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddUserPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddUserPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` -} - -type AddUserPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddUserPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetUserPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetUserPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` -} - -type SetUserPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetUserPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemoveUserPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveUserPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` -} - -type RemoveUserPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveUserPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddUserForbidsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddUserForbidsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Forbid []*PermissionData `xml:"forbid,omitempty" json:"forbid,omitempty"` -} - -type AddUserForbidsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddUserForbidsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetUserForbidsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetUserForbidsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Forbid []*PermissionData `xml:"forbid,omitempty" json:"forbid,omitempty"` -} - -type SetUserForbidsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetUserForbidsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemoveUserForbidsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveUserForbidsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Forbid []*PermissionData `xml:"forbid,omitempty" json:"forbid,omitempty"` -} - -type RemoveUserForbidsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveUserForbidsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddCustomerPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddCustomerPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` -} - -type AddCustomerPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddCustomerPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetCustomerPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetCustomerPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` -} - -type SetCustomerPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetCustomerPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemoveCustomerPermissionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveCustomerPermissionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` -} - -type RemoveCustomerPermissionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveCustomerPermissionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddCustomerForbidsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddCustomerForbidsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Forbid []string `xml:"forbid,omitempty" json:"forbid,omitempty"` -} - -type AddCustomerForbidsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddCustomerForbidsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetCustomerForbidsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetCustomerForbidsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Forbid []string `xml:"forbid,omitempty" json:"forbid,omitempty"` -} - -type SetCustomerForbidsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetCustomerForbidsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RemoveCustomerForbidsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveCustomerForbidsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Forbid []string `xml:"forbid,omitempty" json:"forbid,omitempty"` -} - -type RemoveCustomerForbidsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RemoveCustomerForbidsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetHostStatsFlagsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetHostStatsFlagsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` -} - -type GetHostStatsFlagsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetHostStatsFlagsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*HostStatFlagsData `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetHostStatsFlagsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetHostStatsFlagsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Host_stats []*HostStatFlagsData `xml:"host_stats,omitempty" json:"host_stats,omitempty"` -} - -type SetHostStatsFlagsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetHostStatsFlagsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*HostStatFlagsData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateTSIGKeyRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateTSIGKeyRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Algorithm string `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Secret string `xml:"secret,omitempty" json:"secret,omitempty"` - - Tsig_ocid string `xml:"tsig_ocid,omitempty" json:"tsig_ocid,omitempty"` - - Compartment string `xml:"compartment,omitempty" json:"compartment,omitempty"` -} - -type CreateTSIGKeyResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateTSIGKeyResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TSIGKeyData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneTSIGKeyRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneTSIGKeyRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type GetOneTSIGKeyResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneTSIGKeyResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TSIGKeyData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetTSIGKeysRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTSIGKeysRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetTSIGKeysResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTSIGKeysResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*TSIGKeyData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateTSIGKeyRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateTSIGKeyRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Name string `xml:"name,omitempty" json:"name,omitempty"` - - New_name string `xml:"new_name,omitempty" json:"new_name,omitempty"` - - Secret string `xml:"secret,omitempty" json:"secret,omitempty"` - - Algorithm string `xml:"algorithm,omitempty" json:"algorithm,omitempty"` - - Tsig_ocid string `xml:"tsig_ocid,omitempty" json:"tsig_ocid,omitempty"` - - Compartment string `xml:"compartment,omitempty" json:"compartment,omitempty"` -} - -type UpdateTSIGKeyResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateTSIGKeyResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TSIGKeyData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneTSIGKeyRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneTSIGKeyRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Name string `xml:"name,omitempty" json:"name,omitempty"` -} - -type DeleteOneTSIGKeyResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneTSIGKeyResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // address of responsible party, per SOA - Rname string `xml:"rname,omitempty" json:"rname,omitempty"` - - // default TTL (Time-to-Live) for records - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // code indicating how serial numbers are constructed on publish - Serial_style string `xml:"serial_style,omitempty" json:"serial_style,omitempty"` -} - -type CreateZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ZoneData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetOneZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ZoneData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetZonesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZonesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetZonesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZonesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ZoneData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteOneZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateSecondaryZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateSecondaryZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Masters []string `xml:"masters,omitempty" json:"masters,omitempty"` - - Tsig_key_name string `xml:"tsig_key_name,omitempty" json:"tsig_key_name,omitempty"` - - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` -} - -type CreateSecondaryZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateSecondaryZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SecondaryData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateSecondaryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSecondaryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Masters []string `xml:"masters,omitempty" json:"masters,omitempty"` - - Tsig_key_name string `xml:"tsig_key_name,omitempty" json:"tsig_key_name,omitempty"` - - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` -} - -type UpdateSecondaryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSecondaryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SecondaryData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ActivateSecondaryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateSecondaryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type ActivateSecondaryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateSecondaryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SecondaryData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeactivateSecondaryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateSecondaryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeactivateSecondaryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateSecondaryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SecondaryData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RetransferSecondaryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RetransferSecondaryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type RetransferSecondaryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RetransferSecondaryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SecondaryData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneSecondaryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSecondaryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetOneSecondaryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSecondaryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SecondaryData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetSecondariesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSecondariesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetSecondariesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSecondariesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*SecondaryData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetZoneApexRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneApexRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // FQDN of a node - Node string `xml:"node,omitempty" json:"node,omitempty"` -} - -type GetZoneApexResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneApexResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ZoneData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataA `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataA `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateAAAARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateAAAARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataAAAA `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateAAAARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateAAAARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AAAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneAAAARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneAAAARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataAAAA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneAAAARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneAAAARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AAAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetAAAARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAAAARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetAAAARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAAAARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*AAAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateAAAARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateAAAARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataAAAA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateAAAARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateAAAARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AAAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteAAAARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteAAAARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteAAAARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteAAAARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneAAAARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneAAAARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataAAAA `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneAAAARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneAAAARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateALIASRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateALIASRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataALIAS `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateALIASRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateALIASRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ALIASRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneALIASRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneALIASRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataALIAS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneALIASRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneALIASRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ALIASRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetALIASRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetALIASRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetALIASRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetALIASRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ALIASRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateALIASRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateALIASRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataALIAS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateALIASRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateALIASRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ALIASRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteALIASRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteALIASRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteALIASRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteALIASRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneALIASRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneALIASRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataALIAS `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneALIASRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneALIASRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateCAARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCAARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataCAA `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateCAARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCAARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneCAARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCAARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCAA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneCAARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCAARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCAARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCAARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetCAARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCAARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateCAARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCAARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCAA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateCAARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCAARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteCAARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCAARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteCAARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCAARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneCAARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCAARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCAA `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneCAARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCAARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateCDNSKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCDNSKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataCDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateCDNSKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCDNSKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CDNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneCDNSKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCDNSKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneCDNSKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCDNSKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CDNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCDNSKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCDNSKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetCDNSKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCDNSKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CDNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateCDNSKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCDNSKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateCDNSKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCDNSKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CDNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteCDNSKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCDNSKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteCDNSKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCDNSKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneCDNSKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCDNSKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneCDNSKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCDNSKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateCDSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCDSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataCDS `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateCDSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCDSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CDSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneCDSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCDSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCDS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneCDSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCDSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CDSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCDSRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCDSRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetCDSRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCDSRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CDSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateCDSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCDSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCDS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateCDSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCDSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CDSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteCDSRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCDSRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteCDSRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCDSRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneCDSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCDSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCDS `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneCDSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCDSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateCERTRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCERTRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataCERT `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateCERTRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCERTRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CERTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneCERTRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCERTRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCERT `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneCERTRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCERTRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CERTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCERTRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCERTRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetCERTRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCERTRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CERTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateCERTRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCERTRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCERT `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateCERTRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCERTRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CERTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteCERTRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCERTRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteCERTRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCERTRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneCERTRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCERTRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCERT `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneCERTRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCERTRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateCNAMERecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCNAMERecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataCNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateCNAMERecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCNAMERecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneCNAMERecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCNAMERecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneCNAMERecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCNAMERecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCNAMERecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCNAMERecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetCNAMERecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCNAMERecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateCNAMERecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCNAMERecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateCNAMERecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCNAMERecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteCNAMERecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCNAMERecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteCNAMERecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCNAMERecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneCNAMERecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCNAMERecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneCNAMERecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCNAMERecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateCSYNCRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCSYNCRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataCSYNC `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateCSYNCRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCSYNCRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CSYNCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneCSYNCRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCSYNCRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCSYNC `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneCSYNCRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCSYNCRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CSYNCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCSYNCRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCSYNCRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetCSYNCRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCSYNCRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CSYNCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateCSYNCRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCSYNCRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCSYNC `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateCSYNCRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCSYNCRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CSYNCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteCSYNCRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCSYNCRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteCSYNCRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCSYNCRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneCSYNCRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCSYNCRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataCSYNC `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneCSYNCRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCSYNCRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDHCIDRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDHCIDRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataDHCID `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateDHCIDRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDHCIDRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DHCIDRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDHCIDRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDHCIDRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDHCID `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneDHCIDRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDHCIDRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DHCIDRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDHCIDRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDHCIDRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetDHCIDRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDHCIDRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DHCIDRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDHCIDRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDHCIDRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDHCID `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateDHCIDRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDHCIDRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DHCIDRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteDHCIDRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteDHCIDRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteDHCIDRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteDHCIDRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDHCIDRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDHCIDRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDHCID `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneDHCIDRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDHCIDRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDNAMERecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDNAMERecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataDNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateDNAMERecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDNAMERecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDNAMERecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDNAMERecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneDNAMERecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDNAMERecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDNAMERecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDNAMERecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetDNAMERecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDNAMERecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDNAMERecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDNAMERecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateDNAMERecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDNAMERecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteDNAMERecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteDNAMERecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteDNAMERecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteDNAMERecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDNAMERecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDNAMERecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDNAME `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneDNAMERecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDNAMERecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDNSKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDNSKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateDNSKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDNSKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDNSKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDNSKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneDNSKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDNSKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDNSKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDNSKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetDNSKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDNSKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDNSKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDNSKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateDNSKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDNSKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteDNSKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteDNSKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteDNSKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteDNSKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDNSKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDNSKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDNSKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneDNSKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDNSKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataDS `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateDSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneDSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDSRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetDSRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDSRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateDSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteDSRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteDSRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteDSRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteDSRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataDS `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneDSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateIPSECKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateIPSECKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataIPSECKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateIPSECKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateIPSECKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *IPSECKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneIPSECKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneIPSECKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataIPSECKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneIPSECKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneIPSECKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *IPSECKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetIPSECKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetIPSECKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetIPSECKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetIPSECKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*IPSECKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateIPSECKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateIPSECKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataIPSECKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateIPSECKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateIPSECKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *IPSECKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteIPSECKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteIPSECKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteIPSECKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteIPSECKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneIPSECKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneIPSECKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataIPSECKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneIPSECKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneIPSECKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *KEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *KEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*KEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *KEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneKEYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneKEYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataKEY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneKEYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneKEYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateKXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateKXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataKX `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateKXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateKXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *KXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneKXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneKXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataKX `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneKXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneKXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *KXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetKXRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetKXRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetKXRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetKXRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*KXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateKXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateKXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataKX `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateKXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateKXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *KXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteKXRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteKXRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteKXRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteKXRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneKXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneKXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataKX `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneKXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneKXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateLOCRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateLOCRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataLOC `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateLOCRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateLOCRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LOCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneLOCRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneLOCRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataLOC `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneLOCRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneLOCRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LOCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetLOCRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetLOCRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetLOCRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetLOCRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*LOCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateLOCRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateLOCRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataLOC `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateLOCRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateLOCRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LOCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteLOCRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteLOCRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteLOCRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteLOCRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneLOCRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneLOCRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataLOC `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneLOCRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneLOCRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateMXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateMXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataMX `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateMXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateMXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *MXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneMXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneMXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataMX `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneMXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneMXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *MXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetMXRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetMXRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetMXRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetMXRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*MXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateMXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateMXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataMX `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateMXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateMXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *MXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteMXRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteMXRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteMXRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteMXRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneMXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneMXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataMX `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneMXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneMXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateNAPTRRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateNAPTRRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataNAPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateNAPTRRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateNAPTRRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NAPTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneNAPTRRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneNAPTRRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNAPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneNAPTRRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneNAPTRRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NAPTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetNAPTRRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNAPTRRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetNAPTRRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNAPTRRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*NAPTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateNAPTRRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateNAPTRRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNAPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateNAPTRRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateNAPTRRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NAPTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteNAPTRRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteNAPTRRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteNAPTRRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteNAPTRRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneNAPTRRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneNAPTRRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNAPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneNAPTRRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneNAPTRRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateNSAPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateNSAPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataNSAP `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateNSAPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateNSAPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NSAPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneNSAPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneNSAPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNSAP `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneNSAPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneNSAPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NSAPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetNSAPRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNSAPRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetNSAPRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNSAPRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*NSAPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateNSAPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateNSAPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNSAP `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateNSAPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateNSAPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NSAPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteNSAPRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteNSAPRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteNSAPRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteNSAPRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneNSAPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneNSAPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNSAP `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneNSAPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneNSAPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreatePOLICYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreatePOLICYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataPOLICY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreatePOLICYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreatePOLICYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *POLICYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOnePOLICYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOnePOLICYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPOLICY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOnePOLICYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOnePOLICYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *POLICYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetPOLICYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetPOLICYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetPOLICYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetPOLICYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*POLICYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdatePOLICYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdatePOLICYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPOLICY `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdatePOLICYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdatePOLICYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *POLICYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeletePOLICYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeletePOLICYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeletePOLICYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeletePOLICYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOnePOLICYRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOnePOLICYRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPOLICY `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOnePOLICYRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOnePOLICYRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreatePTRRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreatePTRRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreatePTRRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreatePTRRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOnePTRRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOnePTRRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOnePTRRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOnePTRRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetPTRRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetPTRRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetPTRRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetPTRRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*PTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdatePTRRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdatePTRRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdatePTRRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdatePTRRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeletePTRRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeletePTRRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeletePTRRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeletePTRRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOnePTRRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOnePTRRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPTR `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOnePTRRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOnePTRRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreatePXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreatePXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataPX `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreatePXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreatePXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOnePXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOnePXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPX `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOnePXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOnePXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetPXRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetPXRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetPXRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetPXRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*PXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdatePXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdatePXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPX `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdatePXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdatePXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeletePXRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeletePXRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeletePXRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeletePXRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOnePXRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOnePXRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataPX `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOnePXRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOnePXRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateRPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateRPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataRP `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateRPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateRPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneRPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneRPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataRP `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneRPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneRPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetRPRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRPRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetRPRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRPRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*RPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateRPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateRPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataRP `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateRPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateRPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteRPRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteRPRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteRPRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteRPRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneRPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneRPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataRP `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneRPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneRPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateSPFRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateSPFRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataSPF `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateSPFRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateSPFRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SPFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneSPFRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSPFRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSPF `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneSPFRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSPFRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SPFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetSPFRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSPFRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetSPFRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSPFRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*SPFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateSPFRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSPFRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSPF `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateSPFRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSPFRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SPFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteSPFRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteSPFRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteSPFRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteSPFRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneSPFRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneSPFRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSPF `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneSPFRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneSPFRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateSRVRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateSRVRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataSRV `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateSRVRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateSRVRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SRVRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneSRVRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSRVRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSRV `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneSRVRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSRVRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SRVRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetSRVRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSRVRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetSRVRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSRVRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*SRVRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateSRVRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSRVRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSRV `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateSRVRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSRVRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SRVRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteSRVRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteSRVRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteSRVRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteSRVRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneSRVRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneSRVRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSRV `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneSRVRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneSRVRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateSSHFPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateSSHFPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataSSHFP `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateSSHFPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateSSHFPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SSHFPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneSSHFPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSSHFPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSSHFP `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneSSHFPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSSHFPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SSHFPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetSSHFPRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSSHFPRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetSSHFPRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSSHFPRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*SSHFPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateSSHFPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSSHFPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSSHFP `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateSSHFPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSSHFPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SSHFPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteSSHFPRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteSSHFPRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteSSHFPRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteSSHFPRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneSSHFPRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneSSHFPRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSSHFP `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneSSHFPRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneSSHFPRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateTLSARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateTLSARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataTLSA `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateTLSARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateTLSARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TLSARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneTLSARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneTLSARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataTLSA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneTLSARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneTLSARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TLSARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetTLSARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTLSARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetTLSARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTLSARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*TLSARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateTLSARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateTLSARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataTLSA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateTLSARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateTLSARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TLSARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteTLSARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteTLSARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteTLSARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteTLSARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneTLSARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneTLSARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataTLSA `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneTLSARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneTLSARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateTXTRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateTXTRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataTXT `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type CreateTXTRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateTXTRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TXTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneTXTRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneTXTRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataTXT `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneTXTRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneTXTRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TXTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetTXTRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTXTRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetTXTRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTXTRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*TXTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateTXTRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateTXTRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataTXT `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` -} - -type UpdateTXTRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateTXTRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TXTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteTXTRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteTXTRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteTXTRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteTXTRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneTXTRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneTXTRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataTXT `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneTXTRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneTXTRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneSOARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSOARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataSOA `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneSOARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneSOARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SOARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetSOARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSOARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetSOARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetSOARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*SOARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateSOARecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSOARecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Serial_style string `xml:"serial_style,omitempty" json:"serial_style,omitempty"` - - Rdata *RDataSOAUpdate `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type UpdateSOARecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateSOARecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *SOARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateNSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateNSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Rdata *RDataNS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - Service_class string `xml:"service_class,omitempty" json:"service_class,omitempty"` -} - -type CreateNSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateNSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneNSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneNSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneNSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneNSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetNSRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNSRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetNSRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNSRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*NSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateNSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateNSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNS `xml:"rdata,omitempty" json:"rdata,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - Service_class string `xml:"service_class,omitempty" json:"service_class,omitempty"` -} - -type UpdateNSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateNSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *NSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteNSRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteNSRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteNSRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteNSRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneNSRecordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneNSRecordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` - - Rdata *RDataNS `xml:"rdata,omitempty" json:"rdata,omitempty"` -} - -type DeleteOneNSRecordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneNSRecordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - ARecords []*ARecordData `xml:"ARecords,omitempty" json:"ARecords,omitempty"` -} - -type ReplaceARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceAAAARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceAAAARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - AAAARecords []*AAAARecordData `xml:"AAAARecords,omitempty" json:"AAAARecords,omitempty"` -} - -type ReplaceAAAARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceAAAARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*AAAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceALIASRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceALIASRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - ALIASRecords []*ALIASRecordData `xml:"ALIASRecords,omitempty" json:"ALIASRecords,omitempty"` -} - -type ReplaceALIASRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceALIASRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ALIASRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceCAARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCAARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - CAARecords []*CAARecordData `xml:"CAARecords,omitempty" json:"CAARecords,omitempty"` -} - -type ReplaceCAARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCAARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CAARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceCDNSKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCDNSKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - CDNSKEYRecords []*CDNSKEYRecordData `xml:"CDNSKEYRecords,omitempty" json:"CDNSKEYRecords,omitempty"` -} - -type ReplaceCDNSKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCDNSKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CDNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceCDSRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCDSRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - CDSRecords []*CDSRecordData `xml:"CDSRecords,omitempty" json:"CDSRecords,omitempty"` -} - -type ReplaceCDSRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCDSRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CDSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceCERTRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCERTRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - CERTRecords []*CERTRecordData `xml:"CERTRecords,omitempty" json:"CERTRecords,omitempty"` -} - -type ReplaceCERTRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCERTRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CERTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceCNAMERecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCNAMERecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - CNAMERecords []*CNAMERecordData `xml:"CNAMERecords,omitempty" json:"CNAMERecords,omitempty"` -} - -type ReplaceCNAMERecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCNAMERecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceCSYNCRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCSYNCRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - CSYNCRecords []*CSYNCRecordData `xml:"CSYNCRecords,omitempty" json:"CSYNCRecords,omitempty"` -} - -type ReplaceCSYNCRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceCSYNCRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CSYNCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceDHCIDRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceDHCIDRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - DHCIDRecords []*DHCIDRecordData `xml:"DHCIDRecords,omitempty" json:"DHCIDRecords,omitempty"` -} - -type ReplaceDHCIDRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceDHCIDRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DHCIDRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceDNAMERecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceDNAMERecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - DNAMERecords []*DNAMERecordData `xml:"DNAMERecords,omitempty" json:"DNAMERecords,omitempty"` -} - -type ReplaceDNAMERecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceDNAMERecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DNAMERecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceDNSKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceDNSKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - DNSKEYRecords []*DNSKEYRecordData `xml:"DNSKEYRecords,omitempty" json:"DNSKEYRecords,omitempty"` -} - -type ReplaceDNSKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceDNSKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DNSKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceDSRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceDSRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - DSRecords []*DSRecordData `xml:"DSRecords,omitempty" json:"DSRecords,omitempty"` -} - -type ReplaceDSRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceDSRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceIPSECKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceIPSECKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - IPSECKEYRecords []*IPSECKEYRecordData `xml:"IPSECKEYRecords,omitempty" json:"IPSECKEYRecords,omitempty"` -} - -type ReplaceIPSECKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceIPSECKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*IPSECKEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceKEYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceKEYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - KEYRecords []*KEYRecordData `xml:"KEYRecords,omitempty" json:"KEYRecords,omitempty"` -} - -type ReplaceKEYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceKEYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*KEYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceKXRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceKXRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - KXRecords []*KXRecordData `xml:"KXRecords,omitempty" json:"KXRecords,omitempty"` -} - -type ReplaceKXRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceKXRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*KXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceLOCRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceLOCRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - LOCRecords []*LOCRecordData `xml:"LOCRecords,omitempty" json:"LOCRecords,omitempty"` -} - -type ReplaceLOCRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceLOCRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*LOCRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceMXRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceMXRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - MXRecords []*MXRecordData `xml:"MXRecords,omitempty" json:"MXRecords,omitempty"` -} - -type ReplaceMXRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceMXRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*MXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceNAPTRRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceNAPTRRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - NAPTRRecords []*NAPTRRecordData `xml:"NAPTRRecords,omitempty" json:"NAPTRRecords,omitempty"` -} - -type ReplaceNAPTRRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceNAPTRRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*NAPTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceNSAPRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceNSAPRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - NSAPRecords []*NSAPRecordData `xml:"NSAPRecords,omitempty" json:"NSAPRecords,omitempty"` -} - -type ReplaceNSAPRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceNSAPRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*NSAPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplacePOLICYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplacePOLICYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - POLICYRecords []*POLICYRecordData `xml:"POLICYRecords,omitempty" json:"POLICYRecords,omitempty"` -} - -type ReplacePOLICYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplacePOLICYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*POLICYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplacePTRRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplacePTRRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - PTRRecords []*PTRRecordData `xml:"PTRRecords,omitempty" json:"PTRRecords,omitempty"` -} - -type ReplacePTRRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplacePTRRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*PTRRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplacePXRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplacePXRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - PXRecords []*PXRecordData `xml:"PXRecords,omitempty" json:"PXRecords,omitempty"` -} - -type ReplacePXRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplacePXRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*PXRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceRPRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceRPRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - RPRecords []*RPRecordData `xml:"RPRecords,omitempty" json:"RPRecords,omitempty"` -} - -type ReplaceRPRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceRPRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*RPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceSPFRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceSPFRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - SPFRecords []*SPFRecordData `xml:"SPFRecords,omitempty" json:"SPFRecords,omitempty"` -} - -type ReplaceSPFRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceSPFRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*SPFRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceSRVRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceSRVRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - SRVRecords []*SRVRecordData `xml:"SRVRecords,omitempty" json:"SRVRecords,omitempty"` -} - -type ReplaceSRVRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceSRVRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*SRVRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceSSHFPRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceSSHFPRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - SSHFPRecords []*SSHFPRecordData `xml:"SSHFPRecords,omitempty" json:"SSHFPRecords,omitempty"` -} - -type ReplaceSSHFPRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceSSHFPRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*SSHFPRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceTLSARecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceTLSARecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - TLSARecords []*TLSARecordData `xml:"TLSARecords,omitempty" json:"TLSARecords,omitempty"` -} - -type ReplaceTLSARecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceTLSARecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*TLSARecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceTXTRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceTXTRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - TXTRecords []*TXTRecordData `xml:"TXTRecords,omitempty" json:"TXTRecords,omitempty"` -} - -type ReplaceTXTRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceTXTRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*TXTRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ReplaceNSRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceNSRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - NSRecords []*NSRecordData `xml:"NSRecords,omitempty" json:"NSRecords,omitempty"` -} - -type ReplaceNSRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ReplaceNSRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*NSRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetANYRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetANYRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetANYRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetANYRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ANYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetAllRecordsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAllRecordsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetAllRecordsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAllRecordsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ANYRecordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetAllAliasQNamesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAllAliasQNamesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetAllAliasQNamesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAllAliasQNamesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *QNames `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneUserRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneUserRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of user - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type GetOneUserResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneUserResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *UserData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneUserRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneUserRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of user - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type DeleteOneUserResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneUserResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateUserRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateUserRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` - - Group_name []string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` - - Forbid []*PermissionData `xml:"forbid,omitempty" json:"forbid,omitempty"` - - Nickname string `xml:"nickname,omitempty" json:"nickname,omitempty"` - - First_name string `xml:"first_name,omitempty" json:"first_name,omitempty"` - - Last_name string `xml:"last_name,omitempty" json:"last_name,omitempty"` - - Phone string `xml:"phone,omitempty" json:"phone,omitempty"` - - Fax string `xml:"fax,omitempty" json:"fax,omitempty"` - - Email string `xml:"email,omitempty" json:"email,omitempty"` - - Notify_email string `xml:"notify_email,omitempty" json:"notify_email,omitempty"` - - Pager_email string `xml:"pager_email,omitempty" json:"pager_email,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` - - Address_2 string `xml:"address_2,omitempty" json:"address_2,omitempty"` - - City string `xml:"city,omitempty" json:"city,omitempty"` - - State string `xml:"state,omitempty" json:"state,omitempty"` - - Post_code string `xml:"post_code,omitempty" json:"post_code,omitempty"` - - Country string `xml:"country,omitempty" json:"country,omitempty"` - - Website string `xml:"website,omitempty" json:"website,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` -} - -type CreateUserResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateUserResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *UserData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateUserRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateUserRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - New_user_name string `xml:"new_user_name,omitempty" json:"new_user_name,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` - - Require_pw_change string `xml:"require_pw_change,omitempty" json:"require_pw_change,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` - - Group_name []string `xml:"group_name,omitempty" json:"group_name,omitempty"` - - Zone []*PermissionZone `xml:"zone,omitempty" json:"zone,omitempty"` - - Forbid []*PermissionData `xml:"forbid,omitempty" json:"forbid,omitempty"` - - Nickname string `xml:"nickname,omitempty" json:"nickname,omitempty"` - - First_name string `xml:"first_name,omitempty" json:"first_name,omitempty"` - - Last_name string `xml:"last_name,omitempty" json:"last_name,omitempty"` - - Phone string `xml:"phone,omitempty" json:"phone,omitempty"` - - Fax string `xml:"fax,omitempty" json:"fax,omitempty"` - - Email string `xml:"email,omitempty" json:"email,omitempty"` - - Notify_email string `xml:"notify_email,omitempty" json:"notify_email,omitempty"` - - Pager_email string `xml:"pager_email,omitempty" json:"pager_email,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` - - Address_2 string `xml:"address_2,omitempty" json:"address_2,omitempty"` - - City string `xml:"city,omitempty" json:"city,omitempty"` - - State string `xml:"state,omitempty" json:"state,omitempty"` - - Post_code string `xml:"post_code,omitempty" json:"post_code,omitempty"` - - Country string `xml:"country,omitempty" json:"country,omitempty"` - - Website string `xml:"website,omitempty" json:"website,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` -} - -type UpdateUserResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateUserResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *UserData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetUsersRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetUsersRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Search string `xml:"search,omitempty" json:"search,omitempty"` -} - -type GetUsersResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetUsersResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*UserData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetUpdateUsersRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetUpdateUsersRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetUpdateUsersResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetUpdateUsersResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*UserData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateUpdateUserRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateUpdateUserRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` -} - -type UpdateUpdateUserResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateUpdateUserResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *UserData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneUpdateUserRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneUpdateUserRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type DeleteOneUpdateUserResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneUpdateUserResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateUserPasswordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateUserPasswordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` -} - -type UpdateUserPasswordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateUserPasswordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *UserData `xml:"data,omitempty" json:"data,omitempty"` -} - -type BlockUserRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ BlockUserRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type BlockUserResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ BlockUserResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *UserData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UnblockUserRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UnblockUserRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type UnblockUserResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UnblockUserResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *UserData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateContactRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateContactRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Nickname string `xml:"nickname,omitempty" json:"nickname,omitempty"` - - First_name string `xml:"first_name,omitempty" json:"first_name,omitempty"` - - Last_name string `xml:"last_name,omitempty" json:"last_name,omitempty"` - - Phone string `xml:"phone,omitempty" json:"phone,omitempty"` - - Fax string `xml:"fax,omitempty" json:"fax,omitempty"` - - Email string `xml:"email,omitempty" json:"email,omitempty"` - - Notify_email string `xml:"notify_email,omitempty" json:"notify_email,omitempty"` - - Pager_email string `xml:"pager_email,omitempty" json:"pager_email,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` - - Address_2 string `xml:"address_2,omitempty" json:"address_2,omitempty"` - - City string `xml:"city,omitempty" json:"city,omitempty"` - - State string `xml:"state,omitempty" json:"state,omitempty"` - - Post_code string `xml:"post_code,omitempty" json:"post_code,omitempty"` - - Country string `xml:"country,omitempty" json:"country,omitempty"` - - Website string `xml:"website,omitempty" json:"website,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` -} - -type CreateContactResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateContactResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ContactData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneContactRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneContactRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Nickname string `xml:"nickname,omitempty" json:"nickname,omitempty"` -} - -type GetOneContactResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneContactResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ContactData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetContactsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetContactsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetContactsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetContactsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ContactData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneContactRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneContactRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Nickname string `xml:"nickname,omitempty" json:"nickname,omitempty"` -} - -type DeleteOneContactResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneContactResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateContactRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateContactRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Nickname string `xml:"nickname,omitempty" json:"nickname,omitempty"` - - New_nickname string `xml:"new_nickname,omitempty" json:"new_nickname,omitempty"` - - First_name string `xml:"first_name,omitempty" json:"first_name,omitempty"` - - Last_name string `xml:"last_name,omitempty" json:"last_name,omitempty"` - - Phone string `xml:"phone,omitempty" json:"phone,omitempty"` - - Fax string `xml:"fax,omitempty" json:"fax,omitempty"` - - Email string `xml:"email,omitempty" json:"email,omitempty"` - - Notify_email string `xml:"notify_email,omitempty" json:"notify_email,omitempty"` - - Pager_email string `xml:"pager_email,omitempty" json:"pager_email,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` - - Address_2 string `xml:"address_2,omitempty" json:"address_2,omitempty"` - - City string `xml:"city,omitempty" json:"city,omitempty"` - - State string `xml:"state,omitempty" json:"state,omitempty"` - - Post_code string `xml:"post_code,omitempty" json:"post_code,omitempty"` - - Country string `xml:"country,omitempty" json:"country,omitempty"` - - Website string `xml:"website,omitempty" json:"website,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` -} - -type UpdateContactResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateContactResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ContactData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateCustomerRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCustomerRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Pool_id string `xml:"pool_id,omitempty" json:"pool_id,omitempty"` - - Type_ string `xml:"type,omitempty" json:"type,omitempty"` - - Level string `xml:"level,omitempty" json:"level,omitempty"` - - Primary_sales_agent string `xml:"primary_sales_agent,omitempty" json:"primary_sales_agent,omitempty"` - - Salesforce_id string `xml:"salesforce_id,omitempty" json:"salesforce_id,omitempty"` - - Owner *CustomerAdminData `xml:"owner,omitempty" json:"owner,omitempty"` - - Billing *CustomerAdminData `xml:"billing,omitempty" json:"billing,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` - - Forbid []string `xml:"forbid,omitempty" json:"forbid,omitempty"` -} - -type CreateCustomerResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCustomerResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CustomerData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateCustomerRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCustomerRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - New_customer_name string `xml:"new_customer_name,omitempty" json:"new_customer_name,omitempty"` - - Organization string `xml:"organization,omitempty" json:"organization,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Note string `xml:"note,omitempty" json:"note,omitempty"` - - Pool_id string `xml:"pool_id,omitempty" json:"pool_id,omitempty"` - - Activated string `xml:"activated,omitempty" json:"activated,omitempty"` - - Type_ string `xml:"type,omitempty" json:"type,omitempty"` - - Level string `xml:"level,omitempty" json:"level,omitempty"` - - Primary_sales_agent string `xml:"primary_sales_agent,omitempty" json:"primary_sales_agent,omitempty"` - - Salesforce_id string `xml:"salesforce_id,omitempty" json:"salesforce_id,omitempty"` - - Owner_contact string `xml:"owner_contact,omitempty" json:"owner_contact,omitempty"` - - Billing_contact string `xml:"billing_contact,omitempty" json:"billing_contact,omitempty"` - - Permission []string `xml:"permission,omitempty" json:"permission,omitempty"` - - Forbid []string `xml:"forbid,omitempty" json:"forbid,omitempty"` -} - -type UpdateCustomerResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCustomerResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CustomerData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneCustomerRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCustomerRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` -} - -type GetOneCustomerResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneCustomerResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CustomerData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCustomersRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomersRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Simple string `xml:"simple,omitempty" json:"simple,omitempty"` - - Search string `xml:"search,omitempty" json:"search,omitempty"` -} - -type GetCustomersResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomersResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CustomerData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneCustomerRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCustomerRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Note string `xml:"note,omitempty" json:"note,omitempty"` -} - -type DeleteOneCustomerResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneCustomerResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCustomerPrefsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomerPrefsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // preference name; may be '*' to list all - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` -} - -type GetCustomerPrefsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomerPrefsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CustomerPrefData `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetCustomerPrefsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetCustomerPrefsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Prefs []*CustomerPrefData `xml:"prefs,omitempty" json:"prefs,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` -} - -type SetCustomerPrefsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetCustomerPrefsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCustomerIPACLRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomerIPACLRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // customer name or ID to see ACLs for, defaults to current customer - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - // scope of the ACL to retrieve - Scope string `xml:"scope,omitempty" json:"scope,omitempty"` -} - -type GetCustomerIPACLResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomerIPACLResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CustomerIPACL `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetCustomerIPACLRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetCustomerIPACLRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // customer name or ID to set ACLs for, defaults to current customer - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Acl *CustomerIPACL `xml:"acl,omitempty" json:"acl,omitempty"` -} - -type SetCustomerIPACLResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetCustomerIPACLResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CustomerIPACL `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateCustomerOracleMetadataRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCustomerOracleMetadataRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of customer - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - // compartment id - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - // tenant id - Tenant string `xml:"tenant,omitempty" json:"tenant,omitempty"` -} - -type CreateCustomerOracleMetadataResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateCustomerOracleMetadataResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CustomerOracleMetadataData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateCustomerOracleMetadataRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCustomerOracleMetadataRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of customer - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - // compartment id - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - // tenant id - Tenant string `xml:"tenant,omitempty" json:"tenant,omitempty"` -} - -type UpdateCustomerOracleMetadataResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateCustomerOracleMetadataResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CustomerOracleMetadataData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetCustomerOracleMetadataRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomerOracleMetadataRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of customer - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - // compartment id - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - // tenant id - Tenant string `xml:"tenant,omitempty" json:"tenant,omitempty"` -} - -type GetCustomerOracleMetadataResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetCustomerOracleMetadataResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*CustomerOracleMetadataData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteCustomerOracleMetadataRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCustomerOracleMetadataRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of customer - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` -} - -type DeleteCustomerOracleMetadataResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteCustomerOracleMetadataResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *CustomerOracleMetadataData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateZoneOracleMetadataRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateZoneOracleMetadataRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // compartment id - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - // public_id - Public_id string `xml:"public_id,omitempty" json:"public_id,omitempty"` -} - -type CreateZoneOracleMetadataResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateZoneOracleMetadataResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ZoneOracleMetadataData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateZoneOracleMetadataRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateZoneOracleMetadataRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // compartment id - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - // public_id - Public_id string `xml:"public_id,omitempty" json:"public_id,omitempty"` -} - -type UpdateZoneOracleMetadataResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateZoneOracleMetadataResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ZoneOracleMetadataData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetZoneOracleMetadataRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneOracleMetadataRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // compartment id - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - // public id - Public_id string `xml:"public_id,omitempty" json:"public_id,omitempty"` -} - -type GetZoneOracleMetadataResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneOracleMetadataResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ZoneOracleMetadataData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteZoneOracleMetadataRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteZoneOracleMetadataRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteZoneOracleMetadataResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteZoneOracleMetadataResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ZoneOracleMetadataData `xml:"data,omitempty" json:"data,omitempty"` -} - -type OCIMigrateRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ OCIMigrateRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // , req - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // public_id - Zone_ocid string `xml:"zone_ocid,omitempty" json:"zone_ocid,omitempty"` - - // compartment id - Compartment_id string `xml:"compartment_id,omitempty" json:"compartment_id,omitempty"` - - // tenant id - Tenancy_id string `xml:"tenancy_id,omitempty" json:"tenancy_id,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` - - Replacements *Replacement `xml:"replacements,omitempty" json:"replacements,omitempty"` -} - -type OCIMigrateResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ OCIMigrateResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDDNSRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDDNSRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // an IP address, either v4 or v6 - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // either A or AAAA - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type CreateDDNSResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDDNSResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DDNSData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDDNSRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDDNSRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // either A or AAAA - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneDDNSResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDDNSResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DDNSData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDDNSsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDDNSsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetDDNSsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDDNSsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DDNSData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDDNSRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDDNSRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // either A or AAAA - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // an IP address, either v4 or v6 - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type UpdateDDNSResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDDNSResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DDNSData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDDNSRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDDNSRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // either A or AAAA - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeleteOneDDNSResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDDNSResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ActivateDDNSRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateDDNSRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // either A or AAAA - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` -} - -type ActivateDDNSResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateDDNSResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DDNSData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeactivateDDNSRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateDDNSRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // either A or AAAA - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` -} - -type DeactivateDDNSResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateDDNSResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DDNSData `xml:"data,omitempty" json:"data,omitempty"` -} - -type ResetDDNSRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ResetDDNSRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // either A or AAAA - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` -} - -type ResetDDNSResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ResetDDNSResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DDNSData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetUpdateUserPasswordRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetUpdateUserPasswordRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - User_name string `xml:"user_name,omitempty" json:"user_name,omitempty"` -} - -type GetUpdateUserPasswordResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetUpdateUserPasswordResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *UpdateUserPasswordData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDDNSHostRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDDNSHostRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // an IP address, either v4 or v6 - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // either A or AAAA - Record_type string `xml:"record_type,omitempty" json:"record_type,omitempty"` - - // name of update user - User string `xml:"user,omitempty" json:"user,omitempty"` -} - -type CreateDDNSHostResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDDNSHostResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DDNSHostData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateUpdateUserRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateUpdateUserRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Nickname string `xml:"nickname,omitempty" json:"nickname,omitempty"` - - Password string `xml:"password,omitempty" json:"password,omitempty"` -} - -type CreateUpdateUserResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateUpdateUserResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *UpdateUser `xml:"data,omitempty" json:"data,omitempty"` -} - -type AddDDNSRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddDDNSRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Record_id int64 `xml:"record_id,omitempty" json:"record_id,omitempty"` -} - -type AddDDNSResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ AddDDNSResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DDNSData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateFailoverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateFailoverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // normally served address - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // 'ip' or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // address or CNAME to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type CreateFailoverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateFailoverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *FailoverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneFailoverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneFailoverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneFailoverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneFailoverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *FailoverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetFailoversRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetFailoversRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetFailoversResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetFailoversResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*FailoverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateFailoverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateFailoverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // normally served address - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // 'ip' or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // address or CNAME to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` -} - -type UpdateFailoverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateFailoverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *FailoverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneFailoverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneFailoverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeleteOneFailoverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneFailoverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ActivateFailoverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateFailoverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type ActivateFailoverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateFailoverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *FailoverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeactivateFailoverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateFailoverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeactivateFailoverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateFailoverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *FailoverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RecoverFailoverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverFailoverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type RecoverFailoverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverFailoverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *FailoverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateLoadBalanceRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateLoadBalanceRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // pool of IP addresses to balance - Pool []*LoadBalanceAddress `xml:"pool,omitempty" json:"pool,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // 'ip', 'global', or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' or 'cname', what to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type CreateLoadBalanceResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateLoadBalanceResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalanceData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneLoadBalanceRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneLoadBalanceRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneLoadBalanceResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneLoadBalanceResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalanceData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetLoadBalancesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetLoadBalancesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetLoadBalancesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetLoadBalancesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*LoadBalanceData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateLoadBalanceRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateLoadBalanceRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // pool of IP addresses to balance - Pool []*LoadBalanceAddress `xml:"pool,omitempty" json:"pool,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // 'ip', 'global', or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' or 'cname', what to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` -} - -type UpdateLoadBalanceResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateLoadBalanceResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalanceData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneLoadBalanceRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneLoadBalanceRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeleteOneLoadBalanceResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneLoadBalanceResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ActivateLoadBalanceRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateLoadBalanceRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type ActivateLoadBalanceResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateLoadBalanceResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalanceData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeactivateLoadBalanceRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateLoadBalanceRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeactivateLoadBalanceResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateLoadBalanceResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalanceData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RecoverLoadBalanceRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverLoadBalanceRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type RecoverLoadBalanceResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverLoadBalanceResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalanceData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RecoverLoadBalanceIPRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverLoadBalanceIPRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type RecoverLoadBalanceIPResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverLoadBalanceIPResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalanceData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateLoadBalancePoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateLoadBalancePoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // an IP address to monitor and publish - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` -} - -type CreateLoadBalancePoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateLoadBalancePoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalancePoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateLoadBalancePoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateLoadBalancePoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // The IP of the pool entry to update - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // If specified, the new IP address for this entry - New_address string `xml:"new_address,omitempty" json:"new_address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` -} - -type UpdateLoadBalancePoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateLoadBalancePoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalancePoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneLoadBalancePoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneLoadBalancePoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // The IP of the pool entry to get - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type GetOneLoadBalancePoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneLoadBalancePoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *LoadBalancePoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetLoadBalancePoolEntriesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetLoadBalancePoolEntriesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetLoadBalancePoolEntriesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetLoadBalancePoolEntriesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*LoadBalancePoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneLoadBalancePoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneLoadBalancePoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // The IP of the pool entry to delete - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type DeleteOneLoadBalancePoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneLoadBalancePoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateGSLBRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGSLBRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // per-region addresses and configuration - Region []*GSLBRegion `xml:"region,omitempty" json:"region,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type CreateGSLBResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGSLBResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneGSLBRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGSLBRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneGSLBResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGSLBResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetGSLBsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGSLBsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetGSLBsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGSLBsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*GSLBData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateGSLBRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGSLBRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // per-region addresses and configuration - Region []*GSLBRegion `xml:"region,omitempty" json:"region,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` -} - -type UpdateGSLBResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGSLBResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneGSLBRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGSLBRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeleteOneGSLBResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGSLBResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ActivateGSLBRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateGSLBRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type ActivateGSLBResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateGSLBResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeactivateGSLBRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateGSLBRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeactivateGSLBResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateGSLBResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RecoverGSLBRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverGSLBRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type RecoverGSLBResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverGSLBResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RecoverGSLBIPRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverGSLBIPRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type RecoverGSLBIPResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverGSLBIPResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateGSLBRegionRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGSLBRegionRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // 'ip', 'global', or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' or 'cname', what to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // number of 'ok' addresses before region fails over - Min_healthy int32 `xml:"min_healthy,omitempty" json:"min_healthy,omitempty"` - - // pool of IP addresses to balance - Pool []*GSLBAddress `xml:"pool,omitempty" json:"pool,omitempty"` -} - -type CreateGSLBRegionResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGSLBRegionResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBRegionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneGSLBRegionRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGSLBRegionRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneGSLBRegionResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGSLBRegionResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBRegionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetGSLBRegionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGSLBRegionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetGSLBRegionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGSLBRegionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*GSLBRegionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateGSLBRegionRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGSLBRegionRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'ip', 'global', or 'cname' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' or 'cname', what to serve on failover - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // number of 'ok' addresses before region fails over - Min_healthy int32 `xml:"min_healthy,omitempty" json:"min_healthy,omitempty"` - - // pool of IP addresses to balance - Pool []*GSLBAddress `xml:"pool,omitempty" json:"pool,omitempty"` -} - -type UpdateGSLBRegionResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGSLBRegionResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBRegionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneGSLBRegionRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGSLBRegionRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeleteOneGSLBRegionResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGSLBRegionResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateGSLBRegionPoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGSLBRegionPoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // an IP address or FQDN to monitor and publish - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` -} - -type CreateGSLBRegionPoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateGSLBRegionPoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBRegionPoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateGSLBRegionPoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGSLBRegionPoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // The IP address or FQDN of the pool entry to update - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // If specified, the new IP address for this entry - New_address string `xml:"new_address,omitempty" json:"new_address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` -} - -type UpdateGSLBRegionPoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateGSLBRegionPoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBRegionPoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneGSLBRegionPoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGSLBRegionPoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // The IP address or FQDN of the pool entry to get - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type GetOneGSLBRegionPoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneGSLBRegionPoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *GSLBRegionPoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetGSLBRegionPoolEntriesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGSLBRegionPoolEntriesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` -} - -type GetGSLBRegionPoolEntriesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetGSLBRegionPoolEntriesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*GSLBRegionPoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneGSLBRegionPoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGSLBRegionPoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // The IP of the pool entry to delete - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type DeleteOneGSLBRegionPoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneGSLBRegionPoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateRTTMRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateRTTMRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // per-region addresses and configuration - Region []*RTTMRegion `xml:"region,omitempty" json:"region,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // for custom syslog messages - Syslog_rttm_fmt string `xml:"syslog_rttm_fmt,omitempty" json:"syslog_rttm_fmt,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` - - // details about performance monitoring - Performance_monitor *MonitorData `xml:"performance_monitor,omitempty" json:"performance_monitor,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type CreateRTTMResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateRTTMResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneRTTMRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneRTTMRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneRTTMResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneRTTMResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetRTTMsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetRTTMsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*RTTMData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateRTTMRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateRTTMRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // per-region addresses and configuration - Region []*RTTMRegion `xml:"region,omitempty" json:"region,omitempty"` - - // TTL (time-to-live) - Ttl int32 `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // restore normal address automatically (Y) - Auto_recover string `xml:"auto_recover,omitempty" json:"auto_recover,omitempty"` - - // The number of consecutive monitoring intervals to delay before placing an IP address back in service - Recovery_delay int32 `xml:"recovery_delay,omitempty" json:"recovery_delay,omitempty"` - - // contact that gets status notification - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - // The IP or hostname of a syslog server to send monitor events to - Syslog_server string `xml:"syslog_server,omitempty" json:"syslog_server,omitempty"` - - // The port of the syslog server. Defaults to 514 if not present - Syslog_port string `xml:"syslog_port,omitempty" json:"syslog_port,omitempty"` - - // The syslog ident to use. Defaults to 'dynect' - Syslog_ident string `xml:"syslog_ident,omitempty" json:"syslog_ident,omitempty"` - - // The syslog facility to use. Defaults to 'daemon' - Syslog_facility string `xml:"syslog_facility,omitempty" json:"syslog_facility,omitempty"` - - // When to deliver syslog message; 'change' or 'all' - Syslog_delivery string `xml:"syslog_delivery,omitempty" json:"syslog_delivery,omitempty"` - - // for custom syslog messages - Syslog_probe_fmt string `xml:"syslog_probe_fmt,omitempty" json:"syslog_probe_fmt,omitempty"` - - // for custom syslog messages - Syslog_status_fmt string `xml:"syslog_status_fmt,omitempty" json:"syslog_status_fmt,omitempty"` - - // for custom syslog messages - Syslog_rttm_fmt string `xml:"syslog_rttm_fmt,omitempty" json:"syslog_rttm_fmt,omitempty"` - - // details about monitoring - Monitor *MonitorData `xml:"monitor,omitempty" json:"monitor,omitempty"` - - // details about performance monitoring - Performance_monitor *MonitorData `xml:"performance_monitor,omitempty" json:"performance_monitor,omitempty"` -} - -type UpdateRTTMResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateRTTMResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneRTTMRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneRTTMRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeleteOneRTTMResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneRTTMResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ActivateRTTMRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateRTTMRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type ActivateRTTMResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateRTTMResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeactivateRTTMRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateRTTMRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeactivateRTTMResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateRTTMResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RecoverRTTMRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverRTTMRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type RecoverRTTMResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverRTTMResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMData `xml:"data,omitempty" json:"data,omitempty"` -} - -type RecoverRTTMIPRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverRTTMIPRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type RecoverRTTMIPResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RecoverRTTMIPResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetRTTMLogsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMLogsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // The timestamp indicating the beginning of the period to report on - Start_ts int32 `xml:"start_ts,omitempty" json:"start_ts,omitempty"` - - // The timestamp indicating the end of the period to report on - End_ts int32 `xml:"end_ts,omitempty" json:"end_ts,omitempty"` -} - -type GetRTTMLogsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMLogsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*RTTMLogData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetRTTMRRSetsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMRRSetsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // The timestamp indicating the period to report on - Ts int32 `xml:"ts,omitempty" json:"ts,omitempty"` -} - -type GetRTTMRRSetsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMRRSetsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*RTTMLogData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateRTTMRegionRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateRTTMRegionRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // 'Y' or 'N', if 'Y', region will filled in with global settings - Autopopulate string `xml:"autopopulate,omitempty" json:"autopopulate,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // pool_count, number of addresses to be included in the serve pool - Ep int32 `xml:"ep,omitempty" json:"ep,omitempty"` - - // 'ip', 'global', 'region', default 'global' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' mode, address to serve on failover. For 'region' mode, region_code of the region to failover to. - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // failover_count, number of addresses that must be 'ok', otherwise a region is considered 'failover' - Apmc int32 `xml:"apmc,omitempty" json:"apmc,omitempty"` - - // failover_count2, number of addresses that must be 'ok', otherwise a region is considered 'failover' - Epmc int32 `xml:"epmc,omitempty" json:"epmc,omitempty"` - - // pool of IP addresses to balance - Pool []*RTTMAddress `xml:"pool,omitempty" json:"pool,omitempty"` -} - -type CreateRTTMRegionResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateRTTMRegionResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMRegionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneRTTMRegionRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneRTTMRegionRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneRTTMRegionResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneRTTMRegionResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMRegionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetRTTMRegionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMRegionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetRTTMRegionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMRegionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*RTTMRegionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateRTTMRegionRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateRTTMRegionRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'Y' or 'N', if 'Y', region will filled in with global settings - Autopopulate string `xml:"autopopulate,omitempty" json:"autopopulate,omitempty"` - - // number of addresses in each DNS response - Serve_count int32 `xml:"serve_count,omitempty" json:"serve_count,omitempty"` - - // pool_count, number of addresses to be included in the serve pool - Ep int32 `xml:"ep,omitempty" json:"ep,omitempty"` - - // 'ip', 'global', 'region', default 'global' - Failover_mode string `xml:"failover_mode,omitempty" json:"failover_mode,omitempty"` - - // for 'ip' mode, address to serve on failover. For 'region' mode, region_code of the region to failover to. - Failover_data string `xml:"failover_data,omitempty" json:"failover_data,omitempty"` - - // failover_count, number of addresses that must be 'ok', otherwise a region is considered 'failover' - Apmc int32 `xml:"apmc,omitempty" json:"apmc,omitempty"` - - // failover_count2, number of addresses that must be 'ok', otherwise a region is considered 'failover' - Epmc int32 `xml:"epmc,omitempty" json:"epmc,omitempty"` - - // pool of IP addresses to balance - Pool []*RTTMAddress `xml:"pool,omitempty" json:"pool,omitempty"` -} - -type UpdateRTTMRegionResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateRTTMRegionResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMRegionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneRTTMRegionRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneRTTMRegionRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeleteOneRTTMRegionResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneRTTMRegionResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateRTTMRegionPoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateRTTMRegionPoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // an IP address to monitor and publish - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` -} - -type CreateRTTMRegionPoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateRTTMRegionPoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMRegionPoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateRTTMRegionPoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateRTTMRegionPoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // The IP of the pool entry to update - Address string `xml:"address,omitempty" json:"address,omitempty"` - - // If specified, the new IP address for this entry - New_address string `xml:"new_address,omitempty" json:"new_address,omitempty"` - - // a human-readable label - Label string `xml:"label,omitempty" json:"label,omitempty"` - - // how often this is served relative to others in pool - Weight int32 `xml:"weight,omitempty" json:"weight,omitempty"` - - // how this address reponds to monitoring: obey,remove,always,no - Serve_mode string `xml:"serve_mode,omitempty" json:"serve_mode,omitempty"` -} - -type UpdateRTTMRegionPoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateRTTMRegionPoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMRegionPoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneRTTMRegionPoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneRTTMRegionPoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // The IP of the pool entry to get - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type GetOneRTTMRegionPoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneRTTMRegionPoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *RTTMRegionPoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetRTTMRegionPoolEntriesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMRegionPoolEntriesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` -} - -type GetRTTMRegionPoolEntriesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetRTTMRegionPoolEntriesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*RTTMRegionPoolEntry `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneRTTMRegionPoolEntryRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneRTTMRegionPoolEntryRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'global' or specific region code: 'US West', 'US Central', 'US East', 'EU West', 'EU Central', 'Asia', - Region_code string `xml:"region_code,omitempty" json:"region_code,omitempty"` - - // The IP of the pool entry to delete - Address string `xml:"address,omitempty" json:"address,omitempty"` -} - -type DeleteOneRTTMRegionPoolEntryResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneRTTMRegionPoolEntryResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateHTTPRedirectRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateHTTPRedirectRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // URL requests are redirecto to - Url string `xml:"url,omitempty" json:"url,omitempty"` - - // either '301' (temporary) or '302' (permanent) - Code string `xml:"code,omitempty" json:"code,omitempty"` - - // should redirected URL include requested URL - Keep_uri string `xml:"keep_uri,omitempty" json:"keep_uri,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type CreateHTTPRedirectResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateHTTPRedirectResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *HTTPRedirectData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneHTTPRedirectRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneHTTPRedirectRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneHTTPRedirectResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneHTTPRedirectResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *HTTPRedirectData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetHTTPRedirectsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetHTTPRedirectsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetHTTPRedirectsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetHTTPRedirectsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*HTTPRedirectData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateHTTPRedirectRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateHTTPRedirectRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // URL requests are redirecto to - Url string `xml:"url,omitempty" json:"url,omitempty"` - - // either '301' (temporary) or '302' (permanent) - Code string `xml:"code,omitempty" json:"code,omitempty"` - - // should redirected URL include requested URL - Keep_uri string `xml:"keep_uri,omitempty" json:"keep_uri,omitempty"` -} - -type UpdateHTTPRedirectResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateHTTPRedirectResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *HTTPRedirectData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneHTTPRedirectRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneHTTPRedirectRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - Publish string `xml:"publish,omitempty" json:"publish,omitempty"` -} - -type DeleteOneHTTPRedirectResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneHTTPRedirectResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateAdvRedirectRuleRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateAdvRedirectRuleRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // either '301' (temporary) or '302' (permanent) - Code string `xml:"code,omitempty" json:"code,omitempty"` - - // host portion of URL to match - Host_prefix string `xml:"host_prefix,omitempty" json:"host_prefix,omitempty"` - - // path portion of URL to match - Path string `xml:"path,omitempty" json:"path,omitempty"` - - // replacement pattern - Url_pattern string `xml:"url_pattern,omitempty" json:"url_pattern,omitempty"` - - // 'Y'/'N', default 'Y' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // Public ID of next AdvRedirect rule to be processed. (default to end of list) - Next_public_id string `xml:"next_public_id,omitempty" json:"next_public_id,omitempty"` -} - -type CreateAdvRedirectRuleResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateAdvRedirectRuleResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AdvRedirectRuleData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateAdvRedirectRuleRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateAdvRedirectRuleRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // public_id of Rule - Public_id string `xml:"public_id,omitempty" json:"public_id,omitempty"` - - // either '301' (temporary) or '302' (permanent) - Code string `xml:"code,omitempty" json:"code,omitempty"` - - // host portion of URL to match - Host_prefix string `xml:"host_prefix,omitempty" json:"host_prefix,omitempty"` - - // path portion of URL to match - Path string `xml:"path,omitempty" json:"path,omitempty"` - - // replacement pattern - Url_pattern string `xml:"url_pattern,omitempty" json:"url_pattern,omitempty"` - - // 'Y'/'N', default 'Y' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // Public ID of next AdvRedirect rule to be processed. (default to end of list) - Next_public_id string `xml:"next_public_id,omitempty" json:"next_public_id,omitempty"` -} - -type UpdateAdvRedirectRuleResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateAdvRedirectRuleResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AdvRedirectRuleData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneAdvRedirectRuleRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneAdvRedirectRuleRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // public_id of Rule - Public_id string `xml:"public_id,omitempty" json:"public_id,omitempty"` -} - -type GetOneAdvRedirectRuleResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneAdvRedirectRuleResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AdvRedirectRuleData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetAdvRedirectRulesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAdvRedirectRulesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetAdvRedirectRulesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAdvRedirectRulesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*AdvRedirectRuleData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneAdvRedirectRuleRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneAdvRedirectRuleRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // public_id of Rule - Public_id string `xml:"public_id,omitempty" json:"public_id,omitempty"` -} - -type DeleteOneAdvRedirectRuleResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneAdvRedirectRuleResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AdvRedirectRuleData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateAdvRedirectRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateAdvRedirectRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // 'Y'/'N', default 'Y' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // List of AdvRedirectRules - Rules []*AdvRedirectRuleData `xml:"rules,omitempty" json:"rules,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type CreateAdvRedirectResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateAdvRedirectResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AdvRedirectData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneAdvRedirectRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneAdvRedirectRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneAdvRedirectResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneAdvRedirectResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AdvRedirectData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetAdvRedirectsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAdvRedirectsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Rules string `xml:"rules,omitempty" json:"rules,omitempty"` -} - -type GetAdvRedirectsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetAdvRedirectsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*AdvRedirectData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateAdvRedirectRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateAdvRedirectRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'Y'/'N', default 'Y' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // List of AdvRedirectRules - Rules []*AdvRedirectRuleData `xml:"rules,omitempty" json:"rules,omitempty"` -} - -type UpdateAdvRedirectResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateAdvRedirectResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AdvRedirectData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneAdvRedirectRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneAdvRedirectRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // 'Y'/'N', default 'Y' - Active string `xml:"active,omitempty" json:"active,omitempty"` - - // List of AdvRedirectRules - Rules []*AdvRedirectRuleData `xml:"rules,omitempty" json:"rules,omitempty"` -} - -type DeleteOneAdvRedirectResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneAdvRedirectResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *AdvRedirectData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetNodeListRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNodeListRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetNodeListResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetNodeListResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []string `xml:"data,omitempty" json:"data,omitempty"` -} - -type PublishZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ PublishZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Notes string `xml:"notes,omitempty" json:"notes,omitempty"` -} - -type PublishZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ PublishZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *PublishZoneData `xml:"data,omitempty" json:"data,omitempty"` -} - -type PruneZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ PruneZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type PruneZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ PruneZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ZoneData `xml:"data,omitempty" json:"data,omitempty"` -} - -type FreezeZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ FreezeZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type FreezeZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ FreezeZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ThawZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ThawZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type ThawZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ThawZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type RestoreZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RestoreZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type RestoreZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ RestoreZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type BlockZoneRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ BlockZoneRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type BlockZoneResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ BlockZoneResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteZoneChangesetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteZoneChangesetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteZoneChangesetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteZoneChangesetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetZoneChangesetRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneChangesetRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetZoneChangesetResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneChangesetResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ZoneChangeData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetZoneNotesRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneNotesRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Limit int32 `xml:"limit,omitempty" json:"limit,omitempty"` - - Offset int32 `xml:"offset,omitempty" json:"offset,omitempty"` -} - -type GetZoneNotesResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneNotesResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ZoneNoteData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UploadZoneFileRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UploadZoneFileRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - File string `xml:"file,omitempty" json:"file,omitempty"` - - Create string `xml:"create,omitempty" json:"create,omitempty"` -} - -type UploadZoneFileResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UploadZoneFileResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TaskIDData `xml:"data,omitempty" json:"data,omitempty"` -} - -type TransferZoneInRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ TransferZoneInRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Master_ip string `xml:"master_ip,omitempty" json:"master_ip,omitempty"` -} - -type TransferZoneInResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ TransferZoneInResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TaskIDData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetTransferStatusRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTransferStatusRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetTransferStatusResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTransferStatusResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ZoneTransferStatus `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetZoneConfigOptionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneConfigOptionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetZoneConfigOptionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetZoneConfigOptionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ZoneConfigOptionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type SetZoneConfigOptionsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetZoneConfigOptionsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - Option []*ZoneConfigOptionData `xml:"option,omitempty" json:"option,omitempty"` -} - -type SetZoneConfigOptionsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ SetZoneConfigOptionsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ZoneConfigOptionData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateIPTrackRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateIPTrackRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // A, Dynamic_A, AAAA, Dynamic_AAAA - Record_types []string `xml:"record_types,omitempty" json:"record_types,omitempty"` - - // List of hostnames to watch for records - Hosts []string `xml:"hosts,omitempty" json:"hosts,omitempty"` - - // 'match', 'default', or a valid ttl - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // Mask that records should match - Netmask string `xml:"netmask,omitempty" json:"netmask,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type CreateIPTrackResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateIPTrackResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *IPTrackData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneIPTrackRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneIPTrackRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Iptrack_id int64 `xml:"iptrack_id,omitempty" json:"iptrack_id,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type GetOneIPTrackResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneIPTrackResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *IPTrackData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetIPTracksRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetIPTracksRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetIPTracksResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetIPTracksResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*IPTrackData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateIPTrackRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateIPTrackRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Iptrack_id int64 `xml:"iptrack_id,omitempty" json:"iptrack_id,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` - - // A, Dynamic_A, AAAA, Dynamic_AAAA - Record_types []string `xml:"record_types,omitempty" json:"record_types,omitempty"` - - // List of hostnames to watch for records - Hosts []string `xml:"hosts,omitempty" json:"hosts,omitempty"` - - // 'match', 'default', or a valid ttl - Ttl string `xml:"ttl,omitempty" json:"ttl,omitempty"` - - // Mask that records should match - Netmask string `xml:"netmask,omitempty" json:"netmask,omitempty"` -} - -type UpdateIPTrackResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateIPTrackResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *IPTrackData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneIPTrackRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneIPTrackRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Iptrack_id int64 `xml:"iptrack_id,omitempty" json:"iptrack_id,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeleteOneIPTrackResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneIPTrackResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ActivateIPTrackRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateIPTrackRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Iptrack_id int64 `xml:"iptrack_id,omitempty" json:"iptrack_id,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type ActivateIPTrackResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateIPTrackResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *IPTrackData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeactivateIPTrackRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateIPTrackRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Iptrack_id int64 `xml:"iptrack_id,omitempty" json:"iptrack_id,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // hostname - Fqdn string `xml:"fqdn,omitempty" json:"fqdn,omitempty"` -} - -type DeactivateIPTrackResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateIPTrackResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *IPTrackData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateDNSSECRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDNSSECRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // , contact that gets key notifications - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - Keys []*DNSSECKey `xml:"keys,omitempty" json:"keys,omitempty"` -} - -type CreateDNSSECResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateDNSSECResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNSSECData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneDNSSECRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDNSSECRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetOneDNSSECResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneDNSSECResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNSSECData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDNSSECsRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDNSSECsRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetDNSSECsResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDNSSECsResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DNSSECData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateDNSSECRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDNSSECRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // , contact that gets key notifications - Contact_nickname string `xml:"contact_nickname,omitempty" json:"contact_nickname,omitempty"` - - // when notifications are sent - Notify_events string `xml:"notify_events,omitempty" json:"notify_events,omitempty"` - - Keys []*DNSSECKey `xml:"keys,omitempty" json:"keys,omitempty"` -} - -type UpdateDNSSECResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateDNSSECResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNSSECData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneDNSSECRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDNSSECRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteOneDNSSECResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneDNSSECResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type ActivateDNSSECRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateDNSSECRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type ActivateDNSSECResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ ActivateDNSSECResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNSSECData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeactivateDNSSECRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateDNSSECRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeactivateDNSSECResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeactivateDNSSECResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *DNSSECData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetDNSSECTimelineRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDNSSECTimelineRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // name of zone - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // an epoch time, or 'now' - Start_ts string `xml:"start_ts,omitempty" json:"start_ts,omitempty"` - - // an epoch time, or 'now' - End_ts string `xml:"end_ts,omitempty" json:"end_ts,omitempty"` -} - -type GetDNSSECTimelineResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetDNSSECTimelineResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*DNSSECTimelineEvent `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetTasksRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTasksRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Name string `xml:"name,omitempty" json:"name,omitempty"` - - Customer_name string `xml:"customer_name,omitempty" json:"customer_name,omitempty"` - - Zone_name string `xml:"zone_name,omitempty" json:"zone_name,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` -} - -type GetTasksResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetTasksResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*TaskData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneTaskRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneTaskRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` -} - -type GetOneTaskResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneTaskResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TaskData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CancelTaskRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CancelTaskRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - Task_id string `xml:"task_id,omitempty" json:"task_id,omitempty"` -} - -type CancelTaskResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CancelTaskResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *TaskData `xml:"data,omitempty" json:"data,omitempty"` -} - -type CreateExtNameserverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateExtNameserverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // can be empty or 'default' - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // Y/N - does this block requests or add them - Deny string `xml:"deny,omitempty" json:"deny,omitempty"` - - Hosts []*ExtNSEntry `xml:"hosts,omitempty" json:"hosts,omitempty"` - - Tsig_key_name string `xml:"tsig_key_name,omitempty" json:"tsig_key_name,omitempty"` - - Active string `xml:"active,omitempty" json:"active,omitempty"` -} - -type CreateExtNameserverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ CreateExtNameserverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ExtNameserverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetOneExtNameserverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneExtNameserverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // can be empty or 'default' - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type GetOneExtNameserverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetOneExtNameserverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ExtNameserverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type GetExtNameserversRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetExtNameserversRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` -} - -type GetExtNameserversResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ GetExtNameserversResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data []*ExtNameserverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type UpdateExtNameserverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateExtNameserverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // can be empty or 'default' - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` - - // Y/N - does this block requests or add them - Deny string `xml:"deny,omitempty" json:"deny,omitempty"` - - Hosts []*ExtNSEntry `xml:"hosts,omitempty" json:"hosts,omitempty"` - - Tsig_key_name string `xml:"tsig_key_name,omitempty" json:"tsig_key_name,omitempty"` - - Active string `xml:"active,omitempty" json:"active,omitempty"` -} - -type UpdateExtNameserverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ UpdateExtNameserverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data *ExtNameserverData `xml:"data,omitempty" json:"data,omitempty"` -} - -type DeleteOneExtNameserverRequestType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneExtNameserverRequest"` - - Token string `xml:"token,omitempty" json:"token,omitempty"` - - Fault_incompat int32 `xml:"fault_incompat,omitempty" json:"fault_incompat,omitempty"` - - // can be empty or 'default' - Zone string `xml:"zone,omitempty" json:"zone,omitempty"` -} - -type DeleteOneExtNameserverResponseType struct { - XMLName xml.Name `xml:"https://api2.dynect.net/wsdl/3.7.16/Dynect/ DeleteOneExtNameserverResponse"` - - Job_id string `xml:"job_id,omitempty" json:"job_id,omitempty"` - - Status string `xml:"status,omitempty" json:"status,omitempty"` - - Msgs []*Messages `xml:"messages,omitempty" json:"msgs,omitempty"` - - Data string `xml:"data,omitempty" json:"data,omitempty"` -} - -type Dynect interface { - - // Error can be either of the following types: - // - // - fault - - GetJob(request *GetJobRequestType) (*GetJobResponseType, error) - - GetJobContext(ctx context.Context, request *GetJobRequestType) (*GetJobResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* starts a DynectAPI session */ - SessionLogin(request *SessionLoginRequestType) (*SessionLoginResponseType, error) - - SessionLoginContext(ctx context.Context, request *SessionLoginRequestType) (*SessionLoginResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* ends a DynectAPI session and invalidates the token */ - SessionLogout(request *SessionLogoutRequestType) (*SessionLogoutResponseType, error) - - SessionLogoutContext(ctx context.Context, request *SessionLogoutRequestType) (*SessionLogoutResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* checks where session and token are still valid */ - SessionIsAlive(request *SessionIsAliveRequestType) (*SessionIsAliveResponseType, error) - - SessionIsAliveContext(ctx context.Context, request *SessionIsAliveRequestType) (*SessionIsAliveResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* No operation, prevents sessions from timing out */ - SessionKeepAlive(request *SessionKeepAliveRequestType) (*SessionKeepAliveResponseType, error) - - SessionKeepAliveContext(ctx context.Context, request *SessionKeepAliveRequestType) (*SessionKeepAliveResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Support only; adds permissions from a given customer */ - ScopeIn(request *ScopeInRequestType) (*ScopeInResponseType, error) - - ScopeInContext(ctx context.Context, request *ScopeInRequestType) (*ScopeInResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Support only; changes permissions to those of some particular user */ - ScopeAs(request *ScopeAsRequestType) (*ScopeAsResponseType, error) - - ScopeAsContext(ctx context.Context, request *ScopeAsRequestType) (*ScopeAsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Undoes any ScopeIn or ScopeAs, returning to usual permissions */ - Unscope(request *UnscopeRequestType) (*UnscopeResponseType, error) - - UnscopeContext(ctx context.Context, request *UnscopeRequestType) (*UnscopeResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Retrieves Queries Per Second statistics in CSV format */ - GetQueryStats(request *GetQueryStatsRequestType) (*GetQueryStatsResponseType, error) - - GetQueryStatsContext(ctx context.Context, request *GetQueryStatsRequestType) (*GetQueryStatsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateGeo(request *CreateGeoRequestType) (*CreateGeoResponseType, error) - - CreateGeoContext(ctx context.Context, request *CreateGeoRequestType) (*CreateGeoResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateGeo(request *UpdateGeoRequestType) (*UpdateGeoResponseType, error) - - UpdateGeoContext(ctx context.Context, request *UpdateGeoRequestType) (*UpdateGeoResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetGeos(request *GetGeosRequestType) (*GetGeosResponseType, error) - - GetGeosContext(ctx context.Context, request *GetGeosRequestType) (*GetGeosResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneGeo(request *GetOneGeoRequestType) (*GetOneGeoResponseType, error) - - GetOneGeoContext(ctx context.Context, request *GetOneGeoRequestType) (*GetOneGeoResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneGeo(request *DeleteOneGeoRequestType) (*DeleteOneGeoResponseType, error) - - DeleteOneGeoContext(ctx context.Context, request *DeleteOneGeoRequestType) (*DeleteOneGeoResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ActivateGeo(request *ActivateGeoRequestType) (*ActivateGeoResponseType, error) - - ActivateGeoContext(ctx context.Context, request *ActivateGeoRequestType) (*ActivateGeoResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeactivateGeo(request *DeactivateGeoRequestType) (*DeactivateGeoResponseType, error) - - DeactivateGeoContext(ctx context.Context, request *DeactivateGeoRequestType) (*DeactivateGeoResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateGeoRegionGroup(request *CreateGeoRegionGroupRequestType) (*CreateGeoRegionGroupResponseType, error) - - CreateGeoRegionGroupContext(ctx context.Context, request *CreateGeoRegionGroupRequestType) (*CreateGeoRegionGroupResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateGeoRegionGroup(request *UpdateGeoRegionGroupRequestType) (*UpdateGeoRegionGroupResponseType, error) - - UpdateGeoRegionGroupContext(ctx context.Context, request *UpdateGeoRegionGroupRequestType) (*UpdateGeoRegionGroupResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneGeoRegionGroup(request *DeleteOneGeoRegionGroupRequestType) (*DeleteOneGeoRegionGroupResponseType, error) - - DeleteOneGeoRegionGroupContext(ctx context.Context, request *DeleteOneGeoRegionGroupRequestType) (*DeleteOneGeoRegionGroupResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetGeoRegionGroups(request *GetGeoRegionGroupsRequestType) (*GetGeoRegionGroupsResponseType, error) - - GetGeoRegionGroupsContext(ctx context.Context, request *GetGeoRegionGroupsRequestType) (*GetGeoRegionGroupsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneGeoRegionGroup(request *GetOneGeoRegionGroupRequestType) (*GetOneGeoRegionGroupResponseType, error) - - GetOneGeoRegionGroupContext(ctx context.Context, request *GetOneGeoRegionGroupRequestType) (*GetOneGeoRegionGroupResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateGeoNode(request *CreateGeoNodeRequestType) (*CreateGeoNodeResponseType, error) - - CreateGeoNodeContext(ctx context.Context, request *CreateGeoNodeRequestType) (*CreateGeoNodeResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneGeoNode(request *DeleteOneGeoNodeRequestType) (*DeleteOneGeoNodeResponseType, error) - - DeleteOneGeoNodeContext(ctx context.Context, request *DeleteOneGeoNodeRequestType) (*DeleteOneGeoNodeResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetGeoNodes(request *GetGeoNodesRequestType) (*GetGeoNodesResponseType, error) - - GetGeoNodesContext(ctx context.Context, request *GetGeoNodesRequestType) (*GetGeoNodesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateDSF(request *CreateDSFRequestType) (*CreateDSFResponseType, error) - - CreateDSFContext(ctx context.Context, request *CreateDSFRequestType) (*CreateDSFResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateDSF(request *UpdateDSFRequestType) (*UpdateDSFResponseType, error) - - UpdateDSFContext(ctx context.Context, request *UpdateDSFRequestType) (*UpdateDSFResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFs(request *GetDSFsRequestType) (*GetDSFsResponseType, error) - - GetDSFsContext(ctx context.Context, request *GetDSFsRequestType) (*GetDSFsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFNotifiers(request *GetDSFNotifiersRequestType) (*GetDSFNotifiersResponseType, error) - - GetDSFNotifiersContext(ctx context.Context, request *GetDSFNotifiersRequestType) (*GetDSFNotifiersResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneDSF(request *DeleteOneDSFRequestType) (*DeleteOneDSFResponseType, error) - - DeleteOneDSFContext(ctx context.Context, request *DeleteOneDSFRequestType) (*DeleteOneDSFResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneDSF(request *GetOneDSFRequestType) (*GetOneDSFResponseType, error) - - GetOneDSFContext(ctx context.Context, request *GetOneDSFRequestType) (*GetOneDSFResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RevertDSF(request *RevertDSFRequestType) (*RevertDSFResponseType, error) - - RevertDSFContext(ctx context.Context, request *RevertDSFRequestType) (*RevertDSFResponseType, error) - - // Error can be either of the following types: - // - // - fault - - PublishDSF(request *PublishDSFRequestType) (*PublishDSFResponseType, error) - - PublishDSFContext(ctx context.Context, request *PublishDSFRequestType) (*PublishDSFResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddDSFNotifier(request *AddDSFNotifierRequestType) (*AddDSFNotifierResponseType, error) - - AddDSFNotifierContext(ctx context.Context, request *AddDSFNotifierRequestType) (*AddDSFNotifierResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemoveDSFNotifier(request *RemoveDSFNotifierRequestType) (*RemoveDSFNotifierResponseType, error) - - RemoveDSFNotifierContext(ctx context.Context, request *RemoveDSFNotifierRequestType) (*RemoveDSFNotifierResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateDSFRuleset(request *CreateDSFRulesetRequestType) (*CreateDSFRulesetResponseType, error) - - CreateDSFRulesetContext(ctx context.Context, request *CreateDSFRulesetRequestType) (*CreateDSFRulesetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateDSFRuleset(request *UpdateDSFRulesetRequestType) (*UpdateDSFRulesetResponseType, error) - - UpdateDSFRulesetContext(ctx context.Context, request *UpdateDSFRulesetRequestType) (*UpdateDSFRulesetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFRulesets(request *GetDSFRulesetsRequestType) (*GetDSFRulesetsResponseType, error) - - GetDSFRulesetsContext(ctx context.Context, request *GetDSFRulesetsRequestType) (*GetDSFRulesetsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneDSFRuleset(request *GetOneDSFRulesetRequestType) (*GetOneDSFRulesetResponseType, error) - - GetOneDSFRulesetContext(ctx context.Context, request *GetOneDSFRulesetRequestType) (*GetOneDSFRulesetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneDSFRuleset(request *DeleteOneDSFRulesetRequestType) (*DeleteOneDSFRulesetResponseType, error) - - DeleteOneDSFRulesetContext(ctx context.Context, request *DeleteOneDSFRulesetRequestType) (*DeleteOneDSFRulesetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateDSFResponsePool(request *CreateDSFResponsePoolRequestType) (*CreateDSFResponsePoolResponseType, error) - - CreateDSFResponsePoolContext(ctx context.Context, request *CreateDSFResponsePoolRequestType) (*CreateDSFResponsePoolResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateDSFResponsePool(request *UpdateDSFResponsePoolRequestType) (*UpdateDSFResponsePoolResponseType, error) - - UpdateDSFResponsePoolContext(ctx context.Context, request *UpdateDSFResponsePoolRequestType) (*UpdateDSFResponsePoolResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFResponsePools(request *GetDSFResponsePoolsRequestType) (*GetDSFResponsePoolsResponseType, error) - - GetDSFResponsePoolsContext(ctx context.Context, request *GetDSFResponsePoolsRequestType) (*GetDSFResponsePoolsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneDSFResponsePool(request *GetOneDSFResponsePoolRequestType) (*GetOneDSFResponsePoolResponseType, error) - - GetOneDSFResponsePoolContext(ctx context.Context, request *GetOneDSFResponsePoolRequestType) (*GetOneDSFResponsePoolResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneDSFResponsePool(request *DeleteOneDSFResponsePoolRequestType) (*DeleteOneDSFResponsePoolResponseType, error) - - DeleteOneDSFResponsePoolContext(ctx context.Context, request *DeleteOneDSFResponsePoolRequestType) (*DeleteOneDSFResponsePoolResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateDSFRecordSetFailoverChain(request *CreateDSFRecordSetFailoverChainRequestType) (*CreateDSFRecordSetFailoverChainResponseType, error) - - CreateDSFRecordSetFailoverChainContext(ctx context.Context, request *CreateDSFRecordSetFailoverChainRequestType) (*CreateDSFRecordSetFailoverChainResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateDSFRecordSetFailoverChain(request *UpdateDSFRecordSetFailoverChainRequestType) (*UpdateDSFRecordSetFailoverChainResponseType, error) - - UpdateDSFRecordSetFailoverChainContext(ctx context.Context, request *UpdateDSFRecordSetFailoverChainRequestType) (*UpdateDSFRecordSetFailoverChainResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFRecordSetFailoverChains(request *GetDSFRecordSetFailoverChainsRequestType) (*GetDSFRecordSetFailoverChainsResponseType, error) - - GetDSFRecordSetFailoverChainsContext(ctx context.Context, request *GetDSFRecordSetFailoverChainsRequestType) (*GetDSFRecordSetFailoverChainsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneDSFRecordSetFailoverChain(request *GetOneDSFRecordSetFailoverChainRequestType) (*GetOneDSFRecordSetFailoverChainResponseType, error) - - GetOneDSFRecordSetFailoverChainContext(ctx context.Context, request *GetOneDSFRecordSetFailoverChainRequestType) (*GetOneDSFRecordSetFailoverChainResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneDSFRecordSetFailoverChain(request *DeleteOneDSFRecordSetFailoverChainRequestType) (*DeleteOneDSFRecordSetFailoverChainResponseType, error) - - DeleteOneDSFRecordSetFailoverChainContext(ctx context.Context, request *DeleteOneDSFRecordSetFailoverChainRequestType) (*DeleteOneDSFRecordSetFailoverChainResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateDSFRecordSet(request *CreateDSFRecordSetRequestType) (*CreateDSFRecordSetResponseType, error) - - CreateDSFRecordSetContext(ctx context.Context, request *CreateDSFRecordSetRequestType) (*CreateDSFRecordSetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateDSFRecordSet(request *UpdateDSFRecordSetRequestType) (*UpdateDSFRecordSetResponseType, error) - - UpdateDSFRecordSetContext(ctx context.Context, request *UpdateDSFRecordSetRequestType) (*UpdateDSFRecordSetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneDSFRecordSet(request *GetOneDSFRecordSetRequestType) (*GetOneDSFRecordSetResponseType, error) - - GetOneDSFRecordSetContext(ctx context.Context, request *GetOneDSFRecordSetRequestType) (*GetOneDSFRecordSetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFRecordSets(request *GetDSFRecordSetsRequestType) (*GetDSFRecordSetsResponseType, error) - - GetDSFRecordSetsContext(ctx context.Context, request *GetDSFRecordSetsRequestType) (*GetDSFRecordSetsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneDSFRecordSet(request *DeleteOneDSFRecordSetRequestType) (*DeleteOneDSFRecordSetResponseType, error) - - DeleteOneDSFRecordSetContext(ctx context.Context, request *DeleteOneDSFRecordSetRequestType) (*DeleteOneDSFRecordSetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateDSFRecord(request *CreateDSFRecordRequestType) (*CreateDSFRecordResponseType, error) - - CreateDSFRecordContext(ctx context.Context, request *CreateDSFRecordRequestType) (*CreateDSFRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateDSFRecord(request *UpdateDSFRecordRequestType) (*UpdateDSFRecordResponseType, error) - - UpdateDSFRecordContext(ctx context.Context, request *UpdateDSFRecordRequestType) (*UpdateDSFRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneDSFRecord(request *GetOneDSFRecordRequestType) (*GetOneDSFRecordResponseType, error) - - GetOneDSFRecordContext(ctx context.Context, request *GetOneDSFRecordRequestType) (*GetOneDSFRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFRecords(request *GetDSFRecordsRequestType) (*GetDSFRecordsResponseType, error) - - GetDSFRecordsContext(ctx context.Context, request *GetDSFRecordsRequestType) (*GetDSFRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneDSFRecord(request *DeleteOneDSFRecordRequestType) (*DeleteOneDSFRecordResponseType, error) - - DeleteOneDSFRecordContext(ctx context.Context, request *DeleteOneDSFRecordRequestType) (*DeleteOneDSFRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddDSFNode(request *AddDSFNodeRequestType) (*AddDSFNodeResponseType, error) - - AddDSFNodeContext(ctx context.Context, request *AddDSFNodeRequestType) (*AddDSFNodeResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateDSFNodes(request *UpdateDSFNodesRequestType) (*UpdateDSFNodesResponseType, error) - - UpdateDSFNodesContext(ctx context.Context, request *UpdateDSFNodesRequestType) (*UpdateDSFNodesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFNodes(request *GetDSFNodesRequestType) (*GetDSFNodesResponseType, error) - - GetDSFNodesContext(ctx context.Context, request *GetDSFNodesRequestType) (*GetDSFNodesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneDSFNode(request *DeleteOneDSFNodeRequestType) (*DeleteOneDSFNodeResponseType, error) - - DeleteOneDSFNodeContext(ctx context.Context, request *DeleteOneDSFNodeRequestType) (*DeleteOneDSFNodeResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateDSFMonitor(request *CreateDSFMonitorRequestType) (*CreateDSFMonitorResponseType, error) - - CreateDSFMonitorContext(ctx context.Context, request *CreateDSFMonitorRequestType) (*CreateDSFMonitorResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateDSFMonitor(request *UpdateDSFMonitorRequestType) (*UpdateDSFMonitorResponseType, error) - - UpdateDSFMonitorContext(ctx context.Context, request *UpdateDSFMonitorRequestType) (*UpdateDSFMonitorResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneDSFMonitor(request *GetOneDSFMonitorRequestType) (*GetOneDSFMonitorResponseType, error) - - GetOneDSFMonitorContext(ctx context.Context, request *GetOneDSFMonitorRequestType) (*GetOneDSFMonitorResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFMonitors(request *GetDSFMonitorsRequestType) (*GetDSFMonitorsResponseType, error) - - GetDSFMonitorsContext(ctx context.Context, request *GetDSFMonitorsRequestType) (*GetDSFMonitorsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneDSFMonitor(request *DeleteOneDSFMonitorRequestType) (*DeleteOneDSFMonitorResponseType, error) - - DeleteOneDSFMonitorContext(ctx context.Context, request *DeleteOneDSFMonitorRequestType) (*DeleteOneDSFMonitorResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddDSFMonitorNotifier(request *AddDSFMonitorNotifierRequestType) (*AddDSFMonitorNotifierResponseType, error) - - AddDSFMonitorNotifierContext(ctx context.Context, request *AddDSFMonitorNotifierRequestType) (*AddDSFMonitorNotifierResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDSFMonitorSites(request *GetDSFMonitorSitesRequestType) (*GetDSFMonitorSitesResponseType, error) - - GetDSFMonitorSitesContext(ctx context.Context, request *GetDSFMonitorSitesRequestType) (*GetDSFMonitorSitesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateNotifier(request *CreateNotifierRequestType) (*CreateNotifierResponseType, error) - - CreateNotifierContext(ctx context.Context, request *CreateNotifierRequestType) (*CreateNotifierResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateNotifier(request *UpdateNotifierRequestType) (*UpdateNotifierResponseType, error) - - UpdateNotifierContext(ctx context.Context, request *UpdateNotifierRequestType) (*UpdateNotifierResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneNotifier(request *GetOneNotifierRequestType) (*GetOneNotifierResponseType, error) - - GetOneNotifierContext(ctx context.Context, request *GetOneNotifierRequestType) (*GetOneNotifierResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetNotifiers(request *GetNotifiersRequestType) (*GetNotifiersResponseType, error) - - GetNotifiersContext(ctx context.Context, request *GetNotifiersRequestType) (*GetNotifiersResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneNotifier(request *DeleteOneNotifierRequestType) (*DeleteOneNotifierResponseType, error) - - DeleteOneNotifierContext(ctx context.Context, request *DeleteOneNotifierRequestType) (*DeleteOneNotifierResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateConfigLimit(request *CreateConfigLimitRequestType) (*CreateConfigLimitResponseType, error) - - CreateConfigLimitContext(ctx context.Context, request *CreateConfigLimitRequestType) (*CreateConfigLimitResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneConfigLimit(request *GetOneConfigLimitRequestType) (*GetOneConfigLimitResponseType, error) - - GetOneConfigLimitContext(ctx context.Context, request *GetOneConfigLimitRequestType) (*GetOneConfigLimitResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetConfigLimits(request *GetConfigLimitsRequestType) (*GetConfigLimitsResponseType, error) - - GetConfigLimitsContext(ctx context.Context, request *GetConfigLimitsRequestType) (*GetConfigLimitsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateConfigLimit(request *UpdateConfigLimitRequestType) (*UpdateConfigLimitResponseType, error) - - UpdateConfigLimitContext(ctx context.Context, request *UpdateConfigLimitRequestType) (*UpdateConfigLimitResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneConfigLimit(request *DeleteOneConfigLimitRequestType) (*DeleteOneConfigLimitResponseType, error) - - DeleteOneConfigLimitContext(ctx context.Context, request *DeleteOneConfigLimitRequestType) (*DeleteOneConfigLimitResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new PermissionGroup */ - CreatePermissionGroup(request *CreatePermissionGroupRequestType) (*CreatePermissionGroupResponseType, error) - - CreatePermissionGroupContext(ctx context.Context, request *CreatePermissionGroupRequestType) (*CreatePermissionGroupResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single PermissionGroup */ - GetOnePermissionGroup(request *GetOnePermissionGroupRequestType) (*GetOnePermissionGroupResponseType, error) - - GetOnePermissionGroupContext(ctx context.Context, request *GetOnePermissionGroupRequestType) (*GetOnePermissionGroupResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every PermissionGroup */ - GetPermissionGroups(request *GetPermissionGroupsRequestType) (*GetPermissionGroupsResponseType, error) - - GetPermissionGroupsContext(ctx context.Context, request *GetPermissionGroupsRequestType) (*GetPermissionGroupsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single PermissionGroup */ - DeleteOnePermissionGroup(request *DeleteOnePermissionGroupRequestType) (*DeleteOnePermissionGroupResponseType, error) - - DeleteOnePermissionGroupContext(ctx context.Context, request *DeleteOnePermissionGroupRequestType) (*DeleteOnePermissionGroupResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdatePermissionGroup(request *UpdatePermissionGroupRequestType) (*UpdatePermissionGroupResponseType, error) - - UpdatePermissionGroupContext(ctx context.Context, request *UpdatePermissionGroupRequestType) (*UpdatePermissionGroupResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetCustomerPermissions(request *GetCustomerPermissionsRequestType) (*GetCustomerPermissionsResponseType, error) - - GetCustomerPermissionsContext(ctx context.Context, request *GetCustomerPermissionsRequestType) (*GetCustomerPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetUserPermissions(request *GetUserPermissionsRequestType) (*GetUserPermissionsResponseType, error) - - GetUserPermissionsContext(ctx context.Context, request *GetUserPermissionsRequestType) (*GetUserPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CheckPermissions(request *CheckPermissionsRequestType) (*CheckPermissionsResponseType, error) - - CheckPermissionsContext(ctx context.Context, request *CheckPermissionsRequestType) (*CheckPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddPermissionGroupUsers(request *AddPermissionGroupUsersRequestType) (*AddPermissionGroupUsersResponseType, error) - - AddPermissionGroupUsersContext(ctx context.Context, request *AddPermissionGroupUsersRequestType) (*AddPermissionGroupUsersResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetPermissionGroupUsers(request *SetPermissionGroupUsersRequestType) (*SetPermissionGroupUsersResponseType, error) - - SetPermissionGroupUsersContext(ctx context.Context, request *SetPermissionGroupUsersRequestType) (*SetPermissionGroupUsersResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemovePermissionGroupUsers(request *RemovePermissionGroupUsersRequestType) (*RemovePermissionGroupUsersResponseType, error) - - RemovePermissionGroupUsersContext(ctx context.Context, request *RemovePermissionGroupUsersRequestType) (*RemovePermissionGroupUsersResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddPermissionGroupSubgroups(request *AddPermissionGroupSubgroupsRequestType) (*AddPermissionGroupSubgroupsResponseType, error) - - AddPermissionGroupSubgroupsContext(ctx context.Context, request *AddPermissionGroupSubgroupsRequestType) (*AddPermissionGroupSubgroupsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetPermissionGroupSubgroups(request *SetPermissionGroupSubgroupsRequestType) (*SetPermissionGroupSubgroupsResponseType, error) - - SetPermissionGroupSubgroupsContext(ctx context.Context, request *SetPermissionGroupSubgroupsRequestType) (*SetPermissionGroupSubgroupsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemovePermissionGroupSubgroups(request *RemovePermissionGroupSubgroupsRequestType) (*RemovePermissionGroupSubgroupsResponseType, error) - - RemovePermissionGroupSubgroupsContext(ctx context.Context, request *RemovePermissionGroupSubgroupsRequestType) (*RemovePermissionGroupSubgroupsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddPermissionGroupPermissions(request *AddPermissionGroupPermissionsRequestType) (*AddPermissionGroupPermissionsResponseType, error) - - AddPermissionGroupPermissionsContext(ctx context.Context, request *AddPermissionGroupPermissionsRequestType) (*AddPermissionGroupPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetPermissionGroupPermissions(request *SetPermissionGroupPermissionsRequestType) (*SetPermissionGroupPermissionsResponseType, error) - - SetPermissionGroupPermissionsContext(ctx context.Context, request *SetPermissionGroupPermissionsRequestType) (*SetPermissionGroupPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemovePermissionGroupPermissions(request *RemovePermissionGroupPermissionsRequestType) (*RemovePermissionGroupPermissionsResponseType, error) - - RemovePermissionGroupPermissionsContext(ctx context.Context, request *RemovePermissionGroupPermissionsRequestType) (*RemovePermissionGroupPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddPermissionGroupZones(request *AddPermissionGroupZonesRequestType) (*AddPermissionGroupZonesResponseType, error) - - AddPermissionGroupZonesContext(ctx context.Context, request *AddPermissionGroupZonesRequestType) (*AddPermissionGroupZonesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetPermissionGroupZones(request *SetPermissionGroupZonesRequestType) (*SetPermissionGroupZonesResponseType, error) - - SetPermissionGroupZonesContext(ctx context.Context, request *SetPermissionGroupZonesRequestType) (*SetPermissionGroupZonesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemovePermissionGroupZones(request *RemovePermissionGroupZonesRequestType) (*RemovePermissionGroupZonesResponseType, error) - - RemovePermissionGroupZonesContext(ctx context.Context, request *RemovePermissionGroupZonesRequestType) (*RemovePermissionGroupZonesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddUserGroups(request *AddUserGroupsRequestType) (*AddUserGroupsResponseType, error) - - AddUserGroupsContext(ctx context.Context, request *AddUserGroupsRequestType) (*AddUserGroupsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetUserGroups(request *SetUserGroupsRequestType) (*SetUserGroupsResponseType, error) - - SetUserGroupsContext(ctx context.Context, request *SetUserGroupsRequestType) (*SetUserGroupsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemoveUserGroups(request *RemoveUserGroupsRequestType) (*RemoveUserGroupsResponseType, error) - - RemoveUserGroupsContext(ctx context.Context, request *RemoveUserGroupsRequestType) (*RemoveUserGroupsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddUserZones(request *AddUserZonesRequestType) (*AddUserZonesResponseType, error) - - AddUserZonesContext(ctx context.Context, request *AddUserZonesRequestType) (*AddUserZonesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetUserZones(request *SetUserZonesRequestType) (*SetUserZonesResponseType, error) - - SetUserZonesContext(ctx context.Context, request *SetUserZonesRequestType) (*SetUserZonesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemoveUserZones(request *RemoveUserZonesRequestType) (*RemoveUserZonesResponseType, error) - - RemoveUserZonesContext(ctx context.Context, request *RemoveUserZonesRequestType) (*RemoveUserZonesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddUserPermissions(request *AddUserPermissionsRequestType) (*AddUserPermissionsResponseType, error) - - AddUserPermissionsContext(ctx context.Context, request *AddUserPermissionsRequestType) (*AddUserPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetUserPermissions(request *SetUserPermissionsRequestType) (*SetUserPermissionsResponseType, error) - - SetUserPermissionsContext(ctx context.Context, request *SetUserPermissionsRequestType) (*SetUserPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemoveUserPermissions(request *RemoveUserPermissionsRequestType) (*RemoveUserPermissionsResponseType, error) - - RemoveUserPermissionsContext(ctx context.Context, request *RemoveUserPermissionsRequestType) (*RemoveUserPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddUserForbids(request *AddUserForbidsRequestType) (*AddUserForbidsResponseType, error) - - AddUserForbidsContext(ctx context.Context, request *AddUserForbidsRequestType) (*AddUserForbidsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetUserForbids(request *SetUserForbidsRequestType) (*SetUserForbidsResponseType, error) - - SetUserForbidsContext(ctx context.Context, request *SetUserForbidsRequestType) (*SetUserForbidsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemoveUserForbids(request *RemoveUserForbidsRequestType) (*RemoveUserForbidsResponseType, error) - - RemoveUserForbidsContext(ctx context.Context, request *RemoveUserForbidsRequestType) (*RemoveUserForbidsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddCustomerPermissions(request *AddCustomerPermissionsRequestType) (*AddCustomerPermissionsResponseType, error) - - AddCustomerPermissionsContext(ctx context.Context, request *AddCustomerPermissionsRequestType) (*AddCustomerPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetCustomerPermissions(request *SetCustomerPermissionsRequestType) (*SetCustomerPermissionsResponseType, error) - - SetCustomerPermissionsContext(ctx context.Context, request *SetCustomerPermissionsRequestType) (*SetCustomerPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemoveCustomerPermissions(request *RemoveCustomerPermissionsRequestType) (*RemoveCustomerPermissionsResponseType, error) - - RemoveCustomerPermissionsContext(ctx context.Context, request *RemoveCustomerPermissionsRequestType) (*RemoveCustomerPermissionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddCustomerForbids(request *AddCustomerForbidsRequestType) (*AddCustomerForbidsResponseType, error) - - AddCustomerForbidsContext(ctx context.Context, request *AddCustomerForbidsRequestType) (*AddCustomerForbidsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetCustomerForbids(request *SetCustomerForbidsRequestType) (*SetCustomerForbidsResponseType, error) - - SetCustomerForbidsContext(ctx context.Context, request *SetCustomerForbidsRequestType) (*SetCustomerForbidsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RemoveCustomerForbids(request *RemoveCustomerForbidsRequestType) (*RemoveCustomerForbidsResponseType, error) - - RemoveCustomerForbidsContext(ctx context.Context, request *RemoveCustomerForbidsRequestType) (*RemoveCustomerForbidsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetHostStatsFlags(request *GetHostStatsFlagsRequestType) (*GetHostStatsFlagsResponseType, error) - - GetHostStatsFlagsContext(ctx context.Context, request *GetHostStatsFlagsRequestType) (*GetHostStatsFlagsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetHostStatsFlags(request *SetHostStatsFlagsRequestType) (*SetHostStatsFlagsResponseType, error) - - SetHostStatsFlagsContext(ctx context.Context, request *SetHostStatsFlagsRequestType) (*SetHostStatsFlagsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateTSIGKey(request *CreateTSIGKeyRequestType) (*CreateTSIGKeyResponseType, error) - - CreateTSIGKeyContext(ctx context.Context, request *CreateTSIGKeyRequestType) (*CreateTSIGKeyResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneTSIGKey(request *GetOneTSIGKeyRequestType) (*GetOneTSIGKeyResponseType, error) - - GetOneTSIGKeyContext(ctx context.Context, request *GetOneTSIGKeyRequestType) (*GetOneTSIGKeyResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetTSIGKeys(request *GetTSIGKeysRequestType) (*GetTSIGKeysResponseType, error) - - GetTSIGKeysContext(ctx context.Context, request *GetTSIGKeysRequestType) (*GetTSIGKeysResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateTSIGKey(request *UpdateTSIGKeyRequestType) (*UpdateTSIGKeyResponseType, error) - - UpdateTSIGKeyContext(ctx context.Context, request *UpdateTSIGKeyRequestType) (*UpdateTSIGKeyResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneTSIGKey(request *DeleteOneTSIGKeyRequestType) (*DeleteOneTSIGKeyResponseType, error) - - DeleteOneTSIGKeyContext(ctx context.Context, request *DeleteOneTSIGKeyRequestType) (*DeleteOneTSIGKeyResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new Zone */ - CreateZone(request *CreateZoneRequestType) (*CreateZoneResponseType, error) - - CreateZoneContext(ctx context.Context, request *CreateZoneRequestType) (*CreateZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single Zone */ - GetOneZone(request *GetOneZoneRequestType) (*GetOneZoneResponseType, error) - - GetOneZoneContext(ctx context.Context, request *GetOneZoneRequestType) (*GetOneZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every Zone */ - GetZones(request *GetZonesRequestType) (*GetZonesResponseType, error) - - GetZonesContext(ctx context.Context, request *GetZonesRequestType) (*GetZonesResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single Zone */ - DeleteOneZone(request *DeleteOneZoneRequestType) (*DeleteOneZoneResponseType, error) - - DeleteOneZoneContext(ctx context.Context, request *DeleteOneZoneRequestType) (*DeleteOneZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateSecondaryZone(request *CreateSecondaryZoneRequestType) (*CreateSecondaryZoneResponseType, error) - - CreateSecondaryZoneContext(ctx context.Context, request *CreateSecondaryZoneRequestType) (*CreateSecondaryZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateSecondary(request *UpdateSecondaryRequestType) (*UpdateSecondaryResponseType, error) - - UpdateSecondaryContext(ctx context.Context, request *UpdateSecondaryRequestType) (*UpdateSecondaryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ActivateSecondary(request *ActivateSecondaryRequestType) (*ActivateSecondaryResponseType, error) - - ActivateSecondaryContext(ctx context.Context, request *ActivateSecondaryRequestType) (*ActivateSecondaryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeactivateSecondary(request *DeactivateSecondaryRequestType) (*DeactivateSecondaryResponseType, error) - - DeactivateSecondaryContext(ctx context.Context, request *DeactivateSecondaryRequestType) (*DeactivateSecondaryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RetransferSecondary(request *RetransferSecondaryRequestType) (*RetransferSecondaryResponseType, error) - - RetransferSecondaryContext(ctx context.Context, request *RetransferSecondaryRequestType) (*RetransferSecondaryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneSecondary(request *GetOneSecondaryRequestType) (*GetOneSecondaryResponseType, error) - - GetOneSecondaryContext(ctx context.Context, request *GetOneSecondaryRequestType) (*GetOneSecondaryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetSecondaries(request *GetSecondariesRequestType) (*GetSecondariesResponseType, error) - - GetSecondariesContext(ctx context.Context, request *GetSecondariesRequestType) (*GetSecondariesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetZoneApex(request *GetZoneApexRequestType) (*GetZoneApexResponseType, error) - - GetZoneApexContext(ctx context.Context, request *GetZoneApexRequestType) (*GetZoneApexResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new A record */ - CreateARecord(request *CreateARecordRequestType) (*CreateARecordResponseType, error) - - CreateARecordContext(ctx context.Context, request *CreateARecordRequestType) (*CreateARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single A record */ - GetOneARecord(request *GetOneARecordRequestType) (*GetOneARecordResponseType, error) - - GetOneARecordContext(ctx context.Context, request *GetOneARecordRequestType) (*GetOneARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every A record */ - GetARecords(request *GetARecordsRequestType) (*GetARecordsResponseType, error) - - GetARecordsContext(ctx context.Context, request *GetARecordsRequestType) (*GetARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single A record */ - UpdateARecord(request *UpdateARecordRequestType) (*UpdateARecordResponseType, error) - - UpdateARecordContext(ctx context.Context, request *UpdateARecordRequestType) (*UpdateARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every A record */ - DeleteARecords(request *DeleteARecordsRequestType) (*DeleteARecordsResponseType, error) - - DeleteARecordsContext(ctx context.Context, request *DeleteARecordsRequestType) (*DeleteARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single A record */ - DeleteOneARecord(request *DeleteOneARecordRequestType) (*DeleteOneARecordResponseType, error) - - DeleteOneARecordContext(ctx context.Context, request *DeleteOneARecordRequestType) (*DeleteOneARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new AAAA record */ - CreateAAAARecord(request *CreateAAAARecordRequestType) (*CreateAAAARecordResponseType, error) - - CreateAAAARecordContext(ctx context.Context, request *CreateAAAARecordRequestType) (*CreateAAAARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single AAAA record */ - GetOneAAAARecord(request *GetOneAAAARecordRequestType) (*GetOneAAAARecordResponseType, error) - - GetOneAAAARecordContext(ctx context.Context, request *GetOneAAAARecordRequestType) (*GetOneAAAARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every AAAA record */ - GetAAAARecords(request *GetAAAARecordsRequestType) (*GetAAAARecordsResponseType, error) - - GetAAAARecordsContext(ctx context.Context, request *GetAAAARecordsRequestType) (*GetAAAARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single AAAA record */ - UpdateAAAARecord(request *UpdateAAAARecordRequestType) (*UpdateAAAARecordResponseType, error) - - UpdateAAAARecordContext(ctx context.Context, request *UpdateAAAARecordRequestType) (*UpdateAAAARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every AAAA record */ - DeleteAAAARecords(request *DeleteAAAARecordsRequestType) (*DeleteAAAARecordsResponseType, error) - - DeleteAAAARecordsContext(ctx context.Context, request *DeleteAAAARecordsRequestType) (*DeleteAAAARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single AAAA record */ - DeleteOneAAAARecord(request *DeleteOneAAAARecordRequestType) (*DeleteOneAAAARecordResponseType, error) - - DeleteOneAAAARecordContext(ctx context.Context, request *DeleteOneAAAARecordRequestType) (*DeleteOneAAAARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new ALIAS record */ - CreateALIASRecord(request *CreateALIASRecordRequestType) (*CreateALIASRecordResponseType, error) - - CreateALIASRecordContext(ctx context.Context, request *CreateALIASRecordRequestType) (*CreateALIASRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single ALIAS record */ - GetOneALIASRecord(request *GetOneALIASRecordRequestType) (*GetOneALIASRecordResponseType, error) - - GetOneALIASRecordContext(ctx context.Context, request *GetOneALIASRecordRequestType) (*GetOneALIASRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every ALIAS record */ - GetALIASRecords(request *GetALIASRecordsRequestType) (*GetALIASRecordsResponseType, error) - - GetALIASRecordsContext(ctx context.Context, request *GetALIASRecordsRequestType) (*GetALIASRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single ALIAS record */ - UpdateALIASRecord(request *UpdateALIASRecordRequestType) (*UpdateALIASRecordResponseType, error) - - UpdateALIASRecordContext(ctx context.Context, request *UpdateALIASRecordRequestType) (*UpdateALIASRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every ALIAS record */ - DeleteALIASRecords(request *DeleteALIASRecordsRequestType) (*DeleteALIASRecordsResponseType, error) - - DeleteALIASRecordsContext(ctx context.Context, request *DeleteALIASRecordsRequestType) (*DeleteALIASRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single ALIAS record */ - DeleteOneALIASRecord(request *DeleteOneALIASRecordRequestType) (*DeleteOneALIASRecordResponseType, error) - - DeleteOneALIASRecordContext(ctx context.Context, request *DeleteOneALIASRecordRequestType) (*DeleteOneALIASRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new CAA record */ - CreateCAARecord(request *CreateCAARecordRequestType) (*CreateCAARecordResponseType, error) - - CreateCAARecordContext(ctx context.Context, request *CreateCAARecordRequestType) (*CreateCAARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single CAA record */ - GetOneCAARecord(request *GetOneCAARecordRequestType) (*GetOneCAARecordResponseType, error) - - GetOneCAARecordContext(ctx context.Context, request *GetOneCAARecordRequestType) (*GetOneCAARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every CAA record */ - GetCAARecords(request *GetCAARecordsRequestType) (*GetCAARecordsResponseType, error) - - GetCAARecordsContext(ctx context.Context, request *GetCAARecordsRequestType) (*GetCAARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single CAA record */ - UpdateCAARecord(request *UpdateCAARecordRequestType) (*UpdateCAARecordResponseType, error) - - UpdateCAARecordContext(ctx context.Context, request *UpdateCAARecordRequestType) (*UpdateCAARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every CAA record */ - DeleteCAARecords(request *DeleteCAARecordsRequestType) (*DeleteCAARecordsResponseType, error) - - DeleteCAARecordsContext(ctx context.Context, request *DeleteCAARecordsRequestType) (*DeleteCAARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single CAA record */ - DeleteOneCAARecord(request *DeleteOneCAARecordRequestType) (*DeleteOneCAARecordResponseType, error) - - DeleteOneCAARecordContext(ctx context.Context, request *DeleteOneCAARecordRequestType) (*DeleteOneCAARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new CDNSKEY record */ - CreateCDNSKEYRecord(request *CreateCDNSKEYRecordRequestType) (*CreateCDNSKEYRecordResponseType, error) - - CreateCDNSKEYRecordContext(ctx context.Context, request *CreateCDNSKEYRecordRequestType) (*CreateCDNSKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single CDNSKEY record */ - GetOneCDNSKEYRecord(request *GetOneCDNSKEYRecordRequestType) (*GetOneCDNSKEYRecordResponseType, error) - - GetOneCDNSKEYRecordContext(ctx context.Context, request *GetOneCDNSKEYRecordRequestType) (*GetOneCDNSKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every CDNSKEY record */ - GetCDNSKEYRecords(request *GetCDNSKEYRecordsRequestType) (*GetCDNSKEYRecordsResponseType, error) - - GetCDNSKEYRecordsContext(ctx context.Context, request *GetCDNSKEYRecordsRequestType) (*GetCDNSKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single CDNSKEY record */ - UpdateCDNSKEYRecord(request *UpdateCDNSKEYRecordRequestType) (*UpdateCDNSKEYRecordResponseType, error) - - UpdateCDNSKEYRecordContext(ctx context.Context, request *UpdateCDNSKEYRecordRequestType) (*UpdateCDNSKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every CDNSKEY record */ - DeleteCDNSKEYRecords(request *DeleteCDNSKEYRecordsRequestType) (*DeleteCDNSKEYRecordsResponseType, error) - - DeleteCDNSKEYRecordsContext(ctx context.Context, request *DeleteCDNSKEYRecordsRequestType) (*DeleteCDNSKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single CDNSKEY record */ - DeleteOneCDNSKEYRecord(request *DeleteOneCDNSKEYRecordRequestType) (*DeleteOneCDNSKEYRecordResponseType, error) - - DeleteOneCDNSKEYRecordContext(ctx context.Context, request *DeleteOneCDNSKEYRecordRequestType) (*DeleteOneCDNSKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new CDS record */ - CreateCDSRecord(request *CreateCDSRecordRequestType) (*CreateCDSRecordResponseType, error) - - CreateCDSRecordContext(ctx context.Context, request *CreateCDSRecordRequestType) (*CreateCDSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single CDS record */ - GetOneCDSRecord(request *GetOneCDSRecordRequestType) (*GetOneCDSRecordResponseType, error) - - GetOneCDSRecordContext(ctx context.Context, request *GetOneCDSRecordRequestType) (*GetOneCDSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every CDS record */ - GetCDSRecords(request *GetCDSRecordsRequestType) (*GetCDSRecordsResponseType, error) - - GetCDSRecordsContext(ctx context.Context, request *GetCDSRecordsRequestType) (*GetCDSRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single CDS record */ - UpdateCDSRecord(request *UpdateCDSRecordRequestType) (*UpdateCDSRecordResponseType, error) - - UpdateCDSRecordContext(ctx context.Context, request *UpdateCDSRecordRequestType) (*UpdateCDSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every CDS record */ - DeleteCDSRecords(request *DeleteCDSRecordsRequestType) (*DeleteCDSRecordsResponseType, error) - - DeleteCDSRecordsContext(ctx context.Context, request *DeleteCDSRecordsRequestType) (*DeleteCDSRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single CDS record */ - DeleteOneCDSRecord(request *DeleteOneCDSRecordRequestType) (*DeleteOneCDSRecordResponseType, error) - - DeleteOneCDSRecordContext(ctx context.Context, request *DeleteOneCDSRecordRequestType) (*DeleteOneCDSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new CERT record */ - CreateCERTRecord(request *CreateCERTRecordRequestType) (*CreateCERTRecordResponseType, error) - - CreateCERTRecordContext(ctx context.Context, request *CreateCERTRecordRequestType) (*CreateCERTRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single CERT record */ - GetOneCERTRecord(request *GetOneCERTRecordRequestType) (*GetOneCERTRecordResponseType, error) - - GetOneCERTRecordContext(ctx context.Context, request *GetOneCERTRecordRequestType) (*GetOneCERTRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every CERT record */ - GetCERTRecords(request *GetCERTRecordsRequestType) (*GetCERTRecordsResponseType, error) - - GetCERTRecordsContext(ctx context.Context, request *GetCERTRecordsRequestType) (*GetCERTRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single CERT record */ - UpdateCERTRecord(request *UpdateCERTRecordRequestType) (*UpdateCERTRecordResponseType, error) - - UpdateCERTRecordContext(ctx context.Context, request *UpdateCERTRecordRequestType) (*UpdateCERTRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every CERT record */ - DeleteCERTRecords(request *DeleteCERTRecordsRequestType) (*DeleteCERTRecordsResponseType, error) - - DeleteCERTRecordsContext(ctx context.Context, request *DeleteCERTRecordsRequestType) (*DeleteCERTRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single CERT record */ - DeleteOneCERTRecord(request *DeleteOneCERTRecordRequestType) (*DeleteOneCERTRecordResponseType, error) - - DeleteOneCERTRecordContext(ctx context.Context, request *DeleteOneCERTRecordRequestType) (*DeleteOneCERTRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new CNAME record */ - CreateCNAMERecord(request *CreateCNAMERecordRequestType) (*CreateCNAMERecordResponseType, error) - - CreateCNAMERecordContext(ctx context.Context, request *CreateCNAMERecordRequestType) (*CreateCNAMERecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single CNAME record */ - GetOneCNAMERecord(request *GetOneCNAMERecordRequestType) (*GetOneCNAMERecordResponseType, error) - - GetOneCNAMERecordContext(ctx context.Context, request *GetOneCNAMERecordRequestType) (*GetOneCNAMERecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every CNAME record */ - GetCNAMERecords(request *GetCNAMERecordsRequestType) (*GetCNAMERecordsResponseType, error) - - GetCNAMERecordsContext(ctx context.Context, request *GetCNAMERecordsRequestType) (*GetCNAMERecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single CNAME record */ - UpdateCNAMERecord(request *UpdateCNAMERecordRequestType) (*UpdateCNAMERecordResponseType, error) - - UpdateCNAMERecordContext(ctx context.Context, request *UpdateCNAMERecordRequestType) (*UpdateCNAMERecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every CNAME record */ - DeleteCNAMERecords(request *DeleteCNAMERecordsRequestType) (*DeleteCNAMERecordsResponseType, error) - - DeleteCNAMERecordsContext(ctx context.Context, request *DeleteCNAMERecordsRequestType) (*DeleteCNAMERecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single CNAME record */ - DeleteOneCNAMERecord(request *DeleteOneCNAMERecordRequestType) (*DeleteOneCNAMERecordResponseType, error) - - DeleteOneCNAMERecordContext(ctx context.Context, request *DeleteOneCNAMERecordRequestType) (*DeleteOneCNAMERecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new CSYNC record */ - CreateCSYNCRecord(request *CreateCSYNCRecordRequestType) (*CreateCSYNCRecordResponseType, error) - - CreateCSYNCRecordContext(ctx context.Context, request *CreateCSYNCRecordRequestType) (*CreateCSYNCRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single CSYNC record */ - GetOneCSYNCRecord(request *GetOneCSYNCRecordRequestType) (*GetOneCSYNCRecordResponseType, error) - - GetOneCSYNCRecordContext(ctx context.Context, request *GetOneCSYNCRecordRequestType) (*GetOneCSYNCRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every CSYNC record */ - GetCSYNCRecords(request *GetCSYNCRecordsRequestType) (*GetCSYNCRecordsResponseType, error) - - GetCSYNCRecordsContext(ctx context.Context, request *GetCSYNCRecordsRequestType) (*GetCSYNCRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single CSYNC record */ - UpdateCSYNCRecord(request *UpdateCSYNCRecordRequestType) (*UpdateCSYNCRecordResponseType, error) - - UpdateCSYNCRecordContext(ctx context.Context, request *UpdateCSYNCRecordRequestType) (*UpdateCSYNCRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every CSYNC record */ - DeleteCSYNCRecords(request *DeleteCSYNCRecordsRequestType) (*DeleteCSYNCRecordsResponseType, error) - - DeleteCSYNCRecordsContext(ctx context.Context, request *DeleteCSYNCRecordsRequestType) (*DeleteCSYNCRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single CSYNC record */ - DeleteOneCSYNCRecord(request *DeleteOneCSYNCRecordRequestType) (*DeleteOneCSYNCRecordResponseType, error) - - DeleteOneCSYNCRecordContext(ctx context.Context, request *DeleteOneCSYNCRecordRequestType) (*DeleteOneCSYNCRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new DHCID record */ - CreateDHCIDRecord(request *CreateDHCIDRecordRequestType) (*CreateDHCIDRecordResponseType, error) - - CreateDHCIDRecordContext(ctx context.Context, request *CreateDHCIDRecordRequestType) (*CreateDHCIDRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single DHCID record */ - GetOneDHCIDRecord(request *GetOneDHCIDRecordRequestType) (*GetOneDHCIDRecordResponseType, error) - - GetOneDHCIDRecordContext(ctx context.Context, request *GetOneDHCIDRecordRequestType) (*GetOneDHCIDRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every DHCID record */ - GetDHCIDRecords(request *GetDHCIDRecordsRequestType) (*GetDHCIDRecordsResponseType, error) - - GetDHCIDRecordsContext(ctx context.Context, request *GetDHCIDRecordsRequestType) (*GetDHCIDRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single DHCID record */ - UpdateDHCIDRecord(request *UpdateDHCIDRecordRequestType) (*UpdateDHCIDRecordResponseType, error) - - UpdateDHCIDRecordContext(ctx context.Context, request *UpdateDHCIDRecordRequestType) (*UpdateDHCIDRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every DHCID record */ - DeleteDHCIDRecords(request *DeleteDHCIDRecordsRequestType) (*DeleteDHCIDRecordsResponseType, error) - - DeleteDHCIDRecordsContext(ctx context.Context, request *DeleteDHCIDRecordsRequestType) (*DeleteDHCIDRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single DHCID record */ - DeleteOneDHCIDRecord(request *DeleteOneDHCIDRecordRequestType) (*DeleteOneDHCIDRecordResponseType, error) - - DeleteOneDHCIDRecordContext(ctx context.Context, request *DeleteOneDHCIDRecordRequestType) (*DeleteOneDHCIDRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new DNAME record */ - CreateDNAMERecord(request *CreateDNAMERecordRequestType) (*CreateDNAMERecordResponseType, error) - - CreateDNAMERecordContext(ctx context.Context, request *CreateDNAMERecordRequestType) (*CreateDNAMERecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single DNAME record */ - GetOneDNAMERecord(request *GetOneDNAMERecordRequestType) (*GetOneDNAMERecordResponseType, error) - - GetOneDNAMERecordContext(ctx context.Context, request *GetOneDNAMERecordRequestType) (*GetOneDNAMERecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every DNAME record */ - GetDNAMERecords(request *GetDNAMERecordsRequestType) (*GetDNAMERecordsResponseType, error) - - GetDNAMERecordsContext(ctx context.Context, request *GetDNAMERecordsRequestType) (*GetDNAMERecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single DNAME record */ - UpdateDNAMERecord(request *UpdateDNAMERecordRequestType) (*UpdateDNAMERecordResponseType, error) - - UpdateDNAMERecordContext(ctx context.Context, request *UpdateDNAMERecordRequestType) (*UpdateDNAMERecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every DNAME record */ - DeleteDNAMERecords(request *DeleteDNAMERecordsRequestType) (*DeleteDNAMERecordsResponseType, error) - - DeleteDNAMERecordsContext(ctx context.Context, request *DeleteDNAMERecordsRequestType) (*DeleteDNAMERecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single DNAME record */ - DeleteOneDNAMERecord(request *DeleteOneDNAMERecordRequestType) (*DeleteOneDNAMERecordResponseType, error) - - DeleteOneDNAMERecordContext(ctx context.Context, request *DeleteOneDNAMERecordRequestType) (*DeleteOneDNAMERecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new DNSKEY record */ - CreateDNSKEYRecord(request *CreateDNSKEYRecordRequestType) (*CreateDNSKEYRecordResponseType, error) - - CreateDNSKEYRecordContext(ctx context.Context, request *CreateDNSKEYRecordRequestType) (*CreateDNSKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single DNSKEY record */ - GetOneDNSKEYRecord(request *GetOneDNSKEYRecordRequestType) (*GetOneDNSKEYRecordResponseType, error) - - GetOneDNSKEYRecordContext(ctx context.Context, request *GetOneDNSKEYRecordRequestType) (*GetOneDNSKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every DNSKEY record */ - GetDNSKEYRecords(request *GetDNSKEYRecordsRequestType) (*GetDNSKEYRecordsResponseType, error) - - GetDNSKEYRecordsContext(ctx context.Context, request *GetDNSKEYRecordsRequestType) (*GetDNSKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single DNSKEY record */ - UpdateDNSKEYRecord(request *UpdateDNSKEYRecordRequestType) (*UpdateDNSKEYRecordResponseType, error) - - UpdateDNSKEYRecordContext(ctx context.Context, request *UpdateDNSKEYRecordRequestType) (*UpdateDNSKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every DNSKEY record */ - DeleteDNSKEYRecords(request *DeleteDNSKEYRecordsRequestType) (*DeleteDNSKEYRecordsResponseType, error) - - DeleteDNSKEYRecordsContext(ctx context.Context, request *DeleteDNSKEYRecordsRequestType) (*DeleteDNSKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single DNSKEY record */ - DeleteOneDNSKEYRecord(request *DeleteOneDNSKEYRecordRequestType) (*DeleteOneDNSKEYRecordResponseType, error) - - DeleteOneDNSKEYRecordContext(ctx context.Context, request *DeleteOneDNSKEYRecordRequestType) (*DeleteOneDNSKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new DS record */ - CreateDSRecord(request *CreateDSRecordRequestType) (*CreateDSRecordResponseType, error) - - CreateDSRecordContext(ctx context.Context, request *CreateDSRecordRequestType) (*CreateDSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single DS record */ - GetOneDSRecord(request *GetOneDSRecordRequestType) (*GetOneDSRecordResponseType, error) - - GetOneDSRecordContext(ctx context.Context, request *GetOneDSRecordRequestType) (*GetOneDSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every DS record */ - GetDSRecords(request *GetDSRecordsRequestType) (*GetDSRecordsResponseType, error) - - GetDSRecordsContext(ctx context.Context, request *GetDSRecordsRequestType) (*GetDSRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single DS record */ - UpdateDSRecord(request *UpdateDSRecordRequestType) (*UpdateDSRecordResponseType, error) - - UpdateDSRecordContext(ctx context.Context, request *UpdateDSRecordRequestType) (*UpdateDSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every DS record */ - DeleteDSRecords(request *DeleteDSRecordsRequestType) (*DeleteDSRecordsResponseType, error) - - DeleteDSRecordsContext(ctx context.Context, request *DeleteDSRecordsRequestType) (*DeleteDSRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single DS record */ - DeleteOneDSRecord(request *DeleteOneDSRecordRequestType) (*DeleteOneDSRecordResponseType, error) - - DeleteOneDSRecordContext(ctx context.Context, request *DeleteOneDSRecordRequestType) (*DeleteOneDSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new IPSECKEY record */ - CreateIPSECKEYRecord(request *CreateIPSECKEYRecordRequestType) (*CreateIPSECKEYRecordResponseType, error) - - CreateIPSECKEYRecordContext(ctx context.Context, request *CreateIPSECKEYRecordRequestType) (*CreateIPSECKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single IPSECKEY record */ - GetOneIPSECKEYRecord(request *GetOneIPSECKEYRecordRequestType) (*GetOneIPSECKEYRecordResponseType, error) - - GetOneIPSECKEYRecordContext(ctx context.Context, request *GetOneIPSECKEYRecordRequestType) (*GetOneIPSECKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every IPSECKEY record */ - GetIPSECKEYRecords(request *GetIPSECKEYRecordsRequestType) (*GetIPSECKEYRecordsResponseType, error) - - GetIPSECKEYRecordsContext(ctx context.Context, request *GetIPSECKEYRecordsRequestType) (*GetIPSECKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single IPSECKEY record */ - UpdateIPSECKEYRecord(request *UpdateIPSECKEYRecordRequestType) (*UpdateIPSECKEYRecordResponseType, error) - - UpdateIPSECKEYRecordContext(ctx context.Context, request *UpdateIPSECKEYRecordRequestType) (*UpdateIPSECKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every IPSECKEY record */ - DeleteIPSECKEYRecords(request *DeleteIPSECKEYRecordsRequestType) (*DeleteIPSECKEYRecordsResponseType, error) - - DeleteIPSECKEYRecordsContext(ctx context.Context, request *DeleteIPSECKEYRecordsRequestType) (*DeleteIPSECKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single IPSECKEY record */ - DeleteOneIPSECKEYRecord(request *DeleteOneIPSECKEYRecordRequestType) (*DeleteOneIPSECKEYRecordResponseType, error) - - DeleteOneIPSECKEYRecordContext(ctx context.Context, request *DeleteOneIPSECKEYRecordRequestType) (*DeleteOneIPSECKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new KEY record */ - CreateKEYRecord(request *CreateKEYRecordRequestType) (*CreateKEYRecordResponseType, error) - - CreateKEYRecordContext(ctx context.Context, request *CreateKEYRecordRequestType) (*CreateKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single KEY record */ - GetOneKEYRecord(request *GetOneKEYRecordRequestType) (*GetOneKEYRecordResponseType, error) - - GetOneKEYRecordContext(ctx context.Context, request *GetOneKEYRecordRequestType) (*GetOneKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every KEY record */ - GetKEYRecords(request *GetKEYRecordsRequestType) (*GetKEYRecordsResponseType, error) - - GetKEYRecordsContext(ctx context.Context, request *GetKEYRecordsRequestType) (*GetKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single KEY record */ - UpdateKEYRecord(request *UpdateKEYRecordRequestType) (*UpdateKEYRecordResponseType, error) - - UpdateKEYRecordContext(ctx context.Context, request *UpdateKEYRecordRequestType) (*UpdateKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every KEY record */ - DeleteKEYRecords(request *DeleteKEYRecordsRequestType) (*DeleteKEYRecordsResponseType, error) - - DeleteKEYRecordsContext(ctx context.Context, request *DeleteKEYRecordsRequestType) (*DeleteKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single KEY record */ - DeleteOneKEYRecord(request *DeleteOneKEYRecordRequestType) (*DeleteOneKEYRecordResponseType, error) - - DeleteOneKEYRecordContext(ctx context.Context, request *DeleteOneKEYRecordRequestType) (*DeleteOneKEYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new KX record */ - CreateKXRecord(request *CreateKXRecordRequestType) (*CreateKXRecordResponseType, error) - - CreateKXRecordContext(ctx context.Context, request *CreateKXRecordRequestType) (*CreateKXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single KX record */ - GetOneKXRecord(request *GetOneKXRecordRequestType) (*GetOneKXRecordResponseType, error) - - GetOneKXRecordContext(ctx context.Context, request *GetOneKXRecordRequestType) (*GetOneKXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every KX record */ - GetKXRecords(request *GetKXRecordsRequestType) (*GetKXRecordsResponseType, error) - - GetKXRecordsContext(ctx context.Context, request *GetKXRecordsRequestType) (*GetKXRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single KX record */ - UpdateKXRecord(request *UpdateKXRecordRequestType) (*UpdateKXRecordResponseType, error) - - UpdateKXRecordContext(ctx context.Context, request *UpdateKXRecordRequestType) (*UpdateKXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every KX record */ - DeleteKXRecords(request *DeleteKXRecordsRequestType) (*DeleteKXRecordsResponseType, error) - - DeleteKXRecordsContext(ctx context.Context, request *DeleteKXRecordsRequestType) (*DeleteKXRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single KX record */ - DeleteOneKXRecord(request *DeleteOneKXRecordRequestType) (*DeleteOneKXRecordResponseType, error) - - DeleteOneKXRecordContext(ctx context.Context, request *DeleteOneKXRecordRequestType) (*DeleteOneKXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new LOC record */ - CreateLOCRecord(request *CreateLOCRecordRequestType) (*CreateLOCRecordResponseType, error) - - CreateLOCRecordContext(ctx context.Context, request *CreateLOCRecordRequestType) (*CreateLOCRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single LOC record */ - GetOneLOCRecord(request *GetOneLOCRecordRequestType) (*GetOneLOCRecordResponseType, error) - - GetOneLOCRecordContext(ctx context.Context, request *GetOneLOCRecordRequestType) (*GetOneLOCRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every LOC record */ - GetLOCRecords(request *GetLOCRecordsRequestType) (*GetLOCRecordsResponseType, error) - - GetLOCRecordsContext(ctx context.Context, request *GetLOCRecordsRequestType) (*GetLOCRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single LOC record */ - UpdateLOCRecord(request *UpdateLOCRecordRequestType) (*UpdateLOCRecordResponseType, error) - - UpdateLOCRecordContext(ctx context.Context, request *UpdateLOCRecordRequestType) (*UpdateLOCRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every LOC record */ - DeleteLOCRecords(request *DeleteLOCRecordsRequestType) (*DeleteLOCRecordsResponseType, error) - - DeleteLOCRecordsContext(ctx context.Context, request *DeleteLOCRecordsRequestType) (*DeleteLOCRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single LOC record */ - DeleteOneLOCRecord(request *DeleteOneLOCRecordRequestType) (*DeleteOneLOCRecordResponseType, error) - - DeleteOneLOCRecordContext(ctx context.Context, request *DeleteOneLOCRecordRequestType) (*DeleteOneLOCRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new MX record */ - CreateMXRecord(request *CreateMXRecordRequestType) (*CreateMXRecordResponseType, error) - - CreateMXRecordContext(ctx context.Context, request *CreateMXRecordRequestType) (*CreateMXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single MX record */ - GetOneMXRecord(request *GetOneMXRecordRequestType) (*GetOneMXRecordResponseType, error) - - GetOneMXRecordContext(ctx context.Context, request *GetOneMXRecordRequestType) (*GetOneMXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every MX record */ - GetMXRecords(request *GetMXRecordsRequestType) (*GetMXRecordsResponseType, error) - - GetMXRecordsContext(ctx context.Context, request *GetMXRecordsRequestType) (*GetMXRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single MX record */ - UpdateMXRecord(request *UpdateMXRecordRequestType) (*UpdateMXRecordResponseType, error) - - UpdateMXRecordContext(ctx context.Context, request *UpdateMXRecordRequestType) (*UpdateMXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every MX record */ - DeleteMXRecords(request *DeleteMXRecordsRequestType) (*DeleteMXRecordsResponseType, error) - - DeleteMXRecordsContext(ctx context.Context, request *DeleteMXRecordsRequestType) (*DeleteMXRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single MX record */ - DeleteOneMXRecord(request *DeleteOneMXRecordRequestType) (*DeleteOneMXRecordResponseType, error) - - DeleteOneMXRecordContext(ctx context.Context, request *DeleteOneMXRecordRequestType) (*DeleteOneMXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new NAPTR record */ - CreateNAPTRRecord(request *CreateNAPTRRecordRequestType) (*CreateNAPTRRecordResponseType, error) - - CreateNAPTRRecordContext(ctx context.Context, request *CreateNAPTRRecordRequestType) (*CreateNAPTRRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single NAPTR record */ - GetOneNAPTRRecord(request *GetOneNAPTRRecordRequestType) (*GetOneNAPTRRecordResponseType, error) - - GetOneNAPTRRecordContext(ctx context.Context, request *GetOneNAPTRRecordRequestType) (*GetOneNAPTRRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every NAPTR record */ - GetNAPTRRecords(request *GetNAPTRRecordsRequestType) (*GetNAPTRRecordsResponseType, error) - - GetNAPTRRecordsContext(ctx context.Context, request *GetNAPTRRecordsRequestType) (*GetNAPTRRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single NAPTR record */ - UpdateNAPTRRecord(request *UpdateNAPTRRecordRequestType) (*UpdateNAPTRRecordResponseType, error) - - UpdateNAPTRRecordContext(ctx context.Context, request *UpdateNAPTRRecordRequestType) (*UpdateNAPTRRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every NAPTR record */ - DeleteNAPTRRecords(request *DeleteNAPTRRecordsRequestType) (*DeleteNAPTRRecordsResponseType, error) - - DeleteNAPTRRecordsContext(ctx context.Context, request *DeleteNAPTRRecordsRequestType) (*DeleteNAPTRRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single NAPTR record */ - DeleteOneNAPTRRecord(request *DeleteOneNAPTRRecordRequestType) (*DeleteOneNAPTRRecordResponseType, error) - - DeleteOneNAPTRRecordContext(ctx context.Context, request *DeleteOneNAPTRRecordRequestType) (*DeleteOneNAPTRRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new NSAP record */ - CreateNSAPRecord(request *CreateNSAPRecordRequestType) (*CreateNSAPRecordResponseType, error) - - CreateNSAPRecordContext(ctx context.Context, request *CreateNSAPRecordRequestType) (*CreateNSAPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single NSAP record */ - GetOneNSAPRecord(request *GetOneNSAPRecordRequestType) (*GetOneNSAPRecordResponseType, error) - - GetOneNSAPRecordContext(ctx context.Context, request *GetOneNSAPRecordRequestType) (*GetOneNSAPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every NSAP record */ - GetNSAPRecords(request *GetNSAPRecordsRequestType) (*GetNSAPRecordsResponseType, error) - - GetNSAPRecordsContext(ctx context.Context, request *GetNSAPRecordsRequestType) (*GetNSAPRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single NSAP record */ - UpdateNSAPRecord(request *UpdateNSAPRecordRequestType) (*UpdateNSAPRecordResponseType, error) - - UpdateNSAPRecordContext(ctx context.Context, request *UpdateNSAPRecordRequestType) (*UpdateNSAPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every NSAP record */ - DeleteNSAPRecords(request *DeleteNSAPRecordsRequestType) (*DeleteNSAPRecordsResponseType, error) - - DeleteNSAPRecordsContext(ctx context.Context, request *DeleteNSAPRecordsRequestType) (*DeleteNSAPRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single NSAP record */ - DeleteOneNSAPRecord(request *DeleteOneNSAPRecordRequestType) (*DeleteOneNSAPRecordResponseType, error) - - DeleteOneNSAPRecordContext(ctx context.Context, request *DeleteOneNSAPRecordRequestType) (*DeleteOneNSAPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new POLICY record */ - CreatePOLICYRecord(request *CreatePOLICYRecordRequestType) (*CreatePOLICYRecordResponseType, error) - - CreatePOLICYRecordContext(ctx context.Context, request *CreatePOLICYRecordRequestType) (*CreatePOLICYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single POLICY record */ - GetOnePOLICYRecord(request *GetOnePOLICYRecordRequestType) (*GetOnePOLICYRecordResponseType, error) - - GetOnePOLICYRecordContext(ctx context.Context, request *GetOnePOLICYRecordRequestType) (*GetOnePOLICYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every POLICY record */ - GetPOLICYRecords(request *GetPOLICYRecordsRequestType) (*GetPOLICYRecordsResponseType, error) - - GetPOLICYRecordsContext(ctx context.Context, request *GetPOLICYRecordsRequestType) (*GetPOLICYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single POLICY record */ - UpdatePOLICYRecord(request *UpdatePOLICYRecordRequestType) (*UpdatePOLICYRecordResponseType, error) - - UpdatePOLICYRecordContext(ctx context.Context, request *UpdatePOLICYRecordRequestType) (*UpdatePOLICYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every POLICY record */ - DeletePOLICYRecords(request *DeletePOLICYRecordsRequestType) (*DeletePOLICYRecordsResponseType, error) - - DeletePOLICYRecordsContext(ctx context.Context, request *DeletePOLICYRecordsRequestType) (*DeletePOLICYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single POLICY record */ - DeleteOnePOLICYRecord(request *DeleteOnePOLICYRecordRequestType) (*DeleteOnePOLICYRecordResponseType, error) - - DeleteOnePOLICYRecordContext(ctx context.Context, request *DeleteOnePOLICYRecordRequestType) (*DeleteOnePOLICYRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new PTR record */ - CreatePTRRecord(request *CreatePTRRecordRequestType) (*CreatePTRRecordResponseType, error) - - CreatePTRRecordContext(ctx context.Context, request *CreatePTRRecordRequestType) (*CreatePTRRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single PTR record */ - GetOnePTRRecord(request *GetOnePTRRecordRequestType) (*GetOnePTRRecordResponseType, error) - - GetOnePTRRecordContext(ctx context.Context, request *GetOnePTRRecordRequestType) (*GetOnePTRRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every PTR record */ - GetPTRRecords(request *GetPTRRecordsRequestType) (*GetPTRRecordsResponseType, error) - - GetPTRRecordsContext(ctx context.Context, request *GetPTRRecordsRequestType) (*GetPTRRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single PTR record */ - UpdatePTRRecord(request *UpdatePTRRecordRequestType) (*UpdatePTRRecordResponseType, error) - - UpdatePTRRecordContext(ctx context.Context, request *UpdatePTRRecordRequestType) (*UpdatePTRRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every PTR record */ - DeletePTRRecords(request *DeletePTRRecordsRequestType) (*DeletePTRRecordsResponseType, error) - - DeletePTRRecordsContext(ctx context.Context, request *DeletePTRRecordsRequestType) (*DeletePTRRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single PTR record */ - DeleteOnePTRRecord(request *DeleteOnePTRRecordRequestType) (*DeleteOnePTRRecordResponseType, error) - - DeleteOnePTRRecordContext(ctx context.Context, request *DeleteOnePTRRecordRequestType) (*DeleteOnePTRRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new PX record */ - CreatePXRecord(request *CreatePXRecordRequestType) (*CreatePXRecordResponseType, error) - - CreatePXRecordContext(ctx context.Context, request *CreatePXRecordRequestType) (*CreatePXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single PX record */ - GetOnePXRecord(request *GetOnePXRecordRequestType) (*GetOnePXRecordResponseType, error) - - GetOnePXRecordContext(ctx context.Context, request *GetOnePXRecordRequestType) (*GetOnePXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every PX record */ - GetPXRecords(request *GetPXRecordsRequestType) (*GetPXRecordsResponseType, error) - - GetPXRecordsContext(ctx context.Context, request *GetPXRecordsRequestType) (*GetPXRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single PX record */ - UpdatePXRecord(request *UpdatePXRecordRequestType) (*UpdatePXRecordResponseType, error) - - UpdatePXRecordContext(ctx context.Context, request *UpdatePXRecordRequestType) (*UpdatePXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every PX record */ - DeletePXRecords(request *DeletePXRecordsRequestType) (*DeletePXRecordsResponseType, error) - - DeletePXRecordsContext(ctx context.Context, request *DeletePXRecordsRequestType) (*DeletePXRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single PX record */ - DeleteOnePXRecord(request *DeleteOnePXRecordRequestType) (*DeleteOnePXRecordResponseType, error) - - DeleteOnePXRecordContext(ctx context.Context, request *DeleteOnePXRecordRequestType) (*DeleteOnePXRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new RP record */ - CreateRPRecord(request *CreateRPRecordRequestType) (*CreateRPRecordResponseType, error) - - CreateRPRecordContext(ctx context.Context, request *CreateRPRecordRequestType) (*CreateRPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single RP record */ - GetOneRPRecord(request *GetOneRPRecordRequestType) (*GetOneRPRecordResponseType, error) - - GetOneRPRecordContext(ctx context.Context, request *GetOneRPRecordRequestType) (*GetOneRPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every RP record */ - GetRPRecords(request *GetRPRecordsRequestType) (*GetRPRecordsResponseType, error) - - GetRPRecordsContext(ctx context.Context, request *GetRPRecordsRequestType) (*GetRPRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single RP record */ - UpdateRPRecord(request *UpdateRPRecordRequestType) (*UpdateRPRecordResponseType, error) - - UpdateRPRecordContext(ctx context.Context, request *UpdateRPRecordRequestType) (*UpdateRPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every RP record */ - DeleteRPRecords(request *DeleteRPRecordsRequestType) (*DeleteRPRecordsResponseType, error) - - DeleteRPRecordsContext(ctx context.Context, request *DeleteRPRecordsRequestType) (*DeleteRPRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single RP record */ - DeleteOneRPRecord(request *DeleteOneRPRecordRequestType) (*DeleteOneRPRecordResponseType, error) - - DeleteOneRPRecordContext(ctx context.Context, request *DeleteOneRPRecordRequestType) (*DeleteOneRPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new SPF record */ - CreateSPFRecord(request *CreateSPFRecordRequestType) (*CreateSPFRecordResponseType, error) - - CreateSPFRecordContext(ctx context.Context, request *CreateSPFRecordRequestType) (*CreateSPFRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single SPF record */ - GetOneSPFRecord(request *GetOneSPFRecordRequestType) (*GetOneSPFRecordResponseType, error) - - GetOneSPFRecordContext(ctx context.Context, request *GetOneSPFRecordRequestType) (*GetOneSPFRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every SPF record */ - GetSPFRecords(request *GetSPFRecordsRequestType) (*GetSPFRecordsResponseType, error) - - GetSPFRecordsContext(ctx context.Context, request *GetSPFRecordsRequestType) (*GetSPFRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single SPF record */ - UpdateSPFRecord(request *UpdateSPFRecordRequestType) (*UpdateSPFRecordResponseType, error) - - UpdateSPFRecordContext(ctx context.Context, request *UpdateSPFRecordRequestType) (*UpdateSPFRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every SPF record */ - DeleteSPFRecords(request *DeleteSPFRecordsRequestType) (*DeleteSPFRecordsResponseType, error) - - DeleteSPFRecordsContext(ctx context.Context, request *DeleteSPFRecordsRequestType) (*DeleteSPFRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single SPF record */ - DeleteOneSPFRecord(request *DeleteOneSPFRecordRequestType) (*DeleteOneSPFRecordResponseType, error) - - DeleteOneSPFRecordContext(ctx context.Context, request *DeleteOneSPFRecordRequestType) (*DeleteOneSPFRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new SRV record */ - CreateSRVRecord(request *CreateSRVRecordRequestType) (*CreateSRVRecordResponseType, error) - - CreateSRVRecordContext(ctx context.Context, request *CreateSRVRecordRequestType) (*CreateSRVRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single SRV record */ - GetOneSRVRecord(request *GetOneSRVRecordRequestType) (*GetOneSRVRecordResponseType, error) - - GetOneSRVRecordContext(ctx context.Context, request *GetOneSRVRecordRequestType) (*GetOneSRVRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every SRV record */ - GetSRVRecords(request *GetSRVRecordsRequestType) (*GetSRVRecordsResponseType, error) - - GetSRVRecordsContext(ctx context.Context, request *GetSRVRecordsRequestType) (*GetSRVRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single SRV record */ - UpdateSRVRecord(request *UpdateSRVRecordRequestType) (*UpdateSRVRecordResponseType, error) - - UpdateSRVRecordContext(ctx context.Context, request *UpdateSRVRecordRequestType) (*UpdateSRVRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every SRV record */ - DeleteSRVRecords(request *DeleteSRVRecordsRequestType) (*DeleteSRVRecordsResponseType, error) - - DeleteSRVRecordsContext(ctx context.Context, request *DeleteSRVRecordsRequestType) (*DeleteSRVRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single SRV record */ - DeleteOneSRVRecord(request *DeleteOneSRVRecordRequestType) (*DeleteOneSRVRecordResponseType, error) - - DeleteOneSRVRecordContext(ctx context.Context, request *DeleteOneSRVRecordRequestType) (*DeleteOneSRVRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new SSHFP record */ - CreateSSHFPRecord(request *CreateSSHFPRecordRequestType) (*CreateSSHFPRecordResponseType, error) - - CreateSSHFPRecordContext(ctx context.Context, request *CreateSSHFPRecordRequestType) (*CreateSSHFPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single SSHFP record */ - GetOneSSHFPRecord(request *GetOneSSHFPRecordRequestType) (*GetOneSSHFPRecordResponseType, error) - - GetOneSSHFPRecordContext(ctx context.Context, request *GetOneSSHFPRecordRequestType) (*GetOneSSHFPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every SSHFP record */ - GetSSHFPRecords(request *GetSSHFPRecordsRequestType) (*GetSSHFPRecordsResponseType, error) - - GetSSHFPRecordsContext(ctx context.Context, request *GetSSHFPRecordsRequestType) (*GetSSHFPRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single SSHFP record */ - UpdateSSHFPRecord(request *UpdateSSHFPRecordRequestType) (*UpdateSSHFPRecordResponseType, error) - - UpdateSSHFPRecordContext(ctx context.Context, request *UpdateSSHFPRecordRequestType) (*UpdateSSHFPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every SSHFP record */ - DeleteSSHFPRecords(request *DeleteSSHFPRecordsRequestType) (*DeleteSSHFPRecordsResponseType, error) - - DeleteSSHFPRecordsContext(ctx context.Context, request *DeleteSSHFPRecordsRequestType) (*DeleteSSHFPRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single SSHFP record */ - DeleteOneSSHFPRecord(request *DeleteOneSSHFPRecordRequestType) (*DeleteOneSSHFPRecordResponseType, error) - - DeleteOneSSHFPRecordContext(ctx context.Context, request *DeleteOneSSHFPRecordRequestType) (*DeleteOneSSHFPRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new TLSA record */ - CreateTLSARecord(request *CreateTLSARecordRequestType) (*CreateTLSARecordResponseType, error) - - CreateTLSARecordContext(ctx context.Context, request *CreateTLSARecordRequestType) (*CreateTLSARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single TLSA record */ - GetOneTLSARecord(request *GetOneTLSARecordRequestType) (*GetOneTLSARecordResponseType, error) - - GetOneTLSARecordContext(ctx context.Context, request *GetOneTLSARecordRequestType) (*GetOneTLSARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every TLSA record */ - GetTLSARecords(request *GetTLSARecordsRequestType) (*GetTLSARecordsResponseType, error) - - GetTLSARecordsContext(ctx context.Context, request *GetTLSARecordsRequestType) (*GetTLSARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single TLSA record */ - UpdateTLSARecord(request *UpdateTLSARecordRequestType) (*UpdateTLSARecordResponseType, error) - - UpdateTLSARecordContext(ctx context.Context, request *UpdateTLSARecordRequestType) (*UpdateTLSARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every TLSA record */ - DeleteTLSARecords(request *DeleteTLSARecordsRequestType) (*DeleteTLSARecordsResponseType, error) - - DeleteTLSARecordsContext(ctx context.Context, request *DeleteTLSARecordsRequestType) (*DeleteTLSARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single TLSA record */ - DeleteOneTLSARecord(request *DeleteOneTLSARecordRequestType) (*DeleteOneTLSARecordResponseType, error) - - DeleteOneTLSARecordContext(ctx context.Context, request *DeleteOneTLSARecordRequestType) (*DeleteOneTLSARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new TXT record */ - CreateTXTRecord(request *CreateTXTRecordRequestType) (*CreateTXTRecordResponseType, error) - - CreateTXTRecordContext(ctx context.Context, request *CreateTXTRecordRequestType) (*CreateTXTRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single TXT record */ - GetOneTXTRecord(request *GetOneTXTRecordRequestType) (*GetOneTXTRecordResponseType, error) - - GetOneTXTRecordContext(ctx context.Context, request *GetOneTXTRecordRequestType) (*GetOneTXTRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every TXT record */ - GetTXTRecords(request *GetTXTRecordsRequestType) (*GetTXTRecordsResponseType, error) - - GetTXTRecordsContext(ctx context.Context, request *GetTXTRecordsRequestType) (*GetTXTRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single TXT record */ - UpdateTXTRecord(request *UpdateTXTRecordRequestType) (*UpdateTXTRecordResponseType, error) - - UpdateTXTRecordContext(ctx context.Context, request *UpdateTXTRecordRequestType) (*UpdateTXTRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every TXT record */ - DeleteTXTRecords(request *DeleteTXTRecordsRequestType) (*DeleteTXTRecordsResponseType, error) - - DeleteTXTRecordsContext(ctx context.Context, request *DeleteTXTRecordsRequestType) (*DeleteTXTRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single TXT record */ - DeleteOneTXTRecord(request *DeleteOneTXTRecordRequestType) (*DeleteOneTXTRecordResponseType, error) - - DeleteOneTXTRecordContext(ctx context.Context, request *DeleteOneTXTRecordRequestType) (*DeleteOneTXTRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single SOA record */ - GetOneSOARecord(request *GetOneSOARecordRequestType) (*GetOneSOARecordResponseType, error) - - GetOneSOARecordContext(ctx context.Context, request *GetOneSOARecordRequestType) (*GetOneSOARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every SOA record */ - GetSOARecords(request *GetSOARecordsRequestType) (*GetSOARecordsResponseType, error) - - GetSOARecordsContext(ctx context.Context, request *GetSOARecordsRequestType) (*GetSOARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateSOARecord(request *UpdateSOARecordRequestType) (*UpdateSOARecordResponseType, error) - - UpdateSOARecordContext(ctx context.Context, request *UpdateSOARecordRequestType) (*UpdateSOARecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new NS record */ - CreateNSRecord(request *CreateNSRecordRequestType) (*CreateNSRecordResponseType, error) - - CreateNSRecordContext(ctx context.Context, request *CreateNSRecordRequestType) (*CreateNSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single NS record */ - GetOneNSRecord(request *GetOneNSRecordRequestType) (*GetOneNSRecordResponseType, error) - - GetOneNSRecordContext(ctx context.Context, request *GetOneNSRecordRequestType) (*GetOneNSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every NS record */ - GetNSRecords(request *GetNSRecordsRequestType) (*GetNSRecordsResponseType, error) - - GetNSRecordsContext(ctx context.Context, request *GetNSRecordsRequestType) (*GetNSRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single NS record */ - UpdateNSRecord(request *UpdateNSRecordRequestType) (*UpdateNSRecordResponseType, error) - - UpdateNSRecordContext(ctx context.Context, request *UpdateNSRecordRequestType) (*UpdateNSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes every NS record */ - DeleteNSRecords(request *DeleteNSRecordsRequestType) (*DeleteNSRecordsResponseType, error) - - DeleteNSRecordsContext(ctx context.Context, request *DeleteNSRecordsRequestType) (*DeleteNSRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single NS record */ - DeleteOneNSRecord(request *DeleteOneNSRecordRequestType) (*DeleteOneNSRecordResponseType, error) - - DeleteOneNSRecordContext(ctx context.Context, request *DeleteOneNSRecordRequestType) (*DeleteOneNSRecordResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceARecords(request *ReplaceARecordsRequestType) (*ReplaceARecordsResponseType, error) - - ReplaceARecordsContext(ctx context.Context, request *ReplaceARecordsRequestType) (*ReplaceARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceAAAARecords(request *ReplaceAAAARecordsRequestType) (*ReplaceAAAARecordsResponseType, error) - - ReplaceAAAARecordsContext(ctx context.Context, request *ReplaceAAAARecordsRequestType) (*ReplaceAAAARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceALIASRecords(request *ReplaceALIASRecordsRequestType) (*ReplaceALIASRecordsResponseType, error) - - ReplaceALIASRecordsContext(ctx context.Context, request *ReplaceALIASRecordsRequestType) (*ReplaceALIASRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceCAARecords(request *ReplaceCAARecordsRequestType) (*ReplaceCAARecordsResponseType, error) - - ReplaceCAARecordsContext(ctx context.Context, request *ReplaceCAARecordsRequestType) (*ReplaceCAARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceCDNSKEYRecords(request *ReplaceCDNSKEYRecordsRequestType) (*ReplaceCDNSKEYRecordsResponseType, error) - - ReplaceCDNSKEYRecordsContext(ctx context.Context, request *ReplaceCDNSKEYRecordsRequestType) (*ReplaceCDNSKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceCDSRecords(request *ReplaceCDSRecordsRequestType) (*ReplaceCDSRecordsResponseType, error) - - ReplaceCDSRecordsContext(ctx context.Context, request *ReplaceCDSRecordsRequestType) (*ReplaceCDSRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceCERTRecords(request *ReplaceCERTRecordsRequestType) (*ReplaceCERTRecordsResponseType, error) - - ReplaceCERTRecordsContext(ctx context.Context, request *ReplaceCERTRecordsRequestType) (*ReplaceCERTRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceCNAMERecords(request *ReplaceCNAMERecordsRequestType) (*ReplaceCNAMERecordsResponseType, error) - - ReplaceCNAMERecordsContext(ctx context.Context, request *ReplaceCNAMERecordsRequestType) (*ReplaceCNAMERecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceCSYNCRecords(request *ReplaceCSYNCRecordsRequestType) (*ReplaceCSYNCRecordsResponseType, error) - - ReplaceCSYNCRecordsContext(ctx context.Context, request *ReplaceCSYNCRecordsRequestType) (*ReplaceCSYNCRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceDHCIDRecords(request *ReplaceDHCIDRecordsRequestType) (*ReplaceDHCIDRecordsResponseType, error) - - ReplaceDHCIDRecordsContext(ctx context.Context, request *ReplaceDHCIDRecordsRequestType) (*ReplaceDHCIDRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceDNAMERecords(request *ReplaceDNAMERecordsRequestType) (*ReplaceDNAMERecordsResponseType, error) - - ReplaceDNAMERecordsContext(ctx context.Context, request *ReplaceDNAMERecordsRequestType) (*ReplaceDNAMERecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceDNSKEYRecords(request *ReplaceDNSKEYRecordsRequestType) (*ReplaceDNSKEYRecordsResponseType, error) - - ReplaceDNSKEYRecordsContext(ctx context.Context, request *ReplaceDNSKEYRecordsRequestType) (*ReplaceDNSKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceDSRecords(request *ReplaceDSRecordsRequestType) (*ReplaceDSRecordsResponseType, error) - - ReplaceDSRecordsContext(ctx context.Context, request *ReplaceDSRecordsRequestType) (*ReplaceDSRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceIPSECKEYRecords(request *ReplaceIPSECKEYRecordsRequestType) (*ReplaceIPSECKEYRecordsResponseType, error) - - ReplaceIPSECKEYRecordsContext(ctx context.Context, request *ReplaceIPSECKEYRecordsRequestType) (*ReplaceIPSECKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceKEYRecords(request *ReplaceKEYRecordsRequestType) (*ReplaceKEYRecordsResponseType, error) - - ReplaceKEYRecordsContext(ctx context.Context, request *ReplaceKEYRecordsRequestType) (*ReplaceKEYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceKXRecords(request *ReplaceKXRecordsRequestType) (*ReplaceKXRecordsResponseType, error) - - ReplaceKXRecordsContext(ctx context.Context, request *ReplaceKXRecordsRequestType) (*ReplaceKXRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceLOCRecords(request *ReplaceLOCRecordsRequestType) (*ReplaceLOCRecordsResponseType, error) - - ReplaceLOCRecordsContext(ctx context.Context, request *ReplaceLOCRecordsRequestType) (*ReplaceLOCRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceMXRecords(request *ReplaceMXRecordsRequestType) (*ReplaceMXRecordsResponseType, error) - - ReplaceMXRecordsContext(ctx context.Context, request *ReplaceMXRecordsRequestType) (*ReplaceMXRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceNAPTRRecords(request *ReplaceNAPTRRecordsRequestType) (*ReplaceNAPTRRecordsResponseType, error) - - ReplaceNAPTRRecordsContext(ctx context.Context, request *ReplaceNAPTRRecordsRequestType) (*ReplaceNAPTRRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceNSAPRecords(request *ReplaceNSAPRecordsRequestType) (*ReplaceNSAPRecordsResponseType, error) - - ReplaceNSAPRecordsContext(ctx context.Context, request *ReplaceNSAPRecordsRequestType) (*ReplaceNSAPRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplacePOLICYRecords(request *ReplacePOLICYRecordsRequestType) (*ReplacePOLICYRecordsResponseType, error) - - ReplacePOLICYRecordsContext(ctx context.Context, request *ReplacePOLICYRecordsRequestType) (*ReplacePOLICYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplacePTRRecords(request *ReplacePTRRecordsRequestType) (*ReplacePTRRecordsResponseType, error) - - ReplacePTRRecordsContext(ctx context.Context, request *ReplacePTRRecordsRequestType) (*ReplacePTRRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplacePXRecords(request *ReplacePXRecordsRequestType) (*ReplacePXRecordsResponseType, error) - - ReplacePXRecordsContext(ctx context.Context, request *ReplacePXRecordsRequestType) (*ReplacePXRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceRPRecords(request *ReplaceRPRecordsRequestType) (*ReplaceRPRecordsResponseType, error) - - ReplaceRPRecordsContext(ctx context.Context, request *ReplaceRPRecordsRequestType) (*ReplaceRPRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceSPFRecords(request *ReplaceSPFRecordsRequestType) (*ReplaceSPFRecordsResponseType, error) - - ReplaceSPFRecordsContext(ctx context.Context, request *ReplaceSPFRecordsRequestType) (*ReplaceSPFRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceSRVRecords(request *ReplaceSRVRecordsRequestType) (*ReplaceSRVRecordsResponseType, error) - - ReplaceSRVRecordsContext(ctx context.Context, request *ReplaceSRVRecordsRequestType) (*ReplaceSRVRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceSSHFPRecords(request *ReplaceSSHFPRecordsRequestType) (*ReplaceSSHFPRecordsResponseType, error) - - ReplaceSSHFPRecordsContext(ctx context.Context, request *ReplaceSSHFPRecordsRequestType) (*ReplaceSSHFPRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceTLSARecords(request *ReplaceTLSARecordsRequestType) (*ReplaceTLSARecordsResponseType, error) - - ReplaceTLSARecordsContext(ctx context.Context, request *ReplaceTLSARecordsRequestType) (*ReplaceTLSARecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceTXTRecords(request *ReplaceTXTRecordsRequestType) (*ReplaceTXTRecordsResponseType, error) - - ReplaceTXTRecordsContext(ctx context.Context, request *ReplaceTXTRecordsRequestType) (*ReplaceTXTRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ReplaceNSRecords(request *ReplaceNSRecordsRequestType) (*ReplaceNSRecordsResponseType, error) - - ReplaceNSRecordsContext(ctx context.Context, request *ReplaceNSRecordsRequestType) (*ReplaceNSRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetANYRecords(request *GetANYRecordsRequestType) (*GetANYRecordsResponseType, error) - - GetANYRecordsContext(ctx context.Context, request *GetANYRecordsRequestType) (*GetANYRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetAllRecords(request *GetAllRecordsRequestType) (*GetAllRecordsResponseType, error) - - GetAllRecordsContext(ctx context.Context, request *GetAllRecordsRequestType) (*GetAllRecordsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetAllAliasQNames(request *GetAllAliasQNamesRequestType) (*GetAllAliasQNamesResponseType, error) - - GetAllAliasQNamesContext(ctx context.Context, request *GetAllAliasQNamesRequestType) (*GetAllAliasQNamesResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single User */ - GetOneUser(request *GetOneUserRequestType) (*GetOneUserResponseType, error) - - GetOneUserContext(ctx context.Context, request *GetOneUserRequestType) (*GetOneUserResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single User */ - DeleteOneUser(request *DeleteOneUserRequestType) (*DeleteOneUserResponseType, error) - - DeleteOneUserContext(ctx context.Context, request *DeleteOneUserRequestType) (*DeleteOneUserResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateUser(request *CreateUserRequestType) (*CreateUserResponseType, error) - - CreateUserContext(ctx context.Context, request *CreateUserRequestType) (*CreateUserResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateUser(request *UpdateUserRequestType) (*UpdateUserResponseType, error) - - UpdateUserContext(ctx context.Context, request *UpdateUserRequestType) (*UpdateUserResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetUsers(request *GetUsersRequestType) (*GetUsersResponseType, error) - - GetUsersContext(ctx context.Context, request *GetUsersRequestType) (*GetUsersResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetUpdateUsers(request *GetUpdateUsersRequestType) (*GetUpdateUsersResponseType, error) - - GetUpdateUsersContext(ctx context.Context, request *GetUpdateUsersRequestType) (*GetUpdateUsersResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateUpdateUser(request *UpdateUpdateUserRequestType) (*UpdateUpdateUserResponseType, error) - - UpdateUpdateUserContext(ctx context.Context, request *UpdateUpdateUserRequestType) (*UpdateUpdateUserResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneUpdateUser(request *DeleteOneUpdateUserRequestType) (*DeleteOneUpdateUserResponseType, error) - - DeleteOneUpdateUserContext(ctx context.Context, request *DeleteOneUpdateUserRequestType) (*DeleteOneUpdateUserResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateUserPassword(request *UpdateUserPasswordRequestType) (*UpdateUserPasswordResponseType, error) - - UpdateUserPasswordContext(ctx context.Context, request *UpdateUserPasswordRequestType) (*UpdateUserPasswordResponseType, error) - - // Error can be either of the following types: - // - // - fault - - BlockUser(request *BlockUserRequestType) (*BlockUserResponseType, error) - - BlockUserContext(ctx context.Context, request *BlockUserRequestType) (*BlockUserResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UnblockUser(request *UnblockUserRequestType) (*UnblockUserResponseType, error) - - UnblockUserContext(ctx context.Context, request *UnblockUserRequestType) (*UnblockUserResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new Contact */ - CreateContact(request *CreateContactRequestType) (*CreateContactResponseType, error) - - CreateContactContext(ctx context.Context, request *CreateContactRequestType) (*CreateContactResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single Contact */ - GetOneContact(request *GetOneContactRequestType) (*GetOneContactResponseType, error) - - GetOneContactContext(ctx context.Context, request *GetOneContactRequestType) (*GetOneContactResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every Contact */ - GetContacts(request *GetContactsRequestType) (*GetContactsResponseType, error) - - GetContactsContext(ctx context.Context, request *GetContactsRequestType) (*GetContactsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single Contact */ - DeleteOneContact(request *DeleteOneContactRequestType) (*DeleteOneContactResponseType, error) - - DeleteOneContactContext(ctx context.Context, request *DeleteOneContactRequestType) (*DeleteOneContactResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateContact(request *UpdateContactRequestType) (*UpdateContactResponseType, error) - - UpdateContactContext(ctx context.Context, request *UpdateContactRequestType) (*UpdateContactResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateCustomer(request *CreateCustomerRequestType) (*CreateCustomerResponseType, error) - - CreateCustomerContext(ctx context.Context, request *CreateCustomerRequestType) (*CreateCustomerResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateCustomer(request *UpdateCustomerRequestType) (*UpdateCustomerResponseType, error) - - UpdateCustomerContext(ctx context.Context, request *UpdateCustomerRequestType) (*UpdateCustomerResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneCustomer(request *GetOneCustomerRequestType) (*GetOneCustomerResponseType, error) - - GetOneCustomerContext(ctx context.Context, request *GetOneCustomerRequestType) (*GetOneCustomerResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetCustomers(request *GetCustomersRequestType) (*GetCustomersResponseType, error) - - GetCustomersContext(ctx context.Context, request *GetCustomersRequestType) (*GetCustomersResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneCustomer(request *DeleteOneCustomerRequestType) (*DeleteOneCustomerResponseType, error) - - DeleteOneCustomerContext(ctx context.Context, request *DeleteOneCustomerRequestType) (*DeleteOneCustomerResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetCustomerPrefs(request *GetCustomerPrefsRequestType) (*GetCustomerPrefsResponseType, error) - - GetCustomerPrefsContext(ctx context.Context, request *GetCustomerPrefsRequestType) (*GetCustomerPrefsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetCustomerPrefs(request *SetCustomerPrefsRequestType) (*SetCustomerPrefsResponseType, error) - - SetCustomerPrefsContext(ctx context.Context, request *SetCustomerPrefsRequestType) (*SetCustomerPrefsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetCustomerIPACL(request *GetCustomerIPACLRequestType) (*GetCustomerIPACLResponseType, error) - - GetCustomerIPACLContext(ctx context.Context, request *GetCustomerIPACLRequestType) (*GetCustomerIPACLResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetCustomerIPACL(request *SetCustomerIPACLRequestType) (*SetCustomerIPACLResponseType, error) - - SetCustomerIPACLContext(ctx context.Context, request *SetCustomerIPACLRequestType) (*SetCustomerIPACLResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateCustomerOracleMetadata(request *CreateCustomerOracleMetadataRequestType) (*CreateCustomerOracleMetadataResponseType, error) - - CreateCustomerOracleMetadataContext(ctx context.Context, request *CreateCustomerOracleMetadataRequestType) (*CreateCustomerOracleMetadataResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateCustomerOracleMetadata(request *UpdateCustomerOracleMetadataRequestType) (*UpdateCustomerOracleMetadataResponseType, error) - - UpdateCustomerOracleMetadataContext(ctx context.Context, request *UpdateCustomerOracleMetadataRequestType) (*UpdateCustomerOracleMetadataResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetCustomerOracleMetadata(request *GetCustomerOracleMetadataRequestType) (*GetCustomerOracleMetadataResponseType, error) - - GetCustomerOracleMetadataContext(ctx context.Context, request *GetCustomerOracleMetadataRequestType) (*GetCustomerOracleMetadataResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteCustomerOracleMetadata(request *DeleteCustomerOracleMetadataRequestType) (*DeleteCustomerOracleMetadataResponseType, error) - - DeleteCustomerOracleMetadataContext(ctx context.Context, request *DeleteCustomerOracleMetadataRequestType) (*DeleteCustomerOracleMetadataResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateZoneOracleMetadata(request *CreateZoneOracleMetadataRequestType) (*CreateZoneOracleMetadataResponseType, error) - - CreateZoneOracleMetadataContext(ctx context.Context, request *CreateZoneOracleMetadataRequestType) (*CreateZoneOracleMetadataResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateZoneOracleMetadata(request *UpdateZoneOracleMetadataRequestType) (*UpdateZoneOracleMetadataResponseType, error) - - UpdateZoneOracleMetadataContext(ctx context.Context, request *UpdateZoneOracleMetadataRequestType) (*UpdateZoneOracleMetadataResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetZoneOracleMetadata(request *GetZoneOracleMetadataRequestType) (*GetZoneOracleMetadataResponseType, error) - - GetZoneOracleMetadataContext(ctx context.Context, request *GetZoneOracleMetadataRequestType) (*GetZoneOracleMetadataResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteZoneOracleMetadata(request *DeleteZoneOracleMetadataRequestType) (*DeleteZoneOracleMetadataResponseType, error) - - DeleteZoneOracleMetadataContext(ctx context.Context, request *DeleteZoneOracleMetadataRequestType) (*DeleteZoneOracleMetadataResponseType, error) - - // Error can be either of the following types: - // - // - fault - - OCIMigrate(request *OCIMigrateRequestType) (*OCIMigrateResponseType, error) - - OCIMigrateContext(ctx context.Context, request *OCIMigrateRequestType) (*OCIMigrateResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new Dynamic DNS service */ - CreateDDNS(request *CreateDDNSRequestType) (*CreateDDNSResponseType, error) - - CreateDDNSContext(ctx context.Context, request *CreateDDNSRequestType) (*CreateDDNSResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single Dynamic DNS service */ - GetOneDDNS(request *GetOneDDNSRequestType) (*GetOneDDNSResponseType, error) - - GetOneDDNSContext(ctx context.Context, request *GetOneDDNSRequestType) (*GetOneDDNSResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every Dynamic DNS service */ - GetDDNSs(request *GetDDNSsRequestType) (*GetDDNSsResponseType, error) - - GetDDNSsContext(ctx context.Context, request *GetDDNSsRequestType) (*GetDDNSsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single Dynamic DNS service */ - UpdateDDNS(request *UpdateDDNSRequestType) (*UpdateDDNSResponseType, error) - - UpdateDDNSContext(ctx context.Context, request *UpdateDDNSRequestType) (*UpdateDDNSResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single Dynamic DNS service */ - DeleteOneDDNS(request *DeleteOneDDNSRequestType) (*DeleteOneDDNSResponseType, error) - - DeleteOneDDNSContext(ctx context.Context, request *DeleteOneDDNSRequestType) (*DeleteOneDDNSResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ActivateDDNS(request *ActivateDDNSRequestType) (*ActivateDDNSResponseType, error) - - ActivateDDNSContext(ctx context.Context, request *ActivateDDNSRequestType) (*ActivateDDNSResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeactivateDDNS(request *DeactivateDDNSRequestType) (*DeactivateDDNSResponseType, error) - - DeactivateDDNSContext(ctx context.Context, request *DeactivateDDNSRequestType) (*DeactivateDDNSResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ResetDDNS(request *ResetDDNSRequestType) (*ResetDDNSResponseType, error) - - ResetDDNSContext(ctx context.Context, request *ResetDDNSRequestType) (*ResetDDNSResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetUpdateUserPassword(request *GetUpdateUserPasswordRequestType) (*GetUpdateUserPasswordResponseType, error) - - GetUpdateUserPasswordContext(ctx context.Context, request *GetUpdateUserPasswordRequestType) (*GetUpdateUserPasswordResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateDDNSHost(request *CreateDDNSHostRequestType) (*CreateDDNSHostResponseType, error) - - CreateDDNSHostContext(ctx context.Context, request *CreateDDNSHostRequestType) (*CreateDDNSHostResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateUpdateUser(request *CreateUpdateUserRequestType) (*CreateUpdateUserResponseType, error) - - CreateUpdateUserContext(ctx context.Context, request *CreateUpdateUserRequestType) (*CreateUpdateUserResponseType, error) - - // Error can be either of the following types: - // - // - fault - - AddDDNS(request *AddDDNSRequestType) (*AddDDNSResponseType, error) - - AddDDNSContext(ctx context.Context, request *AddDDNSRequestType) (*AddDDNSResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new Simple Failover service */ - CreateFailover(request *CreateFailoverRequestType) (*CreateFailoverResponseType, error) - - CreateFailoverContext(ctx context.Context, request *CreateFailoverRequestType) (*CreateFailoverResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single Simple Failover service */ - GetOneFailover(request *GetOneFailoverRequestType) (*GetOneFailoverResponseType, error) - - GetOneFailoverContext(ctx context.Context, request *GetOneFailoverRequestType) (*GetOneFailoverResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every Simple Failover service */ - GetFailovers(request *GetFailoversRequestType) (*GetFailoversResponseType, error) - - GetFailoversContext(ctx context.Context, request *GetFailoversRequestType) (*GetFailoversResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single Simple Failover service */ - UpdateFailover(request *UpdateFailoverRequestType) (*UpdateFailoverResponseType, error) - - UpdateFailoverContext(ctx context.Context, request *UpdateFailoverRequestType) (*UpdateFailoverResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single Simple Failover service */ - DeleteOneFailover(request *DeleteOneFailoverRequestType) (*DeleteOneFailoverResponseType, error) - - DeleteOneFailoverContext(ctx context.Context, request *DeleteOneFailoverRequestType) (*DeleteOneFailoverResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ActivateFailover(request *ActivateFailoverRequestType) (*ActivateFailoverResponseType, error) - - ActivateFailoverContext(ctx context.Context, request *ActivateFailoverRequestType) (*ActivateFailoverResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeactivateFailover(request *DeactivateFailoverRequestType) (*DeactivateFailoverResponseType, error) - - DeactivateFailoverContext(ctx context.Context, request *DeactivateFailoverRequestType) (*DeactivateFailoverResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RecoverFailover(request *RecoverFailoverRequestType) (*RecoverFailoverResponseType, error) - - RecoverFailoverContext(ctx context.Context, request *RecoverFailoverRequestType) (*RecoverFailoverResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new basic LoadBalance service */ - CreateLoadBalance(request *CreateLoadBalanceRequestType) (*CreateLoadBalanceResponseType, error) - - CreateLoadBalanceContext(ctx context.Context, request *CreateLoadBalanceRequestType) (*CreateLoadBalanceResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single basic LoadBalance service */ - GetOneLoadBalance(request *GetOneLoadBalanceRequestType) (*GetOneLoadBalanceResponseType, error) - - GetOneLoadBalanceContext(ctx context.Context, request *GetOneLoadBalanceRequestType) (*GetOneLoadBalanceResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every basic LoadBalance service */ - GetLoadBalances(request *GetLoadBalancesRequestType) (*GetLoadBalancesResponseType, error) - - GetLoadBalancesContext(ctx context.Context, request *GetLoadBalancesRequestType) (*GetLoadBalancesResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single basic LoadBalance service */ - UpdateLoadBalance(request *UpdateLoadBalanceRequestType) (*UpdateLoadBalanceResponseType, error) - - UpdateLoadBalanceContext(ctx context.Context, request *UpdateLoadBalanceRequestType) (*UpdateLoadBalanceResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single basic LoadBalance service */ - DeleteOneLoadBalance(request *DeleteOneLoadBalanceRequestType) (*DeleteOneLoadBalanceResponseType, error) - - DeleteOneLoadBalanceContext(ctx context.Context, request *DeleteOneLoadBalanceRequestType) (*DeleteOneLoadBalanceResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ActivateLoadBalance(request *ActivateLoadBalanceRequestType) (*ActivateLoadBalanceResponseType, error) - - ActivateLoadBalanceContext(ctx context.Context, request *ActivateLoadBalanceRequestType) (*ActivateLoadBalanceResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeactivateLoadBalance(request *DeactivateLoadBalanceRequestType) (*DeactivateLoadBalanceResponseType, error) - - DeactivateLoadBalanceContext(ctx context.Context, request *DeactivateLoadBalanceRequestType) (*DeactivateLoadBalanceResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RecoverLoadBalance(request *RecoverLoadBalanceRequestType) (*RecoverLoadBalanceResponseType, error) - - RecoverLoadBalanceContext(ctx context.Context, request *RecoverLoadBalanceRequestType) (*RecoverLoadBalanceResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RecoverLoadBalanceIP(request *RecoverLoadBalanceIPRequestType) (*RecoverLoadBalanceIPResponseType, error) - - RecoverLoadBalanceIPContext(ctx context.Context, request *RecoverLoadBalanceIPRequestType) (*RecoverLoadBalanceIPResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateLoadBalancePoolEntry(request *CreateLoadBalancePoolEntryRequestType) (*CreateLoadBalancePoolEntryResponseType, error) - - CreateLoadBalancePoolEntryContext(ctx context.Context, request *CreateLoadBalancePoolEntryRequestType) (*CreateLoadBalancePoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateLoadBalancePoolEntry(request *UpdateLoadBalancePoolEntryRequestType) (*UpdateLoadBalancePoolEntryResponseType, error) - - UpdateLoadBalancePoolEntryContext(ctx context.Context, request *UpdateLoadBalancePoolEntryRequestType) (*UpdateLoadBalancePoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneLoadBalancePoolEntry(request *GetOneLoadBalancePoolEntryRequestType) (*GetOneLoadBalancePoolEntryResponseType, error) - - GetOneLoadBalancePoolEntryContext(ctx context.Context, request *GetOneLoadBalancePoolEntryRequestType) (*GetOneLoadBalancePoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetLoadBalancePoolEntries(request *GetLoadBalancePoolEntriesRequestType) (*GetLoadBalancePoolEntriesResponseType, error) - - GetLoadBalancePoolEntriesContext(ctx context.Context, request *GetLoadBalancePoolEntriesRequestType) (*GetLoadBalancePoolEntriesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneLoadBalancePoolEntry(request *DeleteOneLoadBalancePoolEntryRequestType) (*DeleteOneLoadBalancePoolEntryResponseType, error) - - DeleteOneLoadBalancePoolEntryContext(ctx context.Context, request *DeleteOneLoadBalancePoolEntryRequestType) (*DeleteOneLoadBalancePoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new GSLB */ - CreateGSLB(request *CreateGSLBRequestType) (*CreateGSLBResponseType, error) - - CreateGSLBContext(ctx context.Context, request *CreateGSLBRequestType) (*CreateGSLBResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single GSLB */ - GetOneGSLB(request *GetOneGSLBRequestType) (*GetOneGSLBResponseType, error) - - GetOneGSLBContext(ctx context.Context, request *GetOneGSLBRequestType) (*GetOneGSLBResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every GSLB */ - GetGSLBs(request *GetGSLBsRequestType) (*GetGSLBsResponseType, error) - - GetGSLBsContext(ctx context.Context, request *GetGSLBsRequestType) (*GetGSLBsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single GSLB */ - UpdateGSLB(request *UpdateGSLBRequestType) (*UpdateGSLBResponseType, error) - - UpdateGSLBContext(ctx context.Context, request *UpdateGSLBRequestType) (*UpdateGSLBResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single GSLB */ - DeleteOneGSLB(request *DeleteOneGSLBRequestType) (*DeleteOneGSLBResponseType, error) - - DeleteOneGSLBContext(ctx context.Context, request *DeleteOneGSLBRequestType) (*DeleteOneGSLBResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ActivateGSLB(request *ActivateGSLBRequestType) (*ActivateGSLBResponseType, error) - - ActivateGSLBContext(ctx context.Context, request *ActivateGSLBRequestType) (*ActivateGSLBResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeactivateGSLB(request *DeactivateGSLBRequestType) (*DeactivateGSLBResponseType, error) - - DeactivateGSLBContext(ctx context.Context, request *DeactivateGSLBRequestType) (*DeactivateGSLBResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RecoverGSLB(request *RecoverGSLBRequestType) (*RecoverGSLBResponseType, error) - - RecoverGSLBContext(ctx context.Context, request *RecoverGSLBRequestType) (*RecoverGSLBResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RecoverGSLBIP(request *RecoverGSLBIPRequestType) (*RecoverGSLBIPResponseType, error) - - RecoverGSLBIPContext(ctx context.Context, request *RecoverGSLBIPRequestType) (*RecoverGSLBIPResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new GSLBRegion */ - CreateGSLBRegion(request *CreateGSLBRegionRequestType) (*CreateGSLBRegionResponseType, error) - - CreateGSLBRegionContext(ctx context.Context, request *CreateGSLBRegionRequestType) (*CreateGSLBRegionResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single GSLBRegion */ - GetOneGSLBRegion(request *GetOneGSLBRegionRequestType) (*GetOneGSLBRegionResponseType, error) - - GetOneGSLBRegionContext(ctx context.Context, request *GetOneGSLBRegionRequestType) (*GetOneGSLBRegionResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every GSLBRegion */ - GetGSLBRegions(request *GetGSLBRegionsRequestType) (*GetGSLBRegionsResponseType, error) - - GetGSLBRegionsContext(ctx context.Context, request *GetGSLBRegionsRequestType) (*GetGSLBRegionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single GSLBRegion */ - UpdateGSLBRegion(request *UpdateGSLBRegionRequestType) (*UpdateGSLBRegionResponseType, error) - - UpdateGSLBRegionContext(ctx context.Context, request *UpdateGSLBRegionRequestType) (*UpdateGSLBRegionResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single GSLBRegion */ - DeleteOneGSLBRegion(request *DeleteOneGSLBRegionRequestType) (*DeleteOneGSLBRegionResponseType, error) - - DeleteOneGSLBRegionContext(ctx context.Context, request *DeleteOneGSLBRegionRequestType) (*DeleteOneGSLBRegionResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateGSLBRegionPoolEntry(request *CreateGSLBRegionPoolEntryRequestType) (*CreateGSLBRegionPoolEntryResponseType, error) - - CreateGSLBRegionPoolEntryContext(ctx context.Context, request *CreateGSLBRegionPoolEntryRequestType) (*CreateGSLBRegionPoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateGSLBRegionPoolEntry(request *UpdateGSLBRegionPoolEntryRequestType) (*UpdateGSLBRegionPoolEntryResponseType, error) - - UpdateGSLBRegionPoolEntryContext(ctx context.Context, request *UpdateGSLBRegionPoolEntryRequestType) (*UpdateGSLBRegionPoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneGSLBRegionPoolEntry(request *GetOneGSLBRegionPoolEntryRequestType) (*GetOneGSLBRegionPoolEntryResponseType, error) - - GetOneGSLBRegionPoolEntryContext(ctx context.Context, request *GetOneGSLBRegionPoolEntryRequestType) (*GetOneGSLBRegionPoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetGSLBRegionPoolEntries(request *GetGSLBRegionPoolEntriesRequestType) (*GetGSLBRegionPoolEntriesResponseType, error) - - GetGSLBRegionPoolEntriesContext(ctx context.Context, request *GetGSLBRegionPoolEntriesRequestType) (*GetGSLBRegionPoolEntriesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneGSLBRegionPoolEntry(request *DeleteOneGSLBRegionPoolEntryRequestType) (*DeleteOneGSLBRegionPoolEntryResponseType, error) - - DeleteOneGSLBRegionPoolEntryContext(ctx context.Context, request *DeleteOneGSLBRegionPoolEntryRequestType) (*DeleteOneGSLBRegionPoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new RTTM */ - CreateRTTM(request *CreateRTTMRequestType) (*CreateRTTMResponseType, error) - - CreateRTTMContext(ctx context.Context, request *CreateRTTMRequestType) (*CreateRTTMResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single RTTM */ - GetOneRTTM(request *GetOneRTTMRequestType) (*GetOneRTTMResponseType, error) - - GetOneRTTMContext(ctx context.Context, request *GetOneRTTMRequestType) (*GetOneRTTMResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every RTTM */ - GetRTTMs(request *GetRTTMsRequestType) (*GetRTTMsResponseType, error) - - GetRTTMsContext(ctx context.Context, request *GetRTTMsRequestType) (*GetRTTMsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single RTTM */ - UpdateRTTM(request *UpdateRTTMRequestType) (*UpdateRTTMResponseType, error) - - UpdateRTTMContext(ctx context.Context, request *UpdateRTTMRequestType) (*UpdateRTTMResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single RTTM */ - DeleteOneRTTM(request *DeleteOneRTTMRequestType) (*DeleteOneRTTMResponseType, error) - - DeleteOneRTTMContext(ctx context.Context, request *DeleteOneRTTMRequestType) (*DeleteOneRTTMResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ActivateRTTM(request *ActivateRTTMRequestType) (*ActivateRTTMResponseType, error) - - ActivateRTTMContext(ctx context.Context, request *ActivateRTTMRequestType) (*ActivateRTTMResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeactivateRTTM(request *DeactivateRTTMRequestType) (*DeactivateRTTMResponseType, error) - - DeactivateRTTMContext(ctx context.Context, request *DeactivateRTTMRequestType) (*DeactivateRTTMResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RecoverRTTM(request *RecoverRTTMRequestType) (*RecoverRTTMResponseType, error) - - RecoverRTTMContext(ctx context.Context, request *RecoverRTTMRequestType) (*RecoverRTTMResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RecoverRTTMIP(request *RecoverRTTMIPRequestType) (*RecoverRTTMIPResponseType, error) - - RecoverRTTMIPContext(ctx context.Context, request *RecoverRTTMIPRequestType) (*RecoverRTTMIPResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetRTTMLogs(request *GetRTTMLogsRequestType) (*GetRTTMLogsResponseType, error) - - GetRTTMLogsContext(ctx context.Context, request *GetRTTMLogsRequestType) (*GetRTTMLogsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetRTTMRRSets(request *GetRTTMRRSetsRequestType) (*GetRTTMRRSetsResponseType, error) - - GetRTTMRRSetsContext(ctx context.Context, request *GetRTTMRRSetsRequestType) (*GetRTTMRRSetsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new RTTMRegion */ - CreateRTTMRegion(request *CreateRTTMRegionRequestType) (*CreateRTTMRegionResponseType, error) - - CreateRTTMRegionContext(ctx context.Context, request *CreateRTTMRegionRequestType) (*CreateRTTMRegionResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single RTTMRegion */ - GetOneRTTMRegion(request *GetOneRTTMRegionRequestType) (*GetOneRTTMRegionResponseType, error) - - GetOneRTTMRegionContext(ctx context.Context, request *GetOneRTTMRegionRequestType) (*GetOneRTTMRegionResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every RTTMRegion */ - GetRTTMRegions(request *GetRTTMRegionsRequestType) (*GetRTTMRegionsResponseType, error) - - GetRTTMRegionsContext(ctx context.Context, request *GetRTTMRegionsRequestType) (*GetRTTMRegionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single RTTMRegion */ - UpdateRTTMRegion(request *UpdateRTTMRegionRequestType) (*UpdateRTTMRegionResponseType, error) - - UpdateRTTMRegionContext(ctx context.Context, request *UpdateRTTMRegionRequestType) (*UpdateRTTMRegionResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single RTTMRegion */ - DeleteOneRTTMRegion(request *DeleteOneRTTMRegionRequestType) (*DeleteOneRTTMRegionResponseType, error) - - DeleteOneRTTMRegionContext(ctx context.Context, request *DeleteOneRTTMRegionRequestType) (*DeleteOneRTTMRegionResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateRTTMRegionPoolEntry(request *CreateRTTMRegionPoolEntryRequestType) (*CreateRTTMRegionPoolEntryResponseType, error) - - CreateRTTMRegionPoolEntryContext(ctx context.Context, request *CreateRTTMRegionPoolEntryRequestType) (*CreateRTTMRegionPoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateRTTMRegionPoolEntry(request *UpdateRTTMRegionPoolEntryRequestType) (*UpdateRTTMRegionPoolEntryResponseType, error) - - UpdateRTTMRegionPoolEntryContext(ctx context.Context, request *UpdateRTTMRegionPoolEntryRequestType) (*UpdateRTTMRegionPoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneRTTMRegionPoolEntry(request *GetOneRTTMRegionPoolEntryRequestType) (*GetOneRTTMRegionPoolEntryResponseType, error) - - GetOneRTTMRegionPoolEntryContext(ctx context.Context, request *GetOneRTTMRegionPoolEntryRequestType) (*GetOneRTTMRegionPoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetRTTMRegionPoolEntries(request *GetRTTMRegionPoolEntriesRequestType) (*GetRTTMRegionPoolEntriesResponseType, error) - - GetRTTMRegionPoolEntriesContext(ctx context.Context, request *GetRTTMRegionPoolEntriesRequestType) (*GetRTTMRegionPoolEntriesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneRTTMRegionPoolEntry(request *DeleteOneRTTMRegionPoolEntryRequestType) (*DeleteOneRTTMRegionPoolEntryResponseType, error) - - DeleteOneRTTMRegionPoolEntryContext(ctx context.Context, request *DeleteOneRTTMRegionPoolEntryRequestType) (*DeleteOneRTTMRegionPoolEntryResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new HTTPRedirect */ - CreateHTTPRedirect(request *CreateHTTPRedirectRequestType) (*CreateHTTPRedirectResponseType, error) - - CreateHTTPRedirectContext(ctx context.Context, request *CreateHTTPRedirectRequestType) (*CreateHTTPRedirectResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single HTTPRedirect */ - GetOneHTTPRedirect(request *GetOneHTTPRedirectRequestType) (*GetOneHTTPRedirectResponseType, error) - - GetOneHTTPRedirectContext(ctx context.Context, request *GetOneHTTPRedirectRequestType) (*GetOneHTTPRedirectResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every HTTPRedirect */ - GetHTTPRedirects(request *GetHTTPRedirectsRequestType) (*GetHTTPRedirectsResponseType, error) - - GetHTTPRedirectsContext(ctx context.Context, request *GetHTTPRedirectsRequestType) (*GetHTTPRedirectsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single HTTPRedirect */ - UpdateHTTPRedirect(request *UpdateHTTPRedirectRequestType) (*UpdateHTTPRedirectResponseType, error) - - UpdateHTTPRedirectContext(ctx context.Context, request *UpdateHTTPRedirectRequestType) (*UpdateHTTPRedirectResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single HTTPRedirect */ - DeleteOneHTTPRedirect(request *DeleteOneHTTPRedirectRequestType) (*DeleteOneHTTPRedirectResponseType, error) - - DeleteOneHTTPRedirectContext(ctx context.Context, request *DeleteOneHTTPRedirectRequestType) (*DeleteOneHTTPRedirectResponseType, error) - - // Error can be either of the following types: - // - // - fault - - CreateAdvRedirectRule(request *CreateAdvRedirectRuleRequestType) (*CreateAdvRedirectRuleResponseType, error) - - CreateAdvRedirectRuleContext(ctx context.Context, request *CreateAdvRedirectRuleRequestType) (*CreateAdvRedirectRuleResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UpdateAdvRedirectRule(request *UpdateAdvRedirectRuleRequestType) (*UpdateAdvRedirectRuleResponseType, error) - - UpdateAdvRedirectRuleContext(ctx context.Context, request *UpdateAdvRedirectRuleRequestType) (*UpdateAdvRedirectRuleResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetOneAdvRedirectRule(request *GetOneAdvRedirectRuleRequestType) (*GetOneAdvRedirectRuleResponseType, error) - - GetOneAdvRedirectRuleContext(ctx context.Context, request *GetOneAdvRedirectRuleRequestType) (*GetOneAdvRedirectRuleResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetAdvRedirectRules(request *GetAdvRedirectRulesRequestType) (*GetAdvRedirectRulesResponseType, error) - - GetAdvRedirectRulesContext(ctx context.Context, request *GetAdvRedirectRulesRequestType) (*GetAdvRedirectRulesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneAdvRedirectRule(request *DeleteOneAdvRedirectRuleRequestType) (*DeleteOneAdvRedirectRuleResponseType, error) - - DeleteOneAdvRedirectRuleContext(ctx context.Context, request *DeleteOneAdvRedirectRuleRequestType) (*DeleteOneAdvRedirectRuleResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new AdvRedirect */ - CreateAdvRedirect(request *CreateAdvRedirectRequestType) (*CreateAdvRedirectResponseType, error) - - CreateAdvRedirectContext(ctx context.Context, request *CreateAdvRedirectRequestType) (*CreateAdvRedirectResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single AdvRedirect */ - GetOneAdvRedirect(request *GetOneAdvRedirectRequestType) (*GetOneAdvRedirectResponseType, error) - - GetOneAdvRedirectContext(ctx context.Context, request *GetOneAdvRedirectRequestType) (*GetOneAdvRedirectResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every AdvRedirect */ - GetAdvRedirects(request *GetAdvRedirectsRequestType) (*GetAdvRedirectsResponseType, error) - - GetAdvRedirectsContext(ctx context.Context, request *GetAdvRedirectsRequestType) (*GetAdvRedirectsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single AdvRedirect */ - UpdateAdvRedirect(request *UpdateAdvRedirectRequestType) (*UpdateAdvRedirectResponseType, error) - - UpdateAdvRedirectContext(ctx context.Context, request *UpdateAdvRedirectRequestType) (*UpdateAdvRedirectResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteOneAdvRedirect(request *DeleteOneAdvRedirectRequestType) (*DeleteOneAdvRedirectResponseType, error) - - DeleteOneAdvRedirectContext(ctx context.Context, request *DeleteOneAdvRedirectRequestType) (*DeleteOneAdvRedirectResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetNodeList(request *GetNodeListRequestType) (*GetNodeListResponseType, error) - - GetNodeListContext(ctx context.Context, request *GetNodeListRequestType) (*GetNodeListResponseType, error) - - // Error can be either of the following types: - // - // - fault - - PublishZone(request *PublishZoneRequestType) (*PublishZoneResponseType, error) - - PublishZoneContext(ctx context.Context, request *PublishZoneRequestType) (*PublishZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - - PruneZone(request *PruneZoneRequestType) (*PruneZoneResponseType, error) - - PruneZoneContext(ctx context.Context, request *PruneZoneRequestType) (*PruneZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - - FreezeZone(request *FreezeZoneRequestType) (*FreezeZoneResponseType, error) - - FreezeZoneContext(ctx context.Context, request *FreezeZoneRequestType) (*FreezeZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ThawZone(request *ThawZoneRequestType) (*ThawZoneResponseType, error) - - ThawZoneContext(ctx context.Context, request *ThawZoneRequestType) (*ThawZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - - RestoreZone(request *RestoreZoneRequestType) (*RestoreZoneResponseType, error) - - RestoreZoneContext(ctx context.Context, request *RestoreZoneRequestType) (*RestoreZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - - BlockZone(request *BlockZoneRequestType) (*BlockZoneResponseType, error) - - BlockZoneContext(ctx context.Context, request *BlockZoneRequestType) (*BlockZoneResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeleteZoneChangeset(request *DeleteZoneChangesetRequestType) (*DeleteZoneChangesetResponseType, error) - - DeleteZoneChangesetContext(ctx context.Context, request *DeleteZoneChangesetRequestType) (*DeleteZoneChangesetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetZoneChangeset(request *GetZoneChangesetRequestType) (*GetZoneChangesetResponseType, error) - - GetZoneChangesetContext(ctx context.Context, request *GetZoneChangesetRequestType) (*GetZoneChangesetResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetZoneNotes(request *GetZoneNotesRequestType) (*GetZoneNotesResponseType, error) - - GetZoneNotesContext(ctx context.Context, request *GetZoneNotesRequestType) (*GetZoneNotesResponseType, error) - - // Error can be either of the following types: - // - // - fault - - UploadZoneFile(request *UploadZoneFileRequestType) (*UploadZoneFileResponseType, error) - - UploadZoneFileContext(ctx context.Context, request *UploadZoneFileRequestType) (*UploadZoneFileResponseType, error) - - // Error can be either of the following types: - // - // - fault - - TransferZoneIn(request *TransferZoneInRequestType) (*TransferZoneInResponseType, error) - - TransferZoneInContext(ctx context.Context, request *TransferZoneInRequestType) (*TransferZoneInResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetTransferStatus(request *GetTransferStatusRequestType) (*GetTransferStatusResponseType, error) - - GetTransferStatusContext(ctx context.Context, request *GetTransferStatusRequestType) (*GetTransferStatusResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetZoneConfigOptions(request *GetZoneConfigOptionsRequestType) (*GetZoneConfigOptionsResponseType, error) - - GetZoneConfigOptionsContext(ctx context.Context, request *GetZoneConfigOptionsRequestType) (*GetZoneConfigOptionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - - SetZoneConfigOptions(request *SetZoneConfigOptionsRequestType) (*SetZoneConfigOptionsResponseType, error) - - SetZoneConfigOptionsContext(ctx context.Context, request *SetZoneConfigOptionsRequestType) (*SetZoneConfigOptionsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new IPTrack */ - CreateIPTrack(request *CreateIPTrackRequestType) (*CreateIPTrackResponseType, error) - - CreateIPTrackContext(ctx context.Context, request *CreateIPTrackRequestType) (*CreateIPTrackResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single IPTrack */ - GetOneIPTrack(request *GetOneIPTrackRequestType) (*GetOneIPTrackResponseType, error) - - GetOneIPTrackContext(ctx context.Context, request *GetOneIPTrackRequestType) (*GetOneIPTrackResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every IPTrack */ - GetIPTracks(request *GetIPTracksRequestType) (*GetIPTracksResponseType, error) - - GetIPTracksContext(ctx context.Context, request *GetIPTracksRequestType) (*GetIPTracksResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single IPTrack */ - UpdateIPTrack(request *UpdateIPTrackRequestType) (*UpdateIPTrackResponseType, error) - - UpdateIPTrackContext(ctx context.Context, request *UpdateIPTrackRequestType) (*UpdateIPTrackResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single IPTrack */ - DeleteOneIPTrack(request *DeleteOneIPTrackRequestType) (*DeleteOneIPTrackResponseType, error) - - DeleteOneIPTrackContext(ctx context.Context, request *DeleteOneIPTrackRequestType) (*DeleteOneIPTrackResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ActivateIPTrack(request *ActivateIPTrackRequestType) (*ActivateIPTrackResponseType, error) - - ActivateIPTrackContext(ctx context.Context, request *ActivateIPTrackRequestType) (*ActivateIPTrackResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeactivateIPTrack(request *DeactivateIPTrackRequestType) (*DeactivateIPTrackResponseType, error) - - DeactivateIPTrackContext(ctx context.Context, request *DeactivateIPTrackRequestType) (*DeactivateIPTrackResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new DNSSEC */ - CreateDNSSEC(request *CreateDNSSECRequestType) (*CreateDNSSECResponseType, error) - - CreateDNSSECContext(ctx context.Context, request *CreateDNSSECRequestType) (*CreateDNSSECResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single DNSSEC */ - GetOneDNSSEC(request *GetOneDNSSECRequestType) (*GetOneDNSSECResponseType, error) - - GetOneDNSSECContext(ctx context.Context, request *GetOneDNSSECRequestType) (*GetOneDNSSECResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every DNSSEC */ - GetDNSSECs(request *GetDNSSECsRequestType) (*GetDNSSECsResponseType, error) - - GetDNSSECsContext(ctx context.Context, request *GetDNSSECsRequestType) (*GetDNSSECsResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single DNSSEC */ - UpdateDNSSEC(request *UpdateDNSSECRequestType) (*UpdateDNSSECResponseType, error) - - UpdateDNSSECContext(ctx context.Context, request *UpdateDNSSECRequestType) (*UpdateDNSSECResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single DNSSEC */ - DeleteOneDNSSEC(request *DeleteOneDNSSECRequestType) (*DeleteOneDNSSECResponseType, error) - - DeleteOneDNSSECContext(ctx context.Context, request *DeleteOneDNSSECRequestType) (*DeleteOneDNSSECResponseType, error) - - // Error can be either of the following types: - // - // - fault - - ActivateDNSSEC(request *ActivateDNSSECRequestType) (*ActivateDNSSECResponseType, error) - - ActivateDNSSECContext(ctx context.Context, request *ActivateDNSSECRequestType) (*ActivateDNSSECResponseType, error) - - // Error can be either of the following types: - // - // - fault - - DeactivateDNSSEC(request *DeactivateDNSSECRequestType) (*DeactivateDNSSECResponseType, error) - - DeactivateDNSSECContext(ctx context.Context, request *DeactivateDNSSECRequestType) (*DeactivateDNSSECResponseType, error) - - // Error can be either of the following types: - // - // - fault - - GetDNSSECTimeline(request *GetDNSSECTimelineRequestType) (*GetDNSSECTimelineResponseType, error) - - GetDNSSECTimelineContext(ctx context.Context, request *GetDNSSECTimelineRequestType) (*GetDNSSECTimelineResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every Task */ - GetTasks(request *GetTasksRequestType) (*GetTasksResponseType, error) - - GetTasksContext(ctx context.Context, request *GetTasksRequestType) (*GetTasksResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single Task */ - GetOneTask(request *GetOneTaskRequestType) (*GetOneTaskResponseType, error) - - GetOneTaskContext(ctx context.Context, request *GetOneTaskRequestType) (*GetOneTaskResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Cancels a Task */ - CancelTask(request *CancelTaskRequestType) (*CancelTaskResponseType, error) - - CancelTaskContext(ctx context.Context, request *CancelTaskRequestType) (*CancelTaskResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Creates a new ExtNameserver */ - CreateExtNameserver(request *CreateExtNameserverRequestType) (*CreateExtNameserverResponseType, error) - - CreateExtNameserverContext(ctx context.Context, request *CreateExtNameserverRequestType) (*CreateExtNameserverResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds single ExtNameserver */ - GetOneExtNameserver(request *GetOneExtNameserverRequestType) (*GetOneExtNameserverResponseType, error) - - GetOneExtNameserverContext(ctx context.Context, request *GetOneExtNameserverRequestType) (*GetOneExtNameserverResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Finds every ExtNameserver */ - GetExtNameservers(request *GetExtNameserversRequestType) (*GetExtNameserversResponseType, error) - - GetExtNameserversContext(ctx context.Context, request *GetExtNameserversRequestType) (*GetExtNameserversResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Updates a single ExtNameserver */ - UpdateExtNameserver(request *UpdateExtNameserverRequestType) (*UpdateExtNameserverResponseType, error) - - UpdateExtNameserverContext(ctx context.Context, request *UpdateExtNameserverRequestType) (*UpdateExtNameserverResponseType, error) - - // Error can be either of the following types: - // - // - fault - /* Deletes a single ExtNameserver */ - DeleteOneExtNameserver(request *DeleteOneExtNameserverRequestType) (*DeleteOneExtNameserverResponseType, error) - - DeleteOneExtNameserverContext(ctx context.Context, request *DeleteOneExtNameserverRequestType) (*DeleteOneExtNameserverResponseType, error) -} - -type dynect struct { - client *soap.Client -} - -func NewDynect(client *soap.Client) Dynect { - return &dynect{ - client: client, - } -} - -func (service *dynect) GetJobContext(ctx context.Context, request *GetJobRequestType) (*GetJobResponseType, error) { - response := new(GetJobResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetJob(request *GetJobRequestType) (*GetJobResponseType, error) { - return service.GetJobContext( - context.Background(), - request, - ) -} - -func (service *dynect) SessionLoginContext(ctx context.Context, request *SessionLoginRequestType) (*SessionLoginResponseType, error) { - response := new(SessionLoginResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SessionLogin(request *SessionLoginRequestType) (*SessionLoginResponseType, error) { - return service.SessionLoginContext( - context.Background(), - request, - ) -} - -func (service *dynect) SessionLogoutContext(ctx context.Context, request *SessionLogoutRequestType) (*SessionLogoutResponseType, error) { - response := new(SessionLogoutResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SessionLogout(request *SessionLogoutRequestType) (*SessionLogoutResponseType, error) { - return service.SessionLogoutContext( - context.Background(), - request, - ) -} - -func (service *dynect) SessionIsAliveContext(ctx context.Context, request *SessionIsAliveRequestType) (*SessionIsAliveResponseType, error) { - response := new(SessionIsAliveResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SessionIsAlive(request *SessionIsAliveRequestType) (*SessionIsAliveResponseType, error) { - return service.SessionIsAliveContext( - context.Background(), - request, - ) -} - -func (service *dynect) SessionKeepAliveContext(ctx context.Context, request *SessionKeepAliveRequestType) (*SessionKeepAliveResponseType, error) { - response := new(SessionKeepAliveResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SessionKeepAlive(request *SessionKeepAliveRequestType) (*SessionKeepAliveResponseType, error) { - return service.SessionKeepAliveContext( - context.Background(), - request, - ) -} - -func (service *dynect) ScopeInContext(ctx context.Context, request *ScopeInRequestType) (*ScopeInResponseType, error) { - response := new(ScopeInResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ScopeIn(request *ScopeInRequestType) (*ScopeInResponseType, error) { - return service.ScopeInContext( - context.Background(), - request, - ) -} - -func (service *dynect) ScopeAsContext(ctx context.Context, request *ScopeAsRequestType) (*ScopeAsResponseType, error) { - response := new(ScopeAsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ScopeAs(request *ScopeAsRequestType) (*ScopeAsResponseType, error) { - return service.ScopeAsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UnscopeContext(ctx context.Context, request *UnscopeRequestType) (*UnscopeResponseType, error) { - response := new(UnscopeResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) Unscope(request *UnscopeRequestType) (*UnscopeResponseType, error) { - return service.UnscopeContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetQueryStatsContext(ctx context.Context, request *GetQueryStatsRequestType) (*GetQueryStatsResponseType, error) { - response := new(GetQueryStatsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetQueryStats(request *GetQueryStatsRequestType) (*GetQueryStatsResponseType, error) { - return service.GetQueryStatsContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateGeoContext(ctx context.Context, request *CreateGeoRequestType) (*CreateGeoResponseType, error) { - response := new(CreateGeoResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateGeo(request *CreateGeoRequestType) (*CreateGeoResponseType, error) { - return service.CreateGeoContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateGeoContext(ctx context.Context, request *UpdateGeoRequestType) (*UpdateGeoResponseType, error) { - response := new(UpdateGeoResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateGeo(request *UpdateGeoRequestType) (*UpdateGeoResponseType, error) { - return service.UpdateGeoContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetGeosContext(ctx context.Context, request *GetGeosRequestType) (*GetGeosResponseType, error) { - response := new(GetGeosResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetGeos(request *GetGeosRequestType) (*GetGeosResponseType, error) { - return service.GetGeosContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneGeoContext(ctx context.Context, request *GetOneGeoRequestType) (*GetOneGeoResponseType, error) { - response := new(GetOneGeoResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneGeo(request *GetOneGeoRequestType) (*GetOneGeoResponseType, error) { - return service.GetOneGeoContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneGeoContext(ctx context.Context, request *DeleteOneGeoRequestType) (*DeleteOneGeoResponseType, error) { - response := new(DeleteOneGeoResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneGeo(request *DeleteOneGeoRequestType) (*DeleteOneGeoResponseType, error) { - return service.DeleteOneGeoContext( - context.Background(), - request, - ) -} - -func (service *dynect) ActivateGeoContext(ctx context.Context, request *ActivateGeoRequestType) (*ActivateGeoResponseType, error) { - response := new(ActivateGeoResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ActivateGeo(request *ActivateGeoRequestType) (*ActivateGeoResponseType, error) { - return service.ActivateGeoContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeactivateGeoContext(ctx context.Context, request *DeactivateGeoRequestType) (*DeactivateGeoResponseType, error) { - response := new(DeactivateGeoResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeactivateGeo(request *DeactivateGeoRequestType) (*DeactivateGeoResponseType, error) { - return service.DeactivateGeoContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateGeoRegionGroupContext(ctx context.Context, request *CreateGeoRegionGroupRequestType) (*CreateGeoRegionGroupResponseType, error) { - response := new(CreateGeoRegionGroupResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateGeoRegionGroup(request *CreateGeoRegionGroupRequestType) (*CreateGeoRegionGroupResponseType, error) { - return service.CreateGeoRegionGroupContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateGeoRegionGroupContext(ctx context.Context, request *UpdateGeoRegionGroupRequestType) (*UpdateGeoRegionGroupResponseType, error) { - response := new(UpdateGeoRegionGroupResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateGeoRegionGroup(request *UpdateGeoRegionGroupRequestType) (*UpdateGeoRegionGroupResponseType, error) { - return service.UpdateGeoRegionGroupContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneGeoRegionGroupContext(ctx context.Context, request *DeleteOneGeoRegionGroupRequestType) (*DeleteOneGeoRegionGroupResponseType, error) { - response := new(DeleteOneGeoRegionGroupResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneGeoRegionGroup(request *DeleteOneGeoRegionGroupRequestType) (*DeleteOneGeoRegionGroupResponseType, error) { - return service.DeleteOneGeoRegionGroupContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetGeoRegionGroupsContext(ctx context.Context, request *GetGeoRegionGroupsRequestType) (*GetGeoRegionGroupsResponseType, error) { - response := new(GetGeoRegionGroupsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetGeoRegionGroups(request *GetGeoRegionGroupsRequestType) (*GetGeoRegionGroupsResponseType, error) { - return service.GetGeoRegionGroupsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneGeoRegionGroupContext(ctx context.Context, request *GetOneGeoRegionGroupRequestType) (*GetOneGeoRegionGroupResponseType, error) { - response := new(GetOneGeoRegionGroupResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneGeoRegionGroup(request *GetOneGeoRegionGroupRequestType) (*GetOneGeoRegionGroupResponseType, error) { - return service.GetOneGeoRegionGroupContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateGeoNodeContext(ctx context.Context, request *CreateGeoNodeRequestType) (*CreateGeoNodeResponseType, error) { - response := new(CreateGeoNodeResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateGeoNode(request *CreateGeoNodeRequestType) (*CreateGeoNodeResponseType, error) { - return service.CreateGeoNodeContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneGeoNodeContext(ctx context.Context, request *DeleteOneGeoNodeRequestType) (*DeleteOneGeoNodeResponseType, error) { - response := new(DeleteOneGeoNodeResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneGeoNode(request *DeleteOneGeoNodeRequestType) (*DeleteOneGeoNodeResponseType, error) { - return service.DeleteOneGeoNodeContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetGeoNodesContext(ctx context.Context, request *GetGeoNodesRequestType) (*GetGeoNodesResponseType, error) { - response := new(GetGeoNodesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetGeoNodes(request *GetGeoNodesRequestType) (*GetGeoNodesResponseType, error) { - return service.GetGeoNodesContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDSFContext(ctx context.Context, request *CreateDSFRequestType) (*CreateDSFResponseType, error) { - response := new(CreateDSFResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDSF(request *CreateDSFRequestType) (*CreateDSFResponseType, error) { - return service.CreateDSFContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDSFContext(ctx context.Context, request *UpdateDSFRequestType) (*UpdateDSFResponseType, error) { - response := new(UpdateDSFResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDSF(request *UpdateDSFRequestType) (*UpdateDSFResponseType, error) { - return service.UpdateDSFContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFsContext(ctx context.Context, request *GetDSFsRequestType) (*GetDSFsResponseType, error) { - response := new(GetDSFsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFs(request *GetDSFsRequestType) (*GetDSFsResponseType, error) { - return service.GetDSFsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFNotifiersContext(ctx context.Context, request *GetDSFNotifiersRequestType) (*GetDSFNotifiersResponseType, error) { - response := new(GetDSFNotifiersResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFNotifiers(request *GetDSFNotifiersRequestType) (*GetDSFNotifiersResponseType, error) { - return service.GetDSFNotifiersContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDSFContext(ctx context.Context, request *DeleteOneDSFRequestType) (*DeleteOneDSFResponseType, error) { - response := new(DeleteOneDSFResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDSF(request *DeleteOneDSFRequestType) (*DeleteOneDSFResponseType, error) { - return service.DeleteOneDSFContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDSFContext(ctx context.Context, request *GetOneDSFRequestType) (*GetOneDSFResponseType, error) { - response := new(GetOneDSFResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDSF(request *GetOneDSFRequestType) (*GetOneDSFResponseType, error) { - return service.GetOneDSFContext( - context.Background(), - request, - ) -} - -func (service *dynect) RevertDSFContext(ctx context.Context, request *RevertDSFRequestType) (*RevertDSFResponseType, error) { - response := new(RevertDSFResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RevertDSF(request *RevertDSFRequestType) (*RevertDSFResponseType, error) { - return service.RevertDSFContext( - context.Background(), - request, - ) -} - -func (service *dynect) PublishDSFContext(ctx context.Context, request *PublishDSFRequestType) (*PublishDSFResponseType, error) { - response := new(PublishDSFResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) PublishDSF(request *PublishDSFRequestType) (*PublishDSFResponseType, error) { - return service.PublishDSFContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddDSFNotifierContext(ctx context.Context, request *AddDSFNotifierRequestType) (*AddDSFNotifierResponseType, error) { - response := new(AddDSFNotifierResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddDSFNotifier(request *AddDSFNotifierRequestType) (*AddDSFNotifierResponseType, error) { - return service.AddDSFNotifierContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemoveDSFNotifierContext(ctx context.Context, request *RemoveDSFNotifierRequestType) (*RemoveDSFNotifierResponseType, error) { - response := new(RemoveDSFNotifierResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemoveDSFNotifier(request *RemoveDSFNotifierRequestType) (*RemoveDSFNotifierResponseType, error) { - return service.RemoveDSFNotifierContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDSFRulesetContext(ctx context.Context, request *CreateDSFRulesetRequestType) (*CreateDSFRulesetResponseType, error) { - response := new(CreateDSFRulesetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDSFRuleset(request *CreateDSFRulesetRequestType) (*CreateDSFRulesetResponseType, error) { - return service.CreateDSFRulesetContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDSFRulesetContext(ctx context.Context, request *UpdateDSFRulesetRequestType) (*UpdateDSFRulesetResponseType, error) { - response := new(UpdateDSFRulesetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDSFRuleset(request *UpdateDSFRulesetRequestType) (*UpdateDSFRulesetResponseType, error) { - return service.UpdateDSFRulesetContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFRulesetsContext(ctx context.Context, request *GetDSFRulesetsRequestType) (*GetDSFRulesetsResponseType, error) { - response := new(GetDSFRulesetsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFRulesets(request *GetDSFRulesetsRequestType) (*GetDSFRulesetsResponseType, error) { - return service.GetDSFRulesetsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDSFRulesetContext(ctx context.Context, request *GetOneDSFRulesetRequestType) (*GetOneDSFRulesetResponseType, error) { - response := new(GetOneDSFRulesetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDSFRuleset(request *GetOneDSFRulesetRequestType) (*GetOneDSFRulesetResponseType, error) { - return service.GetOneDSFRulesetContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDSFRulesetContext(ctx context.Context, request *DeleteOneDSFRulesetRequestType) (*DeleteOneDSFRulesetResponseType, error) { - response := new(DeleteOneDSFRulesetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDSFRuleset(request *DeleteOneDSFRulesetRequestType) (*DeleteOneDSFRulesetResponseType, error) { - return service.DeleteOneDSFRulesetContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDSFResponsePoolContext(ctx context.Context, request *CreateDSFResponsePoolRequestType) (*CreateDSFResponsePoolResponseType, error) { - response := new(CreateDSFResponsePoolResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDSFResponsePool(request *CreateDSFResponsePoolRequestType) (*CreateDSFResponsePoolResponseType, error) { - return service.CreateDSFResponsePoolContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDSFResponsePoolContext(ctx context.Context, request *UpdateDSFResponsePoolRequestType) (*UpdateDSFResponsePoolResponseType, error) { - response := new(UpdateDSFResponsePoolResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDSFResponsePool(request *UpdateDSFResponsePoolRequestType) (*UpdateDSFResponsePoolResponseType, error) { - return service.UpdateDSFResponsePoolContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFResponsePoolsContext(ctx context.Context, request *GetDSFResponsePoolsRequestType) (*GetDSFResponsePoolsResponseType, error) { - response := new(GetDSFResponsePoolsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFResponsePools(request *GetDSFResponsePoolsRequestType) (*GetDSFResponsePoolsResponseType, error) { - return service.GetDSFResponsePoolsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDSFResponsePoolContext(ctx context.Context, request *GetOneDSFResponsePoolRequestType) (*GetOneDSFResponsePoolResponseType, error) { - response := new(GetOneDSFResponsePoolResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDSFResponsePool(request *GetOneDSFResponsePoolRequestType) (*GetOneDSFResponsePoolResponseType, error) { - return service.GetOneDSFResponsePoolContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDSFResponsePoolContext(ctx context.Context, request *DeleteOneDSFResponsePoolRequestType) (*DeleteOneDSFResponsePoolResponseType, error) { - response := new(DeleteOneDSFResponsePoolResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDSFResponsePool(request *DeleteOneDSFResponsePoolRequestType) (*DeleteOneDSFResponsePoolResponseType, error) { - return service.DeleteOneDSFResponsePoolContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDSFRecordSetFailoverChainContext(ctx context.Context, request *CreateDSFRecordSetFailoverChainRequestType) (*CreateDSFRecordSetFailoverChainResponseType, error) { - response := new(CreateDSFRecordSetFailoverChainResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDSFRecordSetFailoverChain(request *CreateDSFRecordSetFailoverChainRequestType) (*CreateDSFRecordSetFailoverChainResponseType, error) { - return service.CreateDSFRecordSetFailoverChainContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDSFRecordSetFailoverChainContext(ctx context.Context, request *UpdateDSFRecordSetFailoverChainRequestType) (*UpdateDSFRecordSetFailoverChainResponseType, error) { - response := new(UpdateDSFRecordSetFailoverChainResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDSFRecordSetFailoverChain(request *UpdateDSFRecordSetFailoverChainRequestType) (*UpdateDSFRecordSetFailoverChainResponseType, error) { - return service.UpdateDSFRecordSetFailoverChainContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFRecordSetFailoverChainsContext(ctx context.Context, request *GetDSFRecordSetFailoverChainsRequestType) (*GetDSFRecordSetFailoverChainsResponseType, error) { - response := new(GetDSFRecordSetFailoverChainsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFRecordSetFailoverChains(request *GetDSFRecordSetFailoverChainsRequestType) (*GetDSFRecordSetFailoverChainsResponseType, error) { - return service.GetDSFRecordSetFailoverChainsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDSFRecordSetFailoverChainContext(ctx context.Context, request *GetOneDSFRecordSetFailoverChainRequestType) (*GetOneDSFRecordSetFailoverChainResponseType, error) { - response := new(GetOneDSFRecordSetFailoverChainResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDSFRecordSetFailoverChain(request *GetOneDSFRecordSetFailoverChainRequestType) (*GetOneDSFRecordSetFailoverChainResponseType, error) { - return service.GetOneDSFRecordSetFailoverChainContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDSFRecordSetFailoverChainContext(ctx context.Context, request *DeleteOneDSFRecordSetFailoverChainRequestType) (*DeleteOneDSFRecordSetFailoverChainResponseType, error) { - response := new(DeleteOneDSFRecordSetFailoverChainResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDSFRecordSetFailoverChain(request *DeleteOneDSFRecordSetFailoverChainRequestType) (*DeleteOneDSFRecordSetFailoverChainResponseType, error) { - return service.DeleteOneDSFRecordSetFailoverChainContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDSFRecordSetContext(ctx context.Context, request *CreateDSFRecordSetRequestType) (*CreateDSFRecordSetResponseType, error) { - response := new(CreateDSFRecordSetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDSFRecordSet(request *CreateDSFRecordSetRequestType) (*CreateDSFRecordSetResponseType, error) { - return service.CreateDSFRecordSetContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDSFRecordSetContext(ctx context.Context, request *UpdateDSFRecordSetRequestType) (*UpdateDSFRecordSetResponseType, error) { - response := new(UpdateDSFRecordSetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDSFRecordSet(request *UpdateDSFRecordSetRequestType) (*UpdateDSFRecordSetResponseType, error) { - return service.UpdateDSFRecordSetContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDSFRecordSetContext(ctx context.Context, request *GetOneDSFRecordSetRequestType) (*GetOneDSFRecordSetResponseType, error) { - response := new(GetOneDSFRecordSetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDSFRecordSet(request *GetOneDSFRecordSetRequestType) (*GetOneDSFRecordSetResponseType, error) { - return service.GetOneDSFRecordSetContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFRecordSetsContext(ctx context.Context, request *GetDSFRecordSetsRequestType) (*GetDSFRecordSetsResponseType, error) { - response := new(GetDSFRecordSetsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFRecordSets(request *GetDSFRecordSetsRequestType) (*GetDSFRecordSetsResponseType, error) { - return service.GetDSFRecordSetsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDSFRecordSetContext(ctx context.Context, request *DeleteOneDSFRecordSetRequestType) (*DeleteOneDSFRecordSetResponseType, error) { - response := new(DeleteOneDSFRecordSetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDSFRecordSet(request *DeleteOneDSFRecordSetRequestType) (*DeleteOneDSFRecordSetResponseType, error) { - return service.DeleteOneDSFRecordSetContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDSFRecordContext(ctx context.Context, request *CreateDSFRecordRequestType) (*CreateDSFRecordResponseType, error) { - response := new(CreateDSFRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDSFRecord(request *CreateDSFRecordRequestType) (*CreateDSFRecordResponseType, error) { - return service.CreateDSFRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDSFRecordContext(ctx context.Context, request *UpdateDSFRecordRequestType) (*UpdateDSFRecordResponseType, error) { - response := new(UpdateDSFRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDSFRecord(request *UpdateDSFRecordRequestType) (*UpdateDSFRecordResponseType, error) { - return service.UpdateDSFRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDSFRecordContext(ctx context.Context, request *GetOneDSFRecordRequestType) (*GetOneDSFRecordResponseType, error) { - response := new(GetOneDSFRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDSFRecord(request *GetOneDSFRecordRequestType) (*GetOneDSFRecordResponseType, error) { - return service.GetOneDSFRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFRecordsContext(ctx context.Context, request *GetDSFRecordsRequestType) (*GetDSFRecordsResponseType, error) { - response := new(GetDSFRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFRecords(request *GetDSFRecordsRequestType) (*GetDSFRecordsResponseType, error) { - return service.GetDSFRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDSFRecordContext(ctx context.Context, request *DeleteOneDSFRecordRequestType) (*DeleteOneDSFRecordResponseType, error) { - response := new(DeleteOneDSFRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDSFRecord(request *DeleteOneDSFRecordRequestType) (*DeleteOneDSFRecordResponseType, error) { - return service.DeleteOneDSFRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddDSFNodeContext(ctx context.Context, request *AddDSFNodeRequestType) (*AddDSFNodeResponseType, error) { - response := new(AddDSFNodeResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddDSFNode(request *AddDSFNodeRequestType) (*AddDSFNodeResponseType, error) { - return service.AddDSFNodeContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDSFNodesContext(ctx context.Context, request *UpdateDSFNodesRequestType) (*UpdateDSFNodesResponseType, error) { - response := new(UpdateDSFNodesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDSFNodes(request *UpdateDSFNodesRequestType) (*UpdateDSFNodesResponseType, error) { - return service.UpdateDSFNodesContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFNodesContext(ctx context.Context, request *GetDSFNodesRequestType) (*GetDSFNodesResponseType, error) { - response := new(GetDSFNodesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFNodes(request *GetDSFNodesRequestType) (*GetDSFNodesResponseType, error) { - return service.GetDSFNodesContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDSFNodeContext(ctx context.Context, request *DeleteOneDSFNodeRequestType) (*DeleteOneDSFNodeResponseType, error) { - response := new(DeleteOneDSFNodeResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDSFNode(request *DeleteOneDSFNodeRequestType) (*DeleteOneDSFNodeResponseType, error) { - return service.DeleteOneDSFNodeContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDSFMonitorContext(ctx context.Context, request *CreateDSFMonitorRequestType) (*CreateDSFMonitorResponseType, error) { - response := new(CreateDSFMonitorResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDSFMonitor(request *CreateDSFMonitorRequestType) (*CreateDSFMonitorResponseType, error) { - return service.CreateDSFMonitorContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDSFMonitorContext(ctx context.Context, request *UpdateDSFMonitorRequestType) (*UpdateDSFMonitorResponseType, error) { - response := new(UpdateDSFMonitorResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDSFMonitor(request *UpdateDSFMonitorRequestType) (*UpdateDSFMonitorResponseType, error) { - return service.UpdateDSFMonitorContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDSFMonitorContext(ctx context.Context, request *GetOneDSFMonitorRequestType) (*GetOneDSFMonitorResponseType, error) { - response := new(GetOneDSFMonitorResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDSFMonitor(request *GetOneDSFMonitorRequestType) (*GetOneDSFMonitorResponseType, error) { - return service.GetOneDSFMonitorContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFMonitorsContext(ctx context.Context, request *GetDSFMonitorsRequestType) (*GetDSFMonitorsResponseType, error) { - response := new(GetDSFMonitorsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFMonitors(request *GetDSFMonitorsRequestType) (*GetDSFMonitorsResponseType, error) { - return service.GetDSFMonitorsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDSFMonitorContext(ctx context.Context, request *DeleteOneDSFMonitorRequestType) (*DeleteOneDSFMonitorResponseType, error) { - response := new(DeleteOneDSFMonitorResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDSFMonitor(request *DeleteOneDSFMonitorRequestType) (*DeleteOneDSFMonitorResponseType, error) { - return service.DeleteOneDSFMonitorContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddDSFMonitorNotifierContext(ctx context.Context, request *AddDSFMonitorNotifierRequestType) (*AddDSFMonitorNotifierResponseType, error) { - response := new(AddDSFMonitorNotifierResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddDSFMonitorNotifier(request *AddDSFMonitorNotifierRequestType) (*AddDSFMonitorNotifierResponseType, error) { - return service.AddDSFMonitorNotifierContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSFMonitorSitesContext(ctx context.Context, request *GetDSFMonitorSitesRequestType) (*GetDSFMonitorSitesResponseType, error) { - response := new(GetDSFMonitorSitesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSFMonitorSites(request *GetDSFMonitorSitesRequestType) (*GetDSFMonitorSitesResponseType, error) { - return service.GetDSFMonitorSitesContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateNotifierContext(ctx context.Context, request *CreateNotifierRequestType) (*CreateNotifierResponseType, error) { - response := new(CreateNotifierResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateNotifier(request *CreateNotifierRequestType) (*CreateNotifierResponseType, error) { - return service.CreateNotifierContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateNotifierContext(ctx context.Context, request *UpdateNotifierRequestType) (*UpdateNotifierResponseType, error) { - response := new(UpdateNotifierResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateNotifier(request *UpdateNotifierRequestType) (*UpdateNotifierResponseType, error) { - return service.UpdateNotifierContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneNotifierContext(ctx context.Context, request *GetOneNotifierRequestType) (*GetOneNotifierResponseType, error) { - response := new(GetOneNotifierResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneNotifier(request *GetOneNotifierRequestType) (*GetOneNotifierResponseType, error) { - return service.GetOneNotifierContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetNotifiersContext(ctx context.Context, request *GetNotifiersRequestType) (*GetNotifiersResponseType, error) { - response := new(GetNotifiersResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetNotifiers(request *GetNotifiersRequestType) (*GetNotifiersResponseType, error) { - return service.GetNotifiersContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneNotifierContext(ctx context.Context, request *DeleteOneNotifierRequestType) (*DeleteOneNotifierResponseType, error) { - response := new(DeleteOneNotifierResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneNotifier(request *DeleteOneNotifierRequestType) (*DeleteOneNotifierResponseType, error) { - return service.DeleteOneNotifierContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateConfigLimitContext(ctx context.Context, request *CreateConfigLimitRequestType) (*CreateConfigLimitResponseType, error) { - response := new(CreateConfigLimitResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateConfigLimit(request *CreateConfigLimitRequestType) (*CreateConfigLimitResponseType, error) { - return service.CreateConfigLimitContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneConfigLimitContext(ctx context.Context, request *GetOneConfigLimitRequestType) (*GetOneConfigLimitResponseType, error) { - response := new(GetOneConfigLimitResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneConfigLimit(request *GetOneConfigLimitRequestType) (*GetOneConfigLimitResponseType, error) { - return service.GetOneConfigLimitContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetConfigLimitsContext(ctx context.Context, request *GetConfigLimitsRequestType) (*GetConfigLimitsResponseType, error) { - response := new(GetConfigLimitsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetConfigLimits(request *GetConfigLimitsRequestType) (*GetConfigLimitsResponseType, error) { - return service.GetConfigLimitsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateConfigLimitContext(ctx context.Context, request *UpdateConfigLimitRequestType) (*UpdateConfigLimitResponseType, error) { - response := new(UpdateConfigLimitResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateConfigLimit(request *UpdateConfigLimitRequestType) (*UpdateConfigLimitResponseType, error) { - return service.UpdateConfigLimitContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneConfigLimitContext(ctx context.Context, request *DeleteOneConfigLimitRequestType) (*DeleteOneConfigLimitResponseType, error) { - response := new(DeleteOneConfigLimitResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneConfigLimit(request *DeleteOneConfigLimitRequestType) (*DeleteOneConfigLimitResponseType, error) { - return service.DeleteOneConfigLimitContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreatePermissionGroupContext(ctx context.Context, request *CreatePermissionGroupRequestType) (*CreatePermissionGroupResponseType, error) { - response := new(CreatePermissionGroupResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreatePermissionGroup(request *CreatePermissionGroupRequestType) (*CreatePermissionGroupResponseType, error) { - return service.CreatePermissionGroupContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOnePermissionGroupContext(ctx context.Context, request *GetOnePermissionGroupRequestType) (*GetOnePermissionGroupResponseType, error) { - response := new(GetOnePermissionGroupResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOnePermissionGroup(request *GetOnePermissionGroupRequestType) (*GetOnePermissionGroupResponseType, error) { - return service.GetOnePermissionGroupContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetPermissionGroupsContext(ctx context.Context, request *GetPermissionGroupsRequestType) (*GetPermissionGroupsResponseType, error) { - response := new(GetPermissionGroupsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetPermissionGroups(request *GetPermissionGroupsRequestType) (*GetPermissionGroupsResponseType, error) { - return service.GetPermissionGroupsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOnePermissionGroupContext(ctx context.Context, request *DeleteOnePermissionGroupRequestType) (*DeleteOnePermissionGroupResponseType, error) { - response := new(DeleteOnePermissionGroupResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOnePermissionGroup(request *DeleteOnePermissionGroupRequestType) (*DeleteOnePermissionGroupResponseType, error) { - return service.DeleteOnePermissionGroupContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdatePermissionGroupContext(ctx context.Context, request *UpdatePermissionGroupRequestType) (*UpdatePermissionGroupResponseType, error) { - response := new(UpdatePermissionGroupResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdatePermissionGroup(request *UpdatePermissionGroupRequestType) (*UpdatePermissionGroupResponseType, error) { - return service.UpdatePermissionGroupContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCustomerPermissionsContext(ctx context.Context, request *GetCustomerPermissionsRequestType) (*GetCustomerPermissionsResponseType, error) { - response := new(GetCustomerPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCustomerPermissions(request *GetCustomerPermissionsRequestType) (*GetCustomerPermissionsResponseType, error) { - return service.GetCustomerPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetUserPermissionsContext(ctx context.Context, request *GetUserPermissionsRequestType) (*GetUserPermissionsResponseType, error) { - response := new(GetUserPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetUserPermissions(request *GetUserPermissionsRequestType) (*GetUserPermissionsResponseType, error) { - return service.GetUserPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) CheckPermissionsContext(ctx context.Context, request *CheckPermissionsRequestType) (*CheckPermissionsResponseType, error) { - response := new(CheckPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CheckPermissions(request *CheckPermissionsRequestType) (*CheckPermissionsResponseType, error) { - return service.CheckPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddPermissionGroupUsersContext(ctx context.Context, request *AddPermissionGroupUsersRequestType) (*AddPermissionGroupUsersResponseType, error) { - response := new(AddPermissionGroupUsersResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddPermissionGroupUsers(request *AddPermissionGroupUsersRequestType) (*AddPermissionGroupUsersResponseType, error) { - return service.AddPermissionGroupUsersContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetPermissionGroupUsersContext(ctx context.Context, request *SetPermissionGroupUsersRequestType) (*SetPermissionGroupUsersResponseType, error) { - response := new(SetPermissionGroupUsersResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetPermissionGroupUsers(request *SetPermissionGroupUsersRequestType) (*SetPermissionGroupUsersResponseType, error) { - return service.SetPermissionGroupUsersContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemovePermissionGroupUsersContext(ctx context.Context, request *RemovePermissionGroupUsersRequestType) (*RemovePermissionGroupUsersResponseType, error) { - response := new(RemovePermissionGroupUsersResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemovePermissionGroupUsers(request *RemovePermissionGroupUsersRequestType) (*RemovePermissionGroupUsersResponseType, error) { - return service.RemovePermissionGroupUsersContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddPermissionGroupSubgroupsContext(ctx context.Context, request *AddPermissionGroupSubgroupsRequestType) (*AddPermissionGroupSubgroupsResponseType, error) { - response := new(AddPermissionGroupSubgroupsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddPermissionGroupSubgroups(request *AddPermissionGroupSubgroupsRequestType) (*AddPermissionGroupSubgroupsResponseType, error) { - return service.AddPermissionGroupSubgroupsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetPermissionGroupSubgroupsContext(ctx context.Context, request *SetPermissionGroupSubgroupsRequestType) (*SetPermissionGroupSubgroupsResponseType, error) { - response := new(SetPermissionGroupSubgroupsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetPermissionGroupSubgroups(request *SetPermissionGroupSubgroupsRequestType) (*SetPermissionGroupSubgroupsResponseType, error) { - return service.SetPermissionGroupSubgroupsContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemovePermissionGroupSubgroupsContext(ctx context.Context, request *RemovePermissionGroupSubgroupsRequestType) (*RemovePermissionGroupSubgroupsResponseType, error) { - response := new(RemovePermissionGroupSubgroupsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemovePermissionGroupSubgroups(request *RemovePermissionGroupSubgroupsRequestType) (*RemovePermissionGroupSubgroupsResponseType, error) { - return service.RemovePermissionGroupSubgroupsContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddPermissionGroupPermissionsContext(ctx context.Context, request *AddPermissionGroupPermissionsRequestType) (*AddPermissionGroupPermissionsResponseType, error) { - response := new(AddPermissionGroupPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddPermissionGroupPermissions(request *AddPermissionGroupPermissionsRequestType) (*AddPermissionGroupPermissionsResponseType, error) { - return service.AddPermissionGroupPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetPermissionGroupPermissionsContext(ctx context.Context, request *SetPermissionGroupPermissionsRequestType) (*SetPermissionGroupPermissionsResponseType, error) { - response := new(SetPermissionGroupPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetPermissionGroupPermissions(request *SetPermissionGroupPermissionsRequestType) (*SetPermissionGroupPermissionsResponseType, error) { - return service.SetPermissionGroupPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemovePermissionGroupPermissionsContext(ctx context.Context, request *RemovePermissionGroupPermissionsRequestType) (*RemovePermissionGroupPermissionsResponseType, error) { - response := new(RemovePermissionGroupPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemovePermissionGroupPermissions(request *RemovePermissionGroupPermissionsRequestType) (*RemovePermissionGroupPermissionsResponseType, error) { - return service.RemovePermissionGroupPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddPermissionGroupZonesContext(ctx context.Context, request *AddPermissionGroupZonesRequestType) (*AddPermissionGroupZonesResponseType, error) { - response := new(AddPermissionGroupZonesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddPermissionGroupZones(request *AddPermissionGroupZonesRequestType) (*AddPermissionGroupZonesResponseType, error) { - return service.AddPermissionGroupZonesContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetPermissionGroupZonesContext(ctx context.Context, request *SetPermissionGroupZonesRequestType) (*SetPermissionGroupZonesResponseType, error) { - response := new(SetPermissionGroupZonesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetPermissionGroupZones(request *SetPermissionGroupZonesRequestType) (*SetPermissionGroupZonesResponseType, error) { - return service.SetPermissionGroupZonesContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemovePermissionGroupZonesContext(ctx context.Context, request *RemovePermissionGroupZonesRequestType) (*RemovePermissionGroupZonesResponseType, error) { - response := new(RemovePermissionGroupZonesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemovePermissionGroupZones(request *RemovePermissionGroupZonesRequestType) (*RemovePermissionGroupZonesResponseType, error) { - return service.RemovePermissionGroupZonesContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddUserGroupsContext(ctx context.Context, request *AddUserGroupsRequestType) (*AddUserGroupsResponseType, error) { - response := new(AddUserGroupsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddUserGroups(request *AddUserGroupsRequestType) (*AddUserGroupsResponseType, error) { - return service.AddUserGroupsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetUserGroupsContext(ctx context.Context, request *SetUserGroupsRequestType) (*SetUserGroupsResponseType, error) { - response := new(SetUserGroupsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetUserGroups(request *SetUserGroupsRequestType) (*SetUserGroupsResponseType, error) { - return service.SetUserGroupsContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemoveUserGroupsContext(ctx context.Context, request *RemoveUserGroupsRequestType) (*RemoveUserGroupsResponseType, error) { - response := new(RemoveUserGroupsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemoveUserGroups(request *RemoveUserGroupsRequestType) (*RemoveUserGroupsResponseType, error) { - return service.RemoveUserGroupsContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddUserZonesContext(ctx context.Context, request *AddUserZonesRequestType) (*AddUserZonesResponseType, error) { - response := new(AddUserZonesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddUserZones(request *AddUserZonesRequestType) (*AddUserZonesResponseType, error) { - return service.AddUserZonesContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetUserZonesContext(ctx context.Context, request *SetUserZonesRequestType) (*SetUserZonesResponseType, error) { - response := new(SetUserZonesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetUserZones(request *SetUserZonesRequestType) (*SetUserZonesResponseType, error) { - return service.SetUserZonesContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemoveUserZonesContext(ctx context.Context, request *RemoveUserZonesRequestType) (*RemoveUserZonesResponseType, error) { - response := new(RemoveUserZonesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemoveUserZones(request *RemoveUserZonesRequestType) (*RemoveUserZonesResponseType, error) { - return service.RemoveUserZonesContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddUserPermissionsContext(ctx context.Context, request *AddUserPermissionsRequestType) (*AddUserPermissionsResponseType, error) { - response := new(AddUserPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddUserPermissions(request *AddUserPermissionsRequestType) (*AddUserPermissionsResponseType, error) { - return service.AddUserPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetUserPermissionsContext(ctx context.Context, request *SetUserPermissionsRequestType) (*SetUserPermissionsResponseType, error) { - response := new(SetUserPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetUserPermissions(request *SetUserPermissionsRequestType) (*SetUserPermissionsResponseType, error) { - return service.SetUserPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemoveUserPermissionsContext(ctx context.Context, request *RemoveUserPermissionsRequestType) (*RemoveUserPermissionsResponseType, error) { - response := new(RemoveUserPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemoveUserPermissions(request *RemoveUserPermissionsRequestType) (*RemoveUserPermissionsResponseType, error) { - return service.RemoveUserPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddUserForbidsContext(ctx context.Context, request *AddUserForbidsRequestType) (*AddUserForbidsResponseType, error) { - response := new(AddUserForbidsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddUserForbids(request *AddUserForbidsRequestType) (*AddUserForbidsResponseType, error) { - return service.AddUserForbidsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetUserForbidsContext(ctx context.Context, request *SetUserForbidsRequestType) (*SetUserForbidsResponseType, error) { - response := new(SetUserForbidsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetUserForbids(request *SetUserForbidsRequestType) (*SetUserForbidsResponseType, error) { - return service.SetUserForbidsContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemoveUserForbidsContext(ctx context.Context, request *RemoveUserForbidsRequestType) (*RemoveUserForbidsResponseType, error) { - response := new(RemoveUserForbidsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemoveUserForbids(request *RemoveUserForbidsRequestType) (*RemoveUserForbidsResponseType, error) { - return service.RemoveUserForbidsContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddCustomerPermissionsContext(ctx context.Context, request *AddCustomerPermissionsRequestType) (*AddCustomerPermissionsResponseType, error) { - response := new(AddCustomerPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddCustomerPermissions(request *AddCustomerPermissionsRequestType) (*AddCustomerPermissionsResponseType, error) { - return service.AddCustomerPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetCustomerPermissionsContext(ctx context.Context, request *SetCustomerPermissionsRequestType) (*SetCustomerPermissionsResponseType, error) { - response := new(SetCustomerPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetCustomerPermissions(request *SetCustomerPermissionsRequestType) (*SetCustomerPermissionsResponseType, error) { - return service.SetCustomerPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemoveCustomerPermissionsContext(ctx context.Context, request *RemoveCustomerPermissionsRequestType) (*RemoveCustomerPermissionsResponseType, error) { - response := new(RemoveCustomerPermissionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemoveCustomerPermissions(request *RemoveCustomerPermissionsRequestType) (*RemoveCustomerPermissionsResponseType, error) { - return service.RemoveCustomerPermissionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddCustomerForbidsContext(ctx context.Context, request *AddCustomerForbidsRequestType) (*AddCustomerForbidsResponseType, error) { - response := new(AddCustomerForbidsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddCustomerForbids(request *AddCustomerForbidsRequestType) (*AddCustomerForbidsResponseType, error) { - return service.AddCustomerForbidsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetCustomerForbidsContext(ctx context.Context, request *SetCustomerForbidsRequestType) (*SetCustomerForbidsResponseType, error) { - response := new(SetCustomerForbidsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetCustomerForbids(request *SetCustomerForbidsRequestType) (*SetCustomerForbidsResponseType, error) { - return service.SetCustomerForbidsContext( - context.Background(), - request, - ) -} - -func (service *dynect) RemoveCustomerForbidsContext(ctx context.Context, request *RemoveCustomerForbidsRequestType) (*RemoveCustomerForbidsResponseType, error) { - response := new(RemoveCustomerForbidsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RemoveCustomerForbids(request *RemoveCustomerForbidsRequestType) (*RemoveCustomerForbidsResponseType, error) { - return service.RemoveCustomerForbidsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetHostStatsFlagsContext(ctx context.Context, request *GetHostStatsFlagsRequestType) (*GetHostStatsFlagsResponseType, error) { - response := new(GetHostStatsFlagsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetHostStatsFlags(request *GetHostStatsFlagsRequestType) (*GetHostStatsFlagsResponseType, error) { - return service.GetHostStatsFlagsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetHostStatsFlagsContext(ctx context.Context, request *SetHostStatsFlagsRequestType) (*SetHostStatsFlagsResponseType, error) { - response := new(SetHostStatsFlagsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetHostStatsFlags(request *SetHostStatsFlagsRequestType) (*SetHostStatsFlagsResponseType, error) { - return service.SetHostStatsFlagsContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateTSIGKeyContext(ctx context.Context, request *CreateTSIGKeyRequestType) (*CreateTSIGKeyResponseType, error) { - response := new(CreateTSIGKeyResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateTSIGKey(request *CreateTSIGKeyRequestType) (*CreateTSIGKeyResponseType, error) { - return service.CreateTSIGKeyContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneTSIGKeyContext(ctx context.Context, request *GetOneTSIGKeyRequestType) (*GetOneTSIGKeyResponseType, error) { - response := new(GetOneTSIGKeyResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneTSIGKey(request *GetOneTSIGKeyRequestType) (*GetOneTSIGKeyResponseType, error) { - return service.GetOneTSIGKeyContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetTSIGKeysContext(ctx context.Context, request *GetTSIGKeysRequestType) (*GetTSIGKeysResponseType, error) { - response := new(GetTSIGKeysResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetTSIGKeys(request *GetTSIGKeysRequestType) (*GetTSIGKeysResponseType, error) { - return service.GetTSIGKeysContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateTSIGKeyContext(ctx context.Context, request *UpdateTSIGKeyRequestType) (*UpdateTSIGKeyResponseType, error) { - response := new(UpdateTSIGKeyResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateTSIGKey(request *UpdateTSIGKeyRequestType) (*UpdateTSIGKeyResponseType, error) { - return service.UpdateTSIGKeyContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneTSIGKeyContext(ctx context.Context, request *DeleteOneTSIGKeyRequestType) (*DeleteOneTSIGKeyResponseType, error) { - response := new(DeleteOneTSIGKeyResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneTSIGKey(request *DeleteOneTSIGKeyRequestType) (*DeleteOneTSIGKeyResponseType, error) { - return service.DeleteOneTSIGKeyContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateZoneContext(ctx context.Context, request *CreateZoneRequestType) (*CreateZoneResponseType, error) { - response := new(CreateZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateZone(request *CreateZoneRequestType) (*CreateZoneResponseType, error) { - return service.CreateZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneZoneContext(ctx context.Context, request *GetOneZoneRequestType) (*GetOneZoneResponseType, error) { - response := new(GetOneZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneZone(request *GetOneZoneRequestType) (*GetOneZoneResponseType, error) { - return service.GetOneZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetZonesContext(ctx context.Context, request *GetZonesRequestType) (*GetZonesResponseType, error) { - response := new(GetZonesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetZones(request *GetZonesRequestType) (*GetZonesResponseType, error) { - return service.GetZonesContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneZoneContext(ctx context.Context, request *DeleteOneZoneRequestType) (*DeleteOneZoneResponseType, error) { - response := new(DeleteOneZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneZone(request *DeleteOneZoneRequestType) (*DeleteOneZoneResponseType, error) { - return service.DeleteOneZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateSecondaryZoneContext(ctx context.Context, request *CreateSecondaryZoneRequestType) (*CreateSecondaryZoneResponseType, error) { - response := new(CreateSecondaryZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateSecondaryZone(request *CreateSecondaryZoneRequestType) (*CreateSecondaryZoneResponseType, error) { - return service.CreateSecondaryZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateSecondaryContext(ctx context.Context, request *UpdateSecondaryRequestType) (*UpdateSecondaryResponseType, error) { - response := new(UpdateSecondaryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateSecondary(request *UpdateSecondaryRequestType) (*UpdateSecondaryResponseType, error) { - return service.UpdateSecondaryContext( - context.Background(), - request, - ) -} - -func (service *dynect) ActivateSecondaryContext(ctx context.Context, request *ActivateSecondaryRequestType) (*ActivateSecondaryResponseType, error) { - response := new(ActivateSecondaryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ActivateSecondary(request *ActivateSecondaryRequestType) (*ActivateSecondaryResponseType, error) { - return service.ActivateSecondaryContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeactivateSecondaryContext(ctx context.Context, request *DeactivateSecondaryRequestType) (*DeactivateSecondaryResponseType, error) { - response := new(DeactivateSecondaryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeactivateSecondary(request *DeactivateSecondaryRequestType) (*DeactivateSecondaryResponseType, error) { - return service.DeactivateSecondaryContext( - context.Background(), - request, - ) -} - -func (service *dynect) RetransferSecondaryContext(ctx context.Context, request *RetransferSecondaryRequestType) (*RetransferSecondaryResponseType, error) { - response := new(RetransferSecondaryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RetransferSecondary(request *RetransferSecondaryRequestType) (*RetransferSecondaryResponseType, error) { - return service.RetransferSecondaryContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneSecondaryContext(ctx context.Context, request *GetOneSecondaryRequestType) (*GetOneSecondaryResponseType, error) { - response := new(GetOneSecondaryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneSecondary(request *GetOneSecondaryRequestType) (*GetOneSecondaryResponseType, error) { - return service.GetOneSecondaryContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetSecondariesContext(ctx context.Context, request *GetSecondariesRequestType) (*GetSecondariesResponseType, error) { - response := new(GetSecondariesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetSecondaries(request *GetSecondariesRequestType) (*GetSecondariesResponseType, error) { - return service.GetSecondariesContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetZoneApexContext(ctx context.Context, request *GetZoneApexRequestType) (*GetZoneApexResponseType, error) { - response := new(GetZoneApexResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetZoneApex(request *GetZoneApexRequestType) (*GetZoneApexResponseType, error) { - return service.GetZoneApexContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateARecordContext(ctx context.Context, request *CreateARecordRequestType) (*CreateARecordResponseType, error) { - response := new(CreateARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateARecord(request *CreateARecordRequestType) (*CreateARecordResponseType, error) { - return service.CreateARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneARecordContext(ctx context.Context, request *GetOneARecordRequestType) (*GetOneARecordResponseType, error) { - response := new(GetOneARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneARecord(request *GetOneARecordRequestType) (*GetOneARecordResponseType, error) { - return service.GetOneARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetARecordsContext(ctx context.Context, request *GetARecordsRequestType) (*GetARecordsResponseType, error) { - response := new(GetARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetARecords(request *GetARecordsRequestType) (*GetARecordsResponseType, error) { - return service.GetARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateARecordContext(ctx context.Context, request *UpdateARecordRequestType) (*UpdateARecordResponseType, error) { - response := new(UpdateARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateARecord(request *UpdateARecordRequestType) (*UpdateARecordResponseType, error) { - return service.UpdateARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteARecordsContext(ctx context.Context, request *DeleteARecordsRequestType) (*DeleteARecordsResponseType, error) { - response := new(DeleteARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteARecords(request *DeleteARecordsRequestType) (*DeleteARecordsResponseType, error) { - return service.DeleteARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneARecordContext(ctx context.Context, request *DeleteOneARecordRequestType) (*DeleteOneARecordResponseType, error) { - response := new(DeleteOneARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneARecord(request *DeleteOneARecordRequestType) (*DeleteOneARecordResponseType, error) { - return service.DeleteOneARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateAAAARecordContext(ctx context.Context, request *CreateAAAARecordRequestType) (*CreateAAAARecordResponseType, error) { - response := new(CreateAAAARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateAAAARecord(request *CreateAAAARecordRequestType) (*CreateAAAARecordResponseType, error) { - return service.CreateAAAARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneAAAARecordContext(ctx context.Context, request *GetOneAAAARecordRequestType) (*GetOneAAAARecordResponseType, error) { - response := new(GetOneAAAARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneAAAARecord(request *GetOneAAAARecordRequestType) (*GetOneAAAARecordResponseType, error) { - return service.GetOneAAAARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetAAAARecordsContext(ctx context.Context, request *GetAAAARecordsRequestType) (*GetAAAARecordsResponseType, error) { - response := new(GetAAAARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetAAAARecords(request *GetAAAARecordsRequestType) (*GetAAAARecordsResponseType, error) { - return service.GetAAAARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateAAAARecordContext(ctx context.Context, request *UpdateAAAARecordRequestType) (*UpdateAAAARecordResponseType, error) { - response := new(UpdateAAAARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateAAAARecord(request *UpdateAAAARecordRequestType) (*UpdateAAAARecordResponseType, error) { - return service.UpdateAAAARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteAAAARecordsContext(ctx context.Context, request *DeleteAAAARecordsRequestType) (*DeleteAAAARecordsResponseType, error) { - response := new(DeleteAAAARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteAAAARecords(request *DeleteAAAARecordsRequestType) (*DeleteAAAARecordsResponseType, error) { - return service.DeleteAAAARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneAAAARecordContext(ctx context.Context, request *DeleteOneAAAARecordRequestType) (*DeleteOneAAAARecordResponseType, error) { - response := new(DeleteOneAAAARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneAAAARecord(request *DeleteOneAAAARecordRequestType) (*DeleteOneAAAARecordResponseType, error) { - return service.DeleteOneAAAARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateALIASRecordContext(ctx context.Context, request *CreateALIASRecordRequestType) (*CreateALIASRecordResponseType, error) { - response := new(CreateALIASRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateALIASRecord(request *CreateALIASRecordRequestType) (*CreateALIASRecordResponseType, error) { - return service.CreateALIASRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneALIASRecordContext(ctx context.Context, request *GetOneALIASRecordRequestType) (*GetOneALIASRecordResponseType, error) { - response := new(GetOneALIASRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneALIASRecord(request *GetOneALIASRecordRequestType) (*GetOneALIASRecordResponseType, error) { - return service.GetOneALIASRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetALIASRecordsContext(ctx context.Context, request *GetALIASRecordsRequestType) (*GetALIASRecordsResponseType, error) { - response := new(GetALIASRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetALIASRecords(request *GetALIASRecordsRequestType) (*GetALIASRecordsResponseType, error) { - return service.GetALIASRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateALIASRecordContext(ctx context.Context, request *UpdateALIASRecordRequestType) (*UpdateALIASRecordResponseType, error) { - response := new(UpdateALIASRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateALIASRecord(request *UpdateALIASRecordRequestType) (*UpdateALIASRecordResponseType, error) { - return service.UpdateALIASRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteALIASRecordsContext(ctx context.Context, request *DeleteALIASRecordsRequestType) (*DeleteALIASRecordsResponseType, error) { - response := new(DeleteALIASRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteALIASRecords(request *DeleteALIASRecordsRequestType) (*DeleteALIASRecordsResponseType, error) { - return service.DeleteALIASRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneALIASRecordContext(ctx context.Context, request *DeleteOneALIASRecordRequestType) (*DeleteOneALIASRecordResponseType, error) { - response := new(DeleteOneALIASRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneALIASRecord(request *DeleteOneALIASRecordRequestType) (*DeleteOneALIASRecordResponseType, error) { - return service.DeleteOneALIASRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateCAARecordContext(ctx context.Context, request *CreateCAARecordRequestType) (*CreateCAARecordResponseType, error) { - response := new(CreateCAARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateCAARecord(request *CreateCAARecordRequestType) (*CreateCAARecordResponseType, error) { - return service.CreateCAARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneCAARecordContext(ctx context.Context, request *GetOneCAARecordRequestType) (*GetOneCAARecordResponseType, error) { - response := new(GetOneCAARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneCAARecord(request *GetOneCAARecordRequestType) (*GetOneCAARecordResponseType, error) { - return service.GetOneCAARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCAARecordsContext(ctx context.Context, request *GetCAARecordsRequestType) (*GetCAARecordsResponseType, error) { - response := new(GetCAARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCAARecords(request *GetCAARecordsRequestType) (*GetCAARecordsResponseType, error) { - return service.GetCAARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateCAARecordContext(ctx context.Context, request *UpdateCAARecordRequestType) (*UpdateCAARecordResponseType, error) { - response := new(UpdateCAARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateCAARecord(request *UpdateCAARecordRequestType) (*UpdateCAARecordResponseType, error) { - return service.UpdateCAARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteCAARecordsContext(ctx context.Context, request *DeleteCAARecordsRequestType) (*DeleteCAARecordsResponseType, error) { - response := new(DeleteCAARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteCAARecords(request *DeleteCAARecordsRequestType) (*DeleteCAARecordsResponseType, error) { - return service.DeleteCAARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneCAARecordContext(ctx context.Context, request *DeleteOneCAARecordRequestType) (*DeleteOneCAARecordResponseType, error) { - response := new(DeleteOneCAARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneCAARecord(request *DeleteOneCAARecordRequestType) (*DeleteOneCAARecordResponseType, error) { - return service.DeleteOneCAARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateCDNSKEYRecordContext(ctx context.Context, request *CreateCDNSKEYRecordRequestType) (*CreateCDNSKEYRecordResponseType, error) { - response := new(CreateCDNSKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateCDNSKEYRecord(request *CreateCDNSKEYRecordRequestType) (*CreateCDNSKEYRecordResponseType, error) { - return service.CreateCDNSKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneCDNSKEYRecordContext(ctx context.Context, request *GetOneCDNSKEYRecordRequestType) (*GetOneCDNSKEYRecordResponseType, error) { - response := new(GetOneCDNSKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneCDNSKEYRecord(request *GetOneCDNSKEYRecordRequestType) (*GetOneCDNSKEYRecordResponseType, error) { - return service.GetOneCDNSKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCDNSKEYRecordsContext(ctx context.Context, request *GetCDNSKEYRecordsRequestType) (*GetCDNSKEYRecordsResponseType, error) { - response := new(GetCDNSKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCDNSKEYRecords(request *GetCDNSKEYRecordsRequestType) (*GetCDNSKEYRecordsResponseType, error) { - return service.GetCDNSKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateCDNSKEYRecordContext(ctx context.Context, request *UpdateCDNSKEYRecordRequestType) (*UpdateCDNSKEYRecordResponseType, error) { - response := new(UpdateCDNSKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateCDNSKEYRecord(request *UpdateCDNSKEYRecordRequestType) (*UpdateCDNSKEYRecordResponseType, error) { - return service.UpdateCDNSKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteCDNSKEYRecordsContext(ctx context.Context, request *DeleteCDNSKEYRecordsRequestType) (*DeleteCDNSKEYRecordsResponseType, error) { - response := new(DeleteCDNSKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteCDNSKEYRecords(request *DeleteCDNSKEYRecordsRequestType) (*DeleteCDNSKEYRecordsResponseType, error) { - return service.DeleteCDNSKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneCDNSKEYRecordContext(ctx context.Context, request *DeleteOneCDNSKEYRecordRequestType) (*DeleteOneCDNSKEYRecordResponseType, error) { - response := new(DeleteOneCDNSKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneCDNSKEYRecord(request *DeleteOneCDNSKEYRecordRequestType) (*DeleteOneCDNSKEYRecordResponseType, error) { - return service.DeleteOneCDNSKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateCDSRecordContext(ctx context.Context, request *CreateCDSRecordRequestType) (*CreateCDSRecordResponseType, error) { - response := new(CreateCDSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateCDSRecord(request *CreateCDSRecordRequestType) (*CreateCDSRecordResponseType, error) { - return service.CreateCDSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneCDSRecordContext(ctx context.Context, request *GetOneCDSRecordRequestType) (*GetOneCDSRecordResponseType, error) { - response := new(GetOneCDSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneCDSRecord(request *GetOneCDSRecordRequestType) (*GetOneCDSRecordResponseType, error) { - return service.GetOneCDSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCDSRecordsContext(ctx context.Context, request *GetCDSRecordsRequestType) (*GetCDSRecordsResponseType, error) { - response := new(GetCDSRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCDSRecords(request *GetCDSRecordsRequestType) (*GetCDSRecordsResponseType, error) { - return service.GetCDSRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateCDSRecordContext(ctx context.Context, request *UpdateCDSRecordRequestType) (*UpdateCDSRecordResponseType, error) { - response := new(UpdateCDSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateCDSRecord(request *UpdateCDSRecordRequestType) (*UpdateCDSRecordResponseType, error) { - return service.UpdateCDSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteCDSRecordsContext(ctx context.Context, request *DeleteCDSRecordsRequestType) (*DeleteCDSRecordsResponseType, error) { - response := new(DeleteCDSRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteCDSRecords(request *DeleteCDSRecordsRequestType) (*DeleteCDSRecordsResponseType, error) { - return service.DeleteCDSRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneCDSRecordContext(ctx context.Context, request *DeleteOneCDSRecordRequestType) (*DeleteOneCDSRecordResponseType, error) { - response := new(DeleteOneCDSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneCDSRecord(request *DeleteOneCDSRecordRequestType) (*DeleteOneCDSRecordResponseType, error) { - return service.DeleteOneCDSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateCERTRecordContext(ctx context.Context, request *CreateCERTRecordRequestType) (*CreateCERTRecordResponseType, error) { - response := new(CreateCERTRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateCERTRecord(request *CreateCERTRecordRequestType) (*CreateCERTRecordResponseType, error) { - return service.CreateCERTRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneCERTRecordContext(ctx context.Context, request *GetOneCERTRecordRequestType) (*GetOneCERTRecordResponseType, error) { - response := new(GetOneCERTRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneCERTRecord(request *GetOneCERTRecordRequestType) (*GetOneCERTRecordResponseType, error) { - return service.GetOneCERTRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCERTRecordsContext(ctx context.Context, request *GetCERTRecordsRequestType) (*GetCERTRecordsResponseType, error) { - response := new(GetCERTRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCERTRecords(request *GetCERTRecordsRequestType) (*GetCERTRecordsResponseType, error) { - return service.GetCERTRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateCERTRecordContext(ctx context.Context, request *UpdateCERTRecordRequestType) (*UpdateCERTRecordResponseType, error) { - response := new(UpdateCERTRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateCERTRecord(request *UpdateCERTRecordRequestType) (*UpdateCERTRecordResponseType, error) { - return service.UpdateCERTRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteCERTRecordsContext(ctx context.Context, request *DeleteCERTRecordsRequestType) (*DeleteCERTRecordsResponseType, error) { - response := new(DeleteCERTRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteCERTRecords(request *DeleteCERTRecordsRequestType) (*DeleteCERTRecordsResponseType, error) { - return service.DeleteCERTRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneCERTRecordContext(ctx context.Context, request *DeleteOneCERTRecordRequestType) (*DeleteOneCERTRecordResponseType, error) { - response := new(DeleteOneCERTRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneCERTRecord(request *DeleteOneCERTRecordRequestType) (*DeleteOneCERTRecordResponseType, error) { - return service.DeleteOneCERTRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateCNAMERecordContext(ctx context.Context, request *CreateCNAMERecordRequestType) (*CreateCNAMERecordResponseType, error) { - response := new(CreateCNAMERecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateCNAMERecord(request *CreateCNAMERecordRequestType) (*CreateCNAMERecordResponseType, error) { - return service.CreateCNAMERecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneCNAMERecordContext(ctx context.Context, request *GetOneCNAMERecordRequestType) (*GetOneCNAMERecordResponseType, error) { - response := new(GetOneCNAMERecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneCNAMERecord(request *GetOneCNAMERecordRequestType) (*GetOneCNAMERecordResponseType, error) { - return service.GetOneCNAMERecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCNAMERecordsContext(ctx context.Context, request *GetCNAMERecordsRequestType) (*GetCNAMERecordsResponseType, error) { - response := new(GetCNAMERecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCNAMERecords(request *GetCNAMERecordsRequestType) (*GetCNAMERecordsResponseType, error) { - return service.GetCNAMERecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateCNAMERecordContext(ctx context.Context, request *UpdateCNAMERecordRequestType) (*UpdateCNAMERecordResponseType, error) { - response := new(UpdateCNAMERecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateCNAMERecord(request *UpdateCNAMERecordRequestType) (*UpdateCNAMERecordResponseType, error) { - return service.UpdateCNAMERecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteCNAMERecordsContext(ctx context.Context, request *DeleteCNAMERecordsRequestType) (*DeleteCNAMERecordsResponseType, error) { - response := new(DeleteCNAMERecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteCNAMERecords(request *DeleteCNAMERecordsRequestType) (*DeleteCNAMERecordsResponseType, error) { - return service.DeleteCNAMERecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneCNAMERecordContext(ctx context.Context, request *DeleteOneCNAMERecordRequestType) (*DeleteOneCNAMERecordResponseType, error) { - response := new(DeleteOneCNAMERecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneCNAMERecord(request *DeleteOneCNAMERecordRequestType) (*DeleteOneCNAMERecordResponseType, error) { - return service.DeleteOneCNAMERecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateCSYNCRecordContext(ctx context.Context, request *CreateCSYNCRecordRequestType) (*CreateCSYNCRecordResponseType, error) { - response := new(CreateCSYNCRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateCSYNCRecord(request *CreateCSYNCRecordRequestType) (*CreateCSYNCRecordResponseType, error) { - return service.CreateCSYNCRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneCSYNCRecordContext(ctx context.Context, request *GetOneCSYNCRecordRequestType) (*GetOneCSYNCRecordResponseType, error) { - response := new(GetOneCSYNCRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneCSYNCRecord(request *GetOneCSYNCRecordRequestType) (*GetOneCSYNCRecordResponseType, error) { - return service.GetOneCSYNCRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCSYNCRecordsContext(ctx context.Context, request *GetCSYNCRecordsRequestType) (*GetCSYNCRecordsResponseType, error) { - response := new(GetCSYNCRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCSYNCRecords(request *GetCSYNCRecordsRequestType) (*GetCSYNCRecordsResponseType, error) { - return service.GetCSYNCRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateCSYNCRecordContext(ctx context.Context, request *UpdateCSYNCRecordRequestType) (*UpdateCSYNCRecordResponseType, error) { - response := new(UpdateCSYNCRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateCSYNCRecord(request *UpdateCSYNCRecordRequestType) (*UpdateCSYNCRecordResponseType, error) { - return service.UpdateCSYNCRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteCSYNCRecordsContext(ctx context.Context, request *DeleteCSYNCRecordsRequestType) (*DeleteCSYNCRecordsResponseType, error) { - response := new(DeleteCSYNCRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteCSYNCRecords(request *DeleteCSYNCRecordsRequestType) (*DeleteCSYNCRecordsResponseType, error) { - return service.DeleteCSYNCRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneCSYNCRecordContext(ctx context.Context, request *DeleteOneCSYNCRecordRequestType) (*DeleteOneCSYNCRecordResponseType, error) { - response := new(DeleteOneCSYNCRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneCSYNCRecord(request *DeleteOneCSYNCRecordRequestType) (*DeleteOneCSYNCRecordResponseType, error) { - return service.DeleteOneCSYNCRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDHCIDRecordContext(ctx context.Context, request *CreateDHCIDRecordRequestType) (*CreateDHCIDRecordResponseType, error) { - response := new(CreateDHCIDRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDHCIDRecord(request *CreateDHCIDRecordRequestType) (*CreateDHCIDRecordResponseType, error) { - return service.CreateDHCIDRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDHCIDRecordContext(ctx context.Context, request *GetOneDHCIDRecordRequestType) (*GetOneDHCIDRecordResponseType, error) { - response := new(GetOneDHCIDRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDHCIDRecord(request *GetOneDHCIDRecordRequestType) (*GetOneDHCIDRecordResponseType, error) { - return service.GetOneDHCIDRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDHCIDRecordsContext(ctx context.Context, request *GetDHCIDRecordsRequestType) (*GetDHCIDRecordsResponseType, error) { - response := new(GetDHCIDRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDHCIDRecords(request *GetDHCIDRecordsRequestType) (*GetDHCIDRecordsResponseType, error) { - return service.GetDHCIDRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDHCIDRecordContext(ctx context.Context, request *UpdateDHCIDRecordRequestType) (*UpdateDHCIDRecordResponseType, error) { - response := new(UpdateDHCIDRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDHCIDRecord(request *UpdateDHCIDRecordRequestType) (*UpdateDHCIDRecordResponseType, error) { - return service.UpdateDHCIDRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteDHCIDRecordsContext(ctx context.Context, request *DeleteDHCIDRecordsRequestType) (*DeleteDHCIDRecordsResponseType, error) { - response := new(DeleteDHCIDRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteDHCIDRecords(request *DeleteDHCIDRecordsRequestType) (*DeleteDHCIDRecordsResponseType, error) { - return service.DeleteDHCIDRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDHCIDRecordContext(ctx context.Context, request *DeleteOneDHCIDRecordRequestType) (*DeleteOneDHCIDRecordResponseType, error) { - response := new(DeleteOneDHCIDRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDHCIDRecord(request *DeleteOneDHCIDRecordRequestType) (*DeleteOneDHCIDRecordResponseType, error) { - return service.DeleteOneDHCIDRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDNAMERecordContext(ctx context.Context, request *CreateDNAMERecordRequestType) (*CreateDNAMERecordResponseType, error) { - response := new(CreateDNAMERecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDNAMERecord(request *CreateDNAMERecordRequestType) (*CreateDNAMERecordResponseType, error) { - return service.CreateDNAMERecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDNAMERecordContext(ctx context.Context, request *GetOneDNAMERecordRequestType) (*GetOneDNAMERecordResponseType, error) { - response := new(GetOneDNAMERecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDNAMERecord(request *GetOneDNAMERecordRequestType) (*GetOneDNAMERecordResponseType, error) { - return service.GetOneDNAMERecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDNAMERecordsContext(ctx context.Context, request *GetDNAMERecordsRequestType) (*GetDNAMERecordsResponseType, error) { - response := new(GetDNAMERecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDNAMERecords(request *GetDNAMERecordsRequestType) (*GetDNAMERecordsResponseType, error) { - return service.GetDNAMERecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDNAMERecordContext(ctx context.Context, request *UpdateDNAMERecordRequestType) (*UpdateDNAMERecordResponseType, error) { - response := new(UpdateDNAMERecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDNAMERecord(request *UpdateDNAMERecordRequestType) (*UpdateDNAMERecordResponseType, error) { - return service.UpdateDNAMERecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteDNAMERecordsContext(ctx context.Context, request *DeleteDNAMERecordsRequestType) (*DeleteDNAMERecordsResponseType, error) { - response := new(DeleteDNAMERecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteDNAMERecords(request *DeleteDNAMERecordsRequestType) (*DeleteDNAMERecordsResponseType, error) { - return service.DeleteDNAMERecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDNAMERecordContext(ctx context.Context, request *DeleteOneDNAMERecordRequestType) (*DeleteOneDNAMERecordResponseType, error) { - response := new(DeleteOneDNAMERecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDNAMERecord(request *DeleteOneDNAMERecordRequestType) (*DeleteOneDNAMERecordResponseType, error) { - return service.DeleteOneDNAMERecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDNSKEYRecordContext(ctx context.Context, request *CreateDNSKEYRecordRequestType) (*CreateDNSKEYRecordResponseType, error) { - response := new(CreateDNSKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDNSKEYRecord(request *CreateDNSKEYRecordRequestType) (*CreateDNSKEYRecordResponseType, error) { - return service.CreateDNSKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDNSKEYRecordContext(ctx context.Context, request *GetOneDNSKEYRecordRequestType) (*GetOneDNSKEYRecordResponseType, error) { - response := new(GetOneDNSKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDNSKEYRecord(request *GetOneDNSKEYRecordRequestType) (*GetOneDNSKEYRecordResponseType, error) { - return service.GetOneDNSKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDNSKEYRecordsContext(ctx context.Context, request *GetDNSKEYRecordsRequestType) (*GetDNSKEYRecordsResponseType, error) { - response := new(GetDNSKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDNSKEYRecords(request *GetDNSKEYRecordsRequestType) (*GetDNSKEYRecordsResponseType, error) { - return service.GetDNSKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDNSKEYRecordContext(ctx context.Context, request *UpdateDNSKEYRecordRequestType) (*UpdateDNSKEYRecordResponseType, error) { - response := new(UpdateDNSKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDNSKEYRecord(request *UpdateDNSKEYRecordRequestType) (*UpdateDNSKEYRecordResponseType, error) { - return service.UpdateDNSKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteDNSKEYRecordsContext(ctx context.Context, request *DeleteDNSKEYRecordsRequestType) (*DeleteDNSKEYRecordsResponseType, error) { - response := new(DeleteDNSKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteDNSKEYRecords(request *DeleteDNSKEYRecordsRequestType) (*DeleteDNSKEYRecordsResponseType, error) { - return service.DeleteDNSKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDNSKEYRecordContext(ctx context.Context, request *DeleteOneDNSKEYRecordRequestType) (*DeleteOneDNSKEYRecordResponseType, error) { - response := new(DeleteOneDNSKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDNSKEYRecord(request *DeleteOneDNSKEYRecordRequestType) (*DeleteOneDNSKEYRecordResponseType, error) { - return service.DeleteOneDNSKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDSRecordContext(ctx context.Context, request *CreateDSRecordRequestType) (*CreateDSRecordResponseType, error) { - response := new(CreateDSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDSRecord(request *CreateDSRecordRequestType) (*CreateDSRecordResponseType, error) { - return service.CreateDSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDSRecordContext(ctx context.Context, request *GetOneDSRecordRequestType) (*GetOneDSRecordResponseType, error) { - response := new(GetOneDSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDSRecord(request *GetOneDSRecordRequestType) (*GetOneDSRecordResponseType, error) { - return service.GetOneDSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDSRecordsContext(ctx context.Context, request *GetDSRecordsRequestType) (*GetDSRecordsResponseType, error) { - response := new(GetDSRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDSRecords(request *GetDSRecordsRequestType) (*GetDSRecordsResponseType, error) { - return service.GetDSRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDSRecordContext(ctx context.Context, request *UpdateDSRecordRequestType) (*UpdateDSRecordResponseType, error) { - response := new(UpdateDSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDSRecord(request *UpdateDSRecordRequestType) (*UpdateDSRecordResponseType, error) { - return service.UpdateDSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteDSRecordsContext(ctx context.Context, request *DeleteDSRecordsRequestType) (*DeleteDSRecordsResponseType, error) { - response := new(DeleteDSRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteDSRecords(request *DeleteDSRecordsRequestType) (*DeleteDSRecordsResponseType, error) { - return service.DeleteDSRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDSRecordContext(ctx context.Context, request *DeleteOneDSRecordRequestType) (*DeleteOneDSRecordResponseType, error) { - response := new(DeleteOneDSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDSRecord(request *DeleteOneDSRecordRequestType) (*DeleteOneDSRecordResponseType, error) { - return service.DeleteOneDSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateIPSECKEYRecordContext(ctx context.Context, request *CreateIPSECKEYRecordRequestType) (*CreateIPSECKEYRecordResponseType, error) { - response := new(CreateIPSECKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateIPSECKEYRecord(request *CreateIPSECKEYRecordRequestType) (*CreateIPSECKEYRecordResponseType, error) { - return service.CreateIPSECKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneIPSECKEYRecordContext(ctx context.Context, request *GetOneIPSECKEYRecordRequestType) (*GetOneIPSECKEYRecordResponseType, error) { - response := new(GetOneIPSECKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneIPSECKEYRecord(request *GetOneIPSECKEYRecordRequestType) (*GetOneIPSECKEYRecordResponseType, error) { - return service.GetOneIPSECKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetIPSECKEYRecordsContext(ctx context.Context, request *GetIPSECKEYRecordsRequestType) (*GetIPSECKEYRecordsResponseType, error) { - response := new(GetIPSECKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetIPSECKEYRecords(request *GetIPSECKEYRecordsRequestType) (*GetIPSECKEYRecordsResponseType, error) { - return service.GetIPSECKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateIPSECKEYRecordContext(ctx context.Context, request *UpdateIPSECKEYRecordRequestType) (*UpdateIPSECKEYRecordResponseType, error) { - response := new(UpdateIPSECKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateIPSECKEYRecord(request *UpdateIPSECKEYRecordRequestType) (*UpdateIPSECKEYRecordResponseType, error) { - return service.UpdateIPSECKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteIPSECKEYRecordsContext(ctx context.Context, request *DeleteIPSECKEYRecordsRequestType) (*DeleteIPSECKEYRecordsResponseType, error) { - response := new(DeleteIPSECKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteIPSECKEYRecords(request *DeleteIPSECKEYRecordsRequestType) (*DeleteIPSECKEYRecordsResponseType, error) { - return service.DeleteIPSECKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneIPSECKEYRecordContext(ctx context.Context, request *DeleteOneIPSECKEYRecordRequestType) (*DeleteOneIPSECKEYRecordResponseType, error) { - response := new(DeleteOneIPSECKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneIPSECKEYRecord(request *DeleteOneIPSECKEYRecordRequestType) (*DeleteOneIPSECKEYRecordResponseType, error) { - return service.DeleteOneIPSECKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateKEYRecordContext(ctx context.Context, request *CreateKEYRecordRequestType) (*CreateKEYRecordResponseType, error) { - response := new(CreateKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateKEYRecord(request *CreateKEYRecordRequestType) (*CreateKEYRecordResponseType, error) { - return service.CreateKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneKEYRecordContext(ctx context.Context, request *GetOneKEYRecordRequestType) (*GetOneKEYRecordResponseType, error) { - response := new(GetOneKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneKEYRecord(request *GetOneKEYRecordRequestType) (*GetOneKEYRecordResponseType, error) { - return service.GetOneKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetKEYRecordsContext(ctx context.Context, request *GetKEYRecordsRequestType) (*GetKEYRecordsResponseType, error) { - response := new(GetKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetKEYRecords(request *GetKEYRecordsRequestType) (*GetKEYRecordsResponseType, error) { - return service.GetKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateKEYRecordContext(ctx context.Context, request *UpdateKEYRecordRequestType) (*UpdateKEYRecordResponseType, error) { - response := new(UpdateKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateKEYRecord(request *UpdateKEYRecordRequestType) (*UpdateKEYRecordResponseType, error) { - return service.UpdateKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteKEYRecordsContext(ctx context.Context, request *DeleteKEYRecordsRequestType) (*DeleteKEYRecordsResponseType, error) { - response := new(DeleteKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteKEYRecords(request *DeleteKEYRecordsRequestType) (*DeleteKEYRecordsResponseType, error) { - return service.DeleteKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneKEYRecordContext(ctx context.Context, request *DeleteOneKEYRecordRequestType) (*DeleteOneKEYRecordResponseType, error) { - response := new(DeleteOneKEYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneKEYRecord(request *DeleteOneKEYRecordRequestType) (*DeleteOneKEYRecordResponseType, error) { - return service.DeleteOneKEYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateKXRecordContext(ctx context.Context, request *CreateKXRecordRequestType) (*CreateKXRecordResponseType, error) { - response := new(CreateKXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateKXRecord(request *CreateKXRecordRequestType) (*CreateKXRecordResponseType, error) { - return service.CreateKXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneKXRecordContext(ctx context.Context, request *GetOneKXRecordRequestType) (*GetOneKXRecordResponseType, error) { - response := new(GetOneKXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneKXRecord(request *GetOneKXRecordRequestType) (*GetOneKXRecordResponseType, error) { - return service.GetOneKXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetKXRecordsContext(ctx context.Context, request *GetKXRecordsRequestType) (*GetKXRecordsResponseType, error) { - response := new(GetKXRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetKXRecords(request *GetKXRecordsRequestType) (*GetKXRecordsResponseType, error) { - return service.GetKXRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateKXRecordContext(ctx context.Context, request *UpdateKXRecordRequestType) (*UpdateKXRecordResponseType, error) { - response := new(UpdateKXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateKXRecord(request *UpdateKXRecordRequestType) (*UpdateKXRecordResponseType, error) { - return service.UpdateKXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteKXRecordsContext(ctx context.Context, request *DeleteKXRecordsRequestType) (*DeleteKXRecordsResponseType, error) { - response := new(DeleteKXRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteKXRecords(request *DeleteKXRecordsRequestType) (*DeleteKXRecordsResponseType, error) { - return service.DeleteKXRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneKXRecordContext(ctx context.Context, request *DeleteOneKXRecordRequestType) (*DeleteOneKXRecordResponseType, error) { - response := new(DeleteOneKXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneKXRecord(request *DeleteOneKXRecordRequestType) (*DeleteOneKXRecordResponseType, error) { - return service.DeleteOneKXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateLOCRecordContext(ctx context.Context, request *CreateLOCRecordRequestType) (*CreateLOCRecordResponseType, error) { - response := new(CreateLOCRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateLOCRecord(request *CreateLOCRecordRequestType) (*CreateLOCRecordResponseType, error) { - return service.CreateLOCRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneLOCRecordContext(ctx context.Context, request *GetOneLOCRecordRequestType) (*GetOneLOCRecordResponseType, error) { - response := new(GetOneLOCRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneLOCRecord(request *GetOneLOCRecordRequestType) (*GetOneLOCRecordResponseType, error) { - return service.GetOneLOCRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetLOCRecordsContext(ctx context.Context, request *GetLOCRecordsRequestType) (*GetLOCRecordsResponseType, error) { - response := new(GetLOCRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetLOCRecords(request *GetLOCRecordsRequestType) (*GetLOCRecordsResponseType, error) { - return service.GetLOCRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateLOCRecordContext(ctx context.Context, request *UpdateLOCRecordRequestType) (*UpdateLOCRecordResponseType, error) { - response := new(UpdateLOCRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateLOCRecord(request *UpdateLOCRecordRequestType) (*UpdateLOCRecordResponseType, error) { - return service.UpdateLOCRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteLOCRecordsContext(ctx context.Context, request *DeleteLOCRecordsRequestType) (*DeleteLOCRecordsResponseType, error) { - response := new(DeleteLOCRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteLOCRecords(request *DeleteLOCRecordsRequestType) (*DeleteLOCRecordsResponseType, error) { - return service.DeleteLOCRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneLOCRecordContext(ctx context.Context, request *DeleteOneLOCRecordRequestType) (*DeleteOneLOCRecordResponseType, error) { - response := new(DeleteOneLOCRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneLOCRecord(request *DeleteOneLOCRecordRequestType) (*DeleteOneLOCRecordResponseType, error) { - return service.DeleteOneLOCRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateMXRecordContext(ctx context.Context, request *CreateMXRecordRequestType) (*CreateMXRecordResponseType, error) { - response := new(CreateMXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateMXRecord(request *CreateMXRecordRequestType) (*CreateMXRecordResponseType, error) { - return service.CreateMXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneMXRecordContext(ctx context.Context, request *GetOneMXRecordRequestType) (*GetOneMXRecordResponseType, error) { - response := new(GetOneMXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneMXRecord(request *GetOneMXRecordRequestType) (*GetOneMXRecordResponseType, error) { - return service.GetOneMXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetMXRecordsContext(ctx context.Context, request *GetMXRecordsRequestType) (*GetMXRecordsResponseType, error) { - response := new(GetMXRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetMXRecords(request *GetMXRecordsRequestType) (*GetMXRecordsResponseType, error) { - return service.GetMXRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateMXRecordContext(ctx context.Context, request *UpdateMXRecordRequestType) (*UpdateMXRecordResponseType, error) { - response := new(UpdateMXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateMXRecord(request *UpdateMXRecordRequestType) (*UpdateMXRecordResponseType, error) { - return service.UpdateMXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteMXRecordsContext(ctx context.Context, request *DeleteMXRecordsRequestType) (*DeleteMXRecordsResponseType, error) { - response := new(DeleteMXRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteMXRecords(request *DeleteMXRecordsRequestType) (*DeleteMXRecordsResponseType, error) { - return service.DeleteMXRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneMXRecordContext(ctx context.Context, request *DeleteOneMXRecordRequestType) (*DeleteOneMXRecordResponseType, error) { - response := new(DeleteOneMXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneMXRecord(request *DeleteOneMXRecordRequestType) (*DeleteOneMXRecordResponseType, error) { - return service.DeleteOneMXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateNAPTRRecordContext(ctx context.Context, request *CreateNAPTRRecordRequestType) (*CreateNAPTRRecordResponseType, error) { - response := new(CreateNAPTRRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateNAPTRRecord(request *CreateNAPTRRecordRequestType) (*CreateNAPTRRecordResponseType, error) { - return service.CreateNAPTRRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneNAPTRRecordContext(ctx context.Context, request *GetOneNAPTRRecordRequestType) (*GetOneNAPTRRecordResponseType, error) { - response := new(GetOneNAPTRRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneNAPTRRecord(request *GetOneNAPTRRecordRequestType) (*GetOneNAPTRRecordResponseType, error) { - return service.GetOneNAPTRRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetNAPTRRecordsContext(ctx context.Context, request *GetNAPTRRecordsRequestType) (*GetNAPTRRecordsResponseType, error) { - response := new(GetNAPTRRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetNAPTRRecords(request *GetNAPTRRecordsRequestType) (*GetNAPTRRecordsResponseType, error) { - return service.GetNAPTRRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateNAPTRRecordContext(ctx context.Context, request *UpdateNAPTRRecordRequestType) (*UpdateNAPTRRecordResponseType, error) { - response := new(UpdateNAPTRRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateNAPTRRecord(request *UpdateNAPTRRecordRequestType) (*UpdateNAPTRRecordResponseType, error) { - return service.UpdateNAPTRRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteNAPTRRecordsContext(ctx context.Context, request *DeleteNAPTRRecordsRequestType) (*DeleteNAPTRRecordsResponseType, error) { - response := new(DeleteNAPTRRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteNAPTRRecords(request *DeleteNAPTRRecordsRequestType) (*DeleteNAPTRRecordsResponseType, error) { - return service.DeleteNAPTRRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneNAPTRRecordContext(ctx context.Context, request *DeleteOneNAPTRRecordRequestType) (*DeleteOneNAPTRRecordResponseType, error) { - response := new(DeleteOneNAPTRRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneNAPTRRecord(request *DeleteOneNAPTRRecordRequestType) (*DeleteOneNAPTRRecordResponseType, error) { - return service.DeleteOneNAPTRRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateNSAPRecordContext(ctx context.Context, request *CreateNSAPRecordRequestType) (*CreateNSAPRecordResponseType, error) { - response := new(CreateNSAPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateNSAPRecord(request *CreateNSAPRecordRequestType) (*CreateNSAPRecordResponseType, error) { - return service.CreateNSAPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneNSAPRecordContext(ctx context.Context, request *GetOneNSAPRecordRequestType) (*GetOneNSAPRecordResponseType, error) { - response := new(GetOneNSAPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneNSAPRecord(request *GetOneNSAPRecordRequestType) (*GetOneNSAPRecordResponseType, error) { - return service.GetOneNSAPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetNSAPRecordsContext(ctx context.Context, request *GetNSAPRecordsRequestType) (*GetNSAPRecordsResponseType, error) { - response := new(GetNSAPRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetNSAPRecords(request *GetNSAPRecordsRequestType) (*GetNSAPRecordsResponseType, error) { - return service.GetNSAPRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateNSAPRecordContext(ctx context.Context, request *UpdateNSAPRecordRequestType) (*UpdateNSAPRecordResponseType, error) { - response := new(UpdateNSAPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateNSAPRecord(request *UpdateNSAPRecordRequestType) (*UpdateNSAPRecordResponseType, error) { - return service.UpdateNSAPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteNSAPRecordsContext(ctx context.Context, request *DeleteNSAPRecordsRequestType) (*DeleteNSAPRecordsResponseType, error) { - response := new(DeleteNSAPRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteNSAPRecords(request *DeleteNSAPRecordsRequestType) (*DeleteNSAPRecordsResponseType, error) { - return service.DeleteNSAPRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneNSAPRecordContext(ctx context.Context, request *DeleteOneNSAPRecordRequestType) (*DeleteOneNSAPRecordResponseType, error) { - response := new(DeleteOneNSAPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneNSAPRecord(request *DeleteOneNSAPRecordRequestType) (*DeleteOneNSAPRecordResponseType, error) { - return service.DeleteOneNSAPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreatePOLICYRecordContext(ctx context.Context, request *CreatePOLICYRecordRequestType) (*CreatePOLICYRecordResponseType, error) { - response := new(CreatePOLICYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreatePOLICYRecord(request *CreatePOLICYRecordRequestType) (*CreatePOLICYRecordResponseType, error) { - return service.CreatePOLICYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOnePOLICYRecordContext(ctx context.Context, request *GetOnePOLICYRecordRequestType) (*GetOnePOLICYRecordResponseType, error) { - response := new(GetOnePOLICYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOnePOLICYRecord(request *GetOnePOLICYRecordRequestType) (*GetOnePOLICYRecordResponseType, error) { - return service.GetOnePOLICYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetPOLICYRecordsContext(ctx context.Context, request *GetPOLICYRecordsRequestType) (*GetPOLICYRecordsResponseType, error) { - response := new(GetPOLICYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetPOLICYRecords(request *GetPOLICYRecordsRequestType) (*GetPOLICYRecordsResponseType, error) { - return service.GetPOLICYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdatePOLICYRecordContext(ctx context.Context, request *UpdatePOLICYRecordRequestType) (*UpdatePOLICYRecordResponseType, error) { - response := new(UpdatePOLICYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdatePOLICYRecord(request *UpdatePOLICYRecordRequestType) (*UpdatePOLICYRecordResponseType, error) { - return service.UpdatePOLICYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeletePOLICYRecordsContext(ctx context.Context, request *DeletePOLICYRecordsRequestType) (*DeletePOLICYRecordsResponseType, error) { - response := new(DeletePOLICYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeletePOLICYRecords(request *DeletePOLICYRecordsRequestType) (*DeletePOLICYRecordsResponseType, error) { - return service.DeletePOLICYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOnePOLICYRecordContext(ctx context.Context, request *DeleteOnePOLICYRecordRequestType) (*DeleteOnePOLICYRecordResponseType, error) { - response := new(DeleteOnePOLICYRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOnePOLICYRecord(request *DeleteOnePOLICYRecordRequestType) (*DeleteOnePOLICYRecordResponseType, error) { - return service.DeleteOnePOLICYRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreatePTRRecordContext(ctx context.Context, request *CreatePTRRecordRequestType) (*CreatePTRRecordResponseType, error) { - response := new(CreatePTRRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreatePTRRecord(request *CreatePTRRecordRequestType) (*CreatePTRRecordResponseType, error) { - return service.CreatePTRRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOnePTRRecordContext(ctx context.Context, request *GetOnePTRRecordRequestType) (*GetOnePTRRecordResponseType, error) { - response := new(GetOnePTRRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOnePTRRecord(request *GetOnePTRRecordRequestType) (*GetOnePTRRecordResponseType, error) { - return service.GetOnePTRRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetPTRRecordsContext(ctx context.Context, request *GetPTRRecordsRequestType) (*GetPTRRecordsResponseType, error) { - response := new(GetPTRRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetPTRRecords(request *GetPTRRecordsRequestType) (*GetPTRRecordsResponseType, error) { - return service.GetPTRRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdatePTRRecordContext(ctx context.Context, request *UpdatePTRRecordRequestType) (*UpdatePTRRecordResponseType, error) { - response := new(UpdatePTRRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdatePTRRecord(request *UpdatePTRRecordRequestType) (*UpdatePTRRecordResponseType, error) { - return service.UpdatePTRRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeletePTRRecordsContext(ctx context.Context, request *DeletePTRRecordsRequestType) (*DeletePTRRecordsResponseType, error) { - response := new(DeletePTRRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeletePTRRecords(request *DeletePTRRecordsRequestType) (*DeletePTRRecordsResponseType, error) { - return service.DeletePTRRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOnePTRRecordContext(ctx context.Context, request *DeleteOnePTRRecordRequestType) (*DeleteOnePTRRecordResponseType, error) { - response := new(DeleteOnePTRRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOnePTRRecord(request *DeleteOnePTRRecordRequestType) (*DeleteOnePTRRecordResponseType, error) { - return service.DeleteOnePTRRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreatePXRecordContext(ctx context.Context, request *CreatePXRecordRequestType) (*CreatePXRecordResponseType, error) { - response := new(CreatePXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreatePXRecord(request *CreatePXRecordRequestType) (*CreatePXRecordResponseType, error) { - return service.CreatePXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOnePXRecordContext(ctx context.Context, request *GetOnePXRecordRequestType) (*GetOnePXRecordResponseType, error) { - response := new(GetOnePXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOnePXRecord(request *GetOnePXRecordRequestType) (*GetOnePXRecordResponseType, error) { - return service.GetOnePXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetPXRecordsContext(ctx context.Context, request *GetPXRecordsRequestType) (*GetPXRecordsResponseType, error) { - response := new(GetPXRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetPXRecords(request *GetPXRecordsRequestType) (*GetPXRecordsResponseType, error) { - return service.GetPXRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdatePXRecordContext(ctx context.Context, request *UpdatePXRecordRequestType) (*UpdatePXRecordResponseType, error) { - response := new(UpdatePXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdatePXRecord(request *UpdatePXRecordRequestType) (*UpdatePXRecordResponseType, error) { - return service.UpdatePXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeletePXRecordsContext(ctx context.Context, request *DeletePXRecordsRequestType) (*DeletePXRecordsResponseType, error) { - response := new(DeletePXRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeletePXRecords(request *DeletePXRecordsRequestType) (*DeletePXRecordsResponseType, error) { - return service.DeletePXRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOnePXRecordContext(ctx context.Context, request *DeleteOnePXRecordRequestType) (*DeleteOnePXRecordResponseType, error) { - response := new(DeleteOnePXRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOnePXRecord(request *DeleteOnePXRecordRequestType) (*DeleteOnePXRecordResponseType, error) { - return service.DeleteOnePXRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateRPRecordContext(ctx context.Context, request *CreateRPRecordRequestType) (*CreateRPRecordResponseType, error) { - response := new(CreateRPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateRPRecord(request *CreateRPRecordRequestType) (*CreateRPRecordResponseType, error) { - return service.CreateRPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneRPRecordContext(ctx context.Context, request *GetOneRPRecordRequestType) (*GetOneRPRecordResponseType, error) { - response := new(GetOneRPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneRPRecord(request *GetOneRPRecordRequestType) (*GetOneRPRecordResponseType, error) { - return service.GetOneRPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetRPRecordsContext(ctx context.Context, request *GetRPRecordsRequestType) (*GetRPRecordsResponseType, error) { - response := new(GetRPRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetRPRecords(request *GetRPRecordsRequestType) (*GetRPRecordsResponseType, error) { - return service.GetRPRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateRPRecordContext(ctx context.Context, request *UpdateRPRecordRequestType) (*UpdateRPRecordResponseType, error) { - response := new(UpdateRPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateRPRecord(request *UpdateRPRecordRequestType) (*UpdateRPRecordResponseType, error) { - return service.UpdateRPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteRPRecordsContext(ctx context.Context, request *DeleteRPRecordsRequestType) (*DeleteRPRecordsResponseType, error) { - response := new(DeleteRPRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteRPRecords(request *DeleteRPRecordsRequestType) (*DeleteRPRecordsResponseType, error) { - return service.DeleteRPRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneRPRecordContext(ctx context.Context, request *DeleteOneRPRecordRequestType) (*DeleteOneRPRecordResponseType, error) { - response := new(DeleteOneRPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneRPRecord(request *DeleteOneRPRecordRequestType) (*DeleteOneRPRecordResponseType, error) { - return service.DeleteOneRPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateSPFRecordContext(ctx context.Context, request *CreateSPFRecordRequestType) (*CreateSPFRecordResponseType, error) { - response := new(CreateSPFRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateSPFRecord(request *CreateSPFRecordRequestType) (*CreateSPFRecordResponseType, error) { - return service.CreateSPFRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneSPFRecordContext(ctx context.Context, request *GetOneSPFRecordRequestType) (*GetOneSPFRecordResponseType, error) { - response := new(GetOneSPFRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneSPFRecord(request *GetOneSPFRecordRequestType) (*GetOneSPFRecordResponseType, error) { - return service.GetOneSPFRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetSPFRecordsContext(ctx context.Context, request *GetSPFRecordsRequestType) (*GetSPFRecordsResponseType, error) { - response := new(GetSPFRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetSPFRecords(request *GetSPFRecordsRequestType) (*GetSPFRecordsResponseType, error) { - return service.GetSPFRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateSPFRecordContext(ctx context.Context, request *UpdateSPFRecordRequestType) (*UpdateSPFRecordResponseType, error) { - response := new(UpdateSPFRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateSPFRecord(request *UpdateSPFRecordRequestType) (*UpdateSPFRecordResponseType, error) { - return service.UpdateSPFRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteSPFRecordsContext(ctx context.Context, request *DeleteSPFRecordsRequestType) (*DeleteSPFRecordsResponseType, error) { - response := new(DeleteSPFRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteSPFRecords(request *DeleteSPFRecordsRequestType) (*DeleteSPFRecordsResponseType, error) { - return service.DeleteSPFRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneSPFRecordContext(ctx context.Context, request *DeleteOneSPFRecordRequestType) (*DeleteOneSPFRecordResponseType, error) { - response := new(DeleteOneSPFRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneSPFRecord(request *DeleteOneSPFRecordRequestType) (*DeleteOneSPFRecordResponseType, error) { - return service.DeleteOneSPFRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateSRVRecordContext(ctx context.Context, request *CreateSRVRecordRequestType) (*CreateSRVRecordResponseType, error) { - response := new(CreateSRVRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateSRVRecord(request *CreateSRVRecordRequestType) (*CreateSRVRecordResponseType, error) { - return service.CreateSRVRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneSRVRecordContext(ctx context.Context, request *GetOneSRVRecordRequestType) (*GetOneSRVRecordResponseType, error) { - response := new(GetOneSRVRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneSRVRecord(request *GetOneSRVRecordRequestType) (*GetOneSRVRecordResponseType, error) { - return service.GetOneSRVRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetSRVRecordsContext(ctx context.Context, request *GetSRVRecordsRequestType) (*GetSRVRecordsResponseType, error) { - response := new(GetSRVRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetSRVRecords(request *GetSRVRecordsRequestType) (*GetSRVRecordsResponseType, error) { - return service.GetSRVRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateSRVRecordContext(ctx context.Context, request *UpdateSRVRecordRequestType) (*UpdateSRVRecordResponseType, error) { - response := new(UpdateSRVRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateSRVRecord(request *UpdateSRVRecordRequestType) (*UpdateSRVRecordResponseType, error) { - return service.UpdateSRVRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteSRVRecordsContext(ctx context.Context, request *DeleteSRVRecordsRequestType) (*DeleteSRVRecordsResponseType, error) { - response := new(DeleteSRVRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteSRVRecords(request *DeleteSRVRecordsRequestType) (*DeleteSRVRecordsResponseType, error) { - return service.DeleteSRVRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneSRVRecordContext(ctx context.Context, request *DeleteOneSRVRecordRequestType) (*DeleteOneSRVRecordResponseType, error) { - response := new(DeleteOneSRVRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneSRVRecord(request *DeleteOneSRVRecordRequestType) (*DeleteOneSRVRecordResponseType, error) { - return service.DeleteOneSRVRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateSSHFPRecordContext(ctx context.Context, request *CreateSSHFPRecordRequestType) (*CreateSSHFPRecordResponseType, error) { - response := new(CreateSSHFPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateSSHFPRecord(request *CreateSSHFPRecordRequestType) (*CreateSSHFPRecordResponseType, error) { - return service.CreateSSHFPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneSSHFPRecordContext(ctx context.Context, request *GetOneSSHFPRecordRequestType) (*GetOneSSHFPRecordResponseType, error) { - response := new(GetOneSSHFPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneSSHFPRecord(request *GetOneSSHFPRecordRequestType) (*GetOneSSHFPRecordResponseType, error) { - return service.GetOneSSHFPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetSSHFPRecordsContext(ctx context.Context, request *GetSSHFPRecordsRequestType) (*GetSSHFPRecordsResponseType, error) { - response := new(GetSSHFPRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetSSHFPRecords(request *GetSSHFPRecordsRequestType) (*GetSSHFPRecordsResponseType, error) { - return service.GetSSHFPRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateSSHFPRecordContext(ctx context.Context, request *UpdateSSHFPRecordRequestType) (*UpdateSSHFPRecordResponseType, error) { - response := new(UpdateSSHFPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateSSHFPRecord(request *UpdateSSHFPRecordRequestType) (*UpdateSSHFPRecordResponseType, error) { - return service.UpdateSSHFPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteSSHFPRecordsContext(ctx context.Context, request *DeleteSSHFPRecordsRequestType) (*DeleteSSHFPRecordsResponseType, error) { - response := new(DeleteSSHFPRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteSSHFPRecords(request *DeleteSSHFPRecordsRequestType) (*DeleteSSHFPRecordsResponseType, error) { - return service.DeleteSSHFPRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneSSHFPRecordContext(ctx context.Context, request *DeleteOneSSHFPRecordRequestType) (*DeleteOneSSHFPRecordResponseType, error) { - response := new(DeleteOneSSHFPRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneSSHFPRecord(request *DeleteOneSSHFPRecordRequestType) (*DeleteOneSSHFPRecordResponseType, error) { - return service.DeleteOneSSHFPRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateTLSARecordContext(ctx context.Context, request *CreateTLSARecordRequestType) (*CreateTLSARecordResponseType, error) { - response := new(CreateTLSARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateTLSARecord(request *CreateTLSARecordRequestType) (*CreateTLSARecordResponseType, error) { - return service.CreateTLSARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneTLSARecordContext(ctx context.Context, request *GetOneTLSARecordRequestType) (*GetOneTLSARecordResponseType, error) { - response := new(GetOneTLSARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneTLSARecord(request *GetOneTLSARecordRequestType) (*GetOneTLSARecordResponseType, error) { - return service.GetOneTLSARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetTLSARecordsContext(ctx context.Context, request *GetTLSARecordsRequestType) (*GetTLSARecordsResponseType, error) { - response := new(GetTLSARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetTLSARecords(request *GetTLSARecordsRequestType) (*GetTLSARecordsResponseType, error) { - return service.GetTLSARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateTLSARecordContext(ctx context.Context, request *UpdateTLSARecordRequestType) (*UpdateTLSARecordResponseType, error) { - response := new(UpdateTLSARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateTLSARecord(request *UpdateTLSARecordRequestType) (*UpdateTLSARecordResponseType, error) { - return service.UpdateTLSARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteTLSARecordsContext(ctx context.Context, request *DeleteTLSARecordsRequestType) (*DeleteTLSARecordsResponseType, error) { - response := new(DeleteTLSARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteTLSARecords(request *DeleteTLSARecordsRequestType) (*DeleteTLSARecordsResponseType, error) { - return service.DeleteTLSARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneTLSARecordContext(ctx context.Context, request *DeleteOneTLSARecordRequestType) (*DeleteOneTLSARecordResponseType, error) { - response := new(DeleteOneTLSARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneTLSARecord(request *DeleteOneTLSARecordRequestType) (*DeleteOneTLSARecordResponseType, error) { - return service.DeleteOneTLSARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateTXTRecordContext(ctx context.Context, request *CreateTXTRecordRequestType) (*CreateTXTRecordResponseType, error) { - response := new(CreateTXTRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateTXTRecord(request *CreateTXTRecordRequestType) (*CreateTXTRecordResponseType, error) { - return service.CreateTXTRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneTXTRecordContext(ctx context.Context, request *GetOneTXTRecordRequestType) (*GetOneTXTRecordResponseType, error) { - response := new(GetOneTXTRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneTXTRecord(request *GetOneTXTRecordRequestType) (*GetOneTXTRecordResponseType, error) { - return service.GetOneTXTRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetTXTRecordsContext(ctx context.Context, request *GetTXTRecordsRequestType) (*GetTXTRecordsResponseType, error) { - response := new(GetTXTRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetTXTRecords(request *GetTXTRecordsRequestType) (*GetTXTRecordsResponseType, error) { - return service.GetTXTRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateTXTRecordContext(ctx context.Context, request *UpdateTXTRecordRequestType) (*UpdateTXTRecordResponseType, error) { - response := new(UpdateTXTRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateTXTRecord(request *UpdateTXTRecordRequestType) (*UpdateTXTRecordResponseType, error) { - return service.UpdateTXTRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteTXTRecordsContext(ctx context.Context, request *DeleteTXTRecordsRequestType) (*DeleteTXTRecordsResponseType, error) { - response := new(DeleteTXTRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteTXTRecords(request *DeleteTXTRecordsRequestType) (*DeleteTXTRecordsResponseType, error) { - return service.DeleteTXTRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneTXTRecordContext(ctx context.Context, request *DeleteOneTXTRecordRequestType) (*DeleteOneTXTRecordResponseType, error) { - response := new(DeleteOneTXTRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneTXTRecord(request *DeleteOneTXTRecordRequestType) (*DeleteOneTXTRecordResponseType, error) { - return service.DeleteOneTXTRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneSOARecordContext(ctx context.Context, request *GetOneSOARecordRequestType) (*GetOneSOARecordResponseType, error) { - response := new(GetOneSOARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneSOARecord(request *GetOneSOARecordRequestType) (*GetOneSOARecordResponseType, error) { - return service.GetOneSOARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetSOARecordsContext(ctx context.Context, request *GetSOARecordsRequestType) (*GetSOARecordsResponseType, error) { - response := new(GetSOARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetSOARecords(request *GetSOARecordsRequestType) (*GetSOARecordsResponseType, error) { - return service.GetSOARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateSOARecordContext(ctx context.Context, request *UpdateSOARecordRequestType) (*UpdateSOARecordResponseType, error) { - response := new(UpdateSOARecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateSOARecord(request *UpdateSOARecordRequestType) (*UpdateSOARecordResponseType, error) { - return service.UpdateSOARecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateNSRecordContext(ctx context.Context, request *CreateNSRecordRequestType) (*CreateNSRecordResponseType, error) { - response := new(CreateNSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateNSRecord(request *CreateNSRecordRequestType) (*CreateNSRecordResponseType, error) { - return service.CreateNSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneNSRecordContext(ctx context.Context, request *GetOneNSRecordRequestType) (*GetOneNSRecordResponseType, error) { - response := new(GetOneNSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneNSRecord(request *GetOneNSRecordRequestType) (*GetOneNSRecordResponseType, error) { - return service.GetOneNSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetNSRecordsContext(ctx context.Context, request *GetNSRecordsRequestType) (*GetNSRecordsResponseType, error) { - response := new(GetNSRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetNSRecords(request *GetNSRecordsRequestType) (*GetNSRecordsResponseType, error) { - return service.GetNSRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateNSRecordContext(ctx context.Context, request *UpdateNSRecordRequestType) (*UpdateNSRecordResponseType, error) { - response := new(UpdateNSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateNSRecord(request *UpdateNSRecordRequestType) (*UpdateNSRecordResponseType, error) { - return service.UpdateNSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteNSRecordsContext(ctx context.Context, request *DeleteNSRecordsRequestType) (*DeleteNSRecordsResponseType, error) { - response := new(DeleteNSRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteNSRecords(request *DeleteNSRecordsRequestType) (*DeleteNSRecordsResponseType, error) { - return service.DeleteNSRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneNSRecordContext(ctx context.Context, request *DeleteOneNSRecordRequestType) (*DeleteOneNSRecordResponseType, error) { - response := new(DeleteOneNSRecordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneNSRecord(request *DeleteOneNSRecordRequestType) (*DeleteOneNSRecordResponseType, error) { - return service.DeleteOneNSRecordContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceARecordsContext(ctx context.Context, request *ReplaceARecordsRequestType) (*ReplaceARecordsResponseType, error) { - response := new(ReplaceARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceARecords(request *ReplaceARecordsRequestType) (*ReplaceARecordsResponseType, error) { - return service.ReplaceARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceAAAARecordsContext(ctx context.Context, request *ReplaceAAAARecordsRequestType) (*ReplaceAAAARecordsResponseType, error) { - response := new(ReplaceAAAARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceAAAARecords(request *ReplaceAAAARecordsRequestType) (*ReplaceAAAARecordsResponseType, error) { - return service.ReplaceAAAARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceALIASRecordsContext(ctx context.Context, request *ReplaceALIASRecordsRequestType) (*ReplaceALIASRecordsResponseType, error) { - response := new(ReplaceALIASRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceALIASRecords(request *ReplaceALIASRecordsRequestType) (*ReplaceALIASRecordsResponseType, error) { - return service.ReplaceALIASRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceCAARecordsContext(ctx context.Context, request *ReplaceCAARecordsRequestType) (*ReplaceCAARecordsResponseType, error) { - response := new(ReplaceCAARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceCAARecords(request *ReplaceCAARecordsRequestType) (*ReplaceCAARecordsResponseType, error) { - return service.ReplaceCAARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceCDNSKEYRecordsContext(ctx context.Context, request *ReplaceCDNSKEYRecordsRequestType) (*ReplaceCDNSKEYRecordsResponseType, error) { - response := new(ReplaceCDNSKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceCDNSKEYRecords(request *ReplaceCDNSKEYRecordsRequestType) (*ReplaceCDNSKEYRecordsResponseType, error) { - return service.ReplaceCDNSKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceCDSRecordsContext(ctx context.Context, request *ReplaceCDSRecordsRequestType) (*ReplaceCDSRecordsResponseType, error) { - response := new(ReplaceCDSRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceCDSRecords(request *ReplaceCDSRecordsRequestType) (*ReplaceCDSRecordsResponseType, error) { - return service.ReplaceCDSRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceCERTRecordsContext(ctx context.Context, request *ReplaceCERTRecordsRequestType) (*ReplaceCERTRecordsResponseType, error) { - response := new(ReplaceCERTRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceCERTRecords(request *ReplaceCERTRecordsRequestType) (*ReplaceCERTRecordsResponseType, error) { - return service.ReplaceCERTRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceCNAMERecordsContext(ctx context.Context, request *ReplaceCNAMERecordsRequestType) (*ReplaceCNAMERecordsResponseType, error) { - response := new(ReplaceCNAMERecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceCNAMERecords(request *ReplaceCNAMERecordsRequestType) (*ReplaceCNAMERecordsResponseType, error) { - return service.ReplaceCNAMERecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceCSYNCRecordsContext(ctx context.Context, request *ReplaceCSYNCRecordsRequestType) (*ReplaceCSYNCRecordsResponseType, error) { - response := new(ReplaceCSYNCRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceCSYNCRecords(request *ReplaceCSYNCRecordsRequestType) (*ReplaceCSYNCRecordsResponseType, error) { - return service.ReplaceCSYNCRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceDHCIDRecordsContext(ctx context.Context, request *ReplaceDHCIDRecordsRequestType) (*ReplaceDHCIDRecordsResponseType, error) { - response := new(ReplaceDHCIDRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceDHCIDRecords(request *ReplaceDHCIDRecordsRequestType) (*ReplaceDHCIDRecordsResponseType, error) { - return service.ReplaceDHCIDRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceDNAMERecordsContext(ctx context.Context, request *ReplaceDNAMERecordsRequestType) (*ReplaceDNAMERecordsResponseType, error) { - response := new(ReplaceDNAMERecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceDNAMERecords(request *ReplaceDNAMERecordsRequestType) (*ReplaceDNAMERecordsResponseType, error) { - return service.ReplaceDNAMERecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceDNSKEYRecordsContext(ctx context.Context, request *ReplaceDNSKEYRecordsRequestType) (*ReplaceDNSKEYRecordsResponseType, error) { - response := new(ReplaceDNSKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceDNSKEYRecords(request *ReplaceDNSKEYRecordsRequestType) (*ReplaceDNSKEYRecordsResponseType, error) { - return service.ReplaceDNSKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceDSRecordsContext(ctx context.Context, request *ReplaceDSRecordsRequestType) (*ReplaceDSRecordsResponseType, error) { - response := new(ReplaceDSRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceDSRecords(request *ReplaceDSRecordsRequestType) (*ReplaceDSRecordsResponseType, error) { - return service.ReplaceDSRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceIPSECKEYRecordsContext(ctx context.Context, request *ReplaceIPSECKEYRecordsRequestType) (*ReplaceIPSECKEYRecordsResponseType, error) { - response := new(ReplaceIPSECKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceIPSECKEYRecords(request *ReplaceIPSECKEYRecordsRequestType) (*ReplaceIPSECKEYRecordsResponseType, error) { - return service.ReplaceIPSECKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceKEYRecordsContext(ctx context.Context, request *ReplaceKEYRecordsRequestType) (*ReplaceKEYRecordsResponseType, error) { - response := new(ReplaceKEYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceKEYRecords(request *ReplaceKEYRecordsRequestType) (*ReplaceKEYRecordsResponseType, error) { - return service.ReplaceKEYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceKXRecordsContext(ctx context.Context, request *ReplaceKXRecordsRequestType) (*ReplaceKXRecordsResponseType, error) { - response := new(ReplaceKXRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceKXRecords(request *ReplaceKXRecordsRequestType) (*ReplaceKXRecordsResponseType, error) { - return service.ReplaceKXRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceLOCRecordsContext(ctx context.Context, request *ReplaceLOCRecordsRequestType) (*ReplaceLOCRecordsResponseType, error) { - response := new(ReplaceLOCRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceLOCRecords(request *ReplaceLOCRecordsRequestType) (*ReplaceLOCRecordsResponseType, error) { - return service.ReplaceLOCRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceMXRecordsContext(ctx context.Context, request *ReplaceMXRecordsRequestType) (*ReplaceMXRecordsResponseType, error) { - response := new(ReplaceMXRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceMXRecords(request *ReplaceMXRecordsRequestType) (*ReplaceMXRecordsResponseType, error) { - return service.ReplaceMXRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceNAPTRRecordsContext(ctx context.Context, request *ReplaceNAPTRRecordsRequestType) (*ReplaceNAPTRRecordsResponseType, error) { - response := new(ReplaceNAPTRRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceNAPTRRecords(request *ReplaceNAPTRRecordsRequestType) (*ReplaceNAPTRRecordsResponseType, error) { - return service.ReplaceNAPTRRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceNSAPRecordsContext(ctx context.Context, request *ReplaceNSAPRecordsRequestType) (*ReplaceNSAPRecordsResponseType, error) { - response := new(ReplaceNSAPRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceNSAPRecords(request *ReplaceNSAPRecordsRequestType) (*ReplaceNSAPRecordsResponseType, error) { - return service.ReplaceNSAPRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplacePOLICYRecordsContext(ctx context.Context, request *ReplacePOLICYRecordsRequestType) (*ReplacePOLICYRecordsResponseType, error) { - response := new(ReplacePOLICYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplacePOLICYRecords(request *ReplacePOLICYRecordsRequestType) (*ReplacePOLICYRecordsResponseType, error) { - return service.ReplacePOLICYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplacePTRRecordsContext(ctx context.Context, request *ReplacePTRRecordsRequestType) (*ReplacePTRRecordsResponseType, error) { - response := new(ReplacePTRRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplacePTRRecords(request *ReplacePTRRecordsRequestType) (*ReplacePTRRecordsResponseType, error) { - return service.ReplacePTRRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplacePXRecordsContext(ctx context.Context, request *ReplacePXRecordsRequestType) (*ReplacePXRecordsResponseType, error) { - response := new(ReplacePXRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplacePXRecords(request *ReplacePXRecordsRequestType) (*ReplacePXRecordsResponseType, error) { - return service.ReplacePXRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceRPRecordsContext(ctx context.Context, request *ReplaceRPRecordsRequestType) (*ReplaceRPRecordsResponseType, error) { - response := new(ReplaceRPRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceRPRecords(request *ReplaceRPRecordsRequestType) (*ReplaceRPRecordsResponseType, error) { - return service.ReplaceRPRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceSPFRecordsContext(ctx context.Context, request *ReplaceSPFRecordsRequestType) (*ReplaceSPFRecordsResponseType, error) { - response := new(ReplaceSPFRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceSPFRecords(request *ReplaceSPFRecordsRequestType) (*ReplaceSPFRecordsResponseType, error) { - return service.ReplaceSPFRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceSRVRecordsContext(ctx context.Context, request *ReplaceSRVRecordsRequestType) (*ReplaceSRVRecordsResponseType, error) { - response := new(ReplaceSRVRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceSRVRecords(request *ReplaceSRVRecordsRequestType) (*ReplaceSRVRecordsResponseType, error) { - return service.ReplaceSRVRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceSSHFPRecordsContext(ctx context.Context, request *ReplaceSSHFPRecordsRequestType) (*ReplaceSSHFPRecordsResponseType, error) { - response := new(ReplaceSSHFPRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceSSHFPRecords(request *ReplaceSSHFPRecordsRequestType) (*ReplaceSSHFPRecordsResponseType, error) { - return service.ReplaceSSHFPRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceTLSARecordsContext(ctx context.Context, request *ReplaceTLSARecordsRequestType) (*ReplaceTLSARecordsResponseType, error) { - response := new(ReplaceTLSARecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceTLSARecords(request *ReplaceTLSARecordsRequestType) (*ReplaceTLSARecordsResponseType, error) { - return service.ReplaceTLSARecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceTXTRecordsContext(ctx context.Context, request *ReplaceTXTRecordsRequestType) (*ReplaceTXTRecordsResponseType, error) { - response := new(ReplaceTXTRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceTXTRecords(request *ReplaceTXTRecordsRequestType) (*ReplaceTXTRecordsResponseType, error) { - return service.ReplaceTXTRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) ReplaceNSRecordsContext(ctx context.Context, request *ReplaceNSRecordsRequestType) (*ReplaceNSRecordsResponseType, error) { - response := new(ReplaceNSRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ReplaceNSRecords(request *ReplaceNSRecordsRequestType) (*ReplaceNSRecordsResponseType, error) { - return service.ReplaceNSRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetANYRecordsContext(ctx context.Context, request *GetANYRecordsRequestType) (*GetANYRecordsResponseType, error) { - response := new(GetANYRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetANYRecords(request *GetANYRecordsRequestType) (*GetANYRecordsResponseType, error) { - return service.GetANYRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetAllRecordsContext(ctx context.Context, request *GetAllRecordsRequestType) (*GetAllRecordsResponseType, error) { - response := new(GetAllRecordsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetAllRecords(request *GetAllRecordsRequestType) (*GetAllRecordsResponseType, error) { - return service.GetAllRecordsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetAllAliasQNamesContext(ctx context.Context, request *GetAllAliasQNamesRequestType) (*GetAllAliasQNamesResponseType, error) { - response := new(GetAllAliasQNamesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetAllAliasQNames(request *GetAllAliasQNamesRequestType) (*GetAllAliasQNamesResponseType, error) { - return service.GetAllAliasQNamesContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneUserContext(ctx context.Context, request *GetOneUserRequestType) (*GetOneUserResponseType, error) { - response := new(GetOneUserResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneUser(request *GetOneUserRequestType) (*GetOneUserResponseType, error) { - return service.GetOneUserContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneUserContext(ctx context.Context, request *DeleteOneUserRequestType) (*DeleteOneUserResponseType, error) { - response := new(DeleteOneUserResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneUser(request *DeleteOneUserRequestType) (*DeleteOneUserResponseType, error) { - return service.DeleteOneUserContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateUserContext(ctx context.Context, request *CreateUserRequestType) (*CreateUserResponseType, error) { - response := new(CreateUserResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateUser(request *CreateUserRequestType) (*CreateUserResponseType, error) { - return service.CreateUserContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateUserContext(ctx context.Context, request *UpdateUserRequestType) (*UpdateUserResponseType, error) { - response := new(UpdateUserResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateUser(request *UpdateUserRequestType) (*UpdateUserResponseType, error) { - return service.UpdateUserContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetUsersContext(ctx context.Context, request *GetUsersRequestType) (*GetUsersResponseType, error) { - response := new(GetUsersResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetUsers(request *GetUsersRequestType) (*GetUsersResponseType, error) { - return service.GetUsersContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetUpdateUsersContext(ctx context.Context, request *GetUpdateUsersRequestType) (*GetUpdateUsersResponseType, error) { - response := new(GetUpdateUsersResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetUpdateUsers(request *GetUpdateUsersRequestType) (*GetUpdateUsersResponseType, error) { - return service.GetUpdateUsersContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateUpdateUserContext(ctx context.Context, request *UpdateUpdateUserRequestType) (*UpdateUpdateUserResponseType, error) { - response := new(UpdateUpdateUserResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateUpdateUser(request *UpdateUpdateUserRequestType) (*UpdateUpdateUserResponseType, error) { - return service.UpdateUpdateUserContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneUpdateUserContext(ctx context.Context, request *DeleteOneUpdateUserRequestType) (*DeleteOneUpdateUserResponseType, error) { - response := new(DeleteOneUpdateUserResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneUpdateUser(request *DeleteOneUpdateUserRequestType) (*DeleteOneUpdateUserResponseType, error) { - return service.DeleteOneUpdateUserContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateUserPasswordContext(ctx context.Context, request *UpdateUserPasswordRequestType) (*UpdateUserPasswordResponseType, error) { - response := new(UpdateUserPasswordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateUserPassword(request *UpdateUserPasswordRequestType) (*UpdateUserPasswordResponseType, error) { - return service.UpdateUserPasswordContext( - context.Background(), - request, - ) -} - -func (service *dynect) BlockUserContext(ctx context.Context, request *BlockUserRequestType) (*BlockUserResponseType, error) { - response := new(BlockUserResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) BlockUser(request *BlockUserRequestType) (*BlockUserResponseType, error) { - return service.BlockUserContext( - context.Background(), - request, - ) -} - -func (service *dynect) UnblockUserContext(ctx context.Context, request *UnblockUserRequestType) (*UnblockUserResponseType, error) { - response := new(UnblockUserResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UnblockUser(request *UnblockUserRequestType) (*UnblockUserResponseType, error) { - return service.UnblockUserContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateContactContext(ctx context.Context, request *CreateContactRequestType) (*CreateContactResponseType, error) { - response := new(CreateContactResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateContact(request *CreateContactRequestType) (*CreateContactResponseType, error) { - return service.CreateContactContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneContactContext(ctx context.Context, request *GetOneContactRequestType) (*GetOneContactResponseType, error) { - response := new(GetOneContactResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneContact(request *GetOneContactRequestType) (*GetOneContactResponseType, error) { - return service.GetOneContactContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetContactsContext(ctx context.Context, request *GetContactsRequestType) (*GetContactsResponseType, error) { - response := new(GetContactsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetContacts(request *GetContactsRequestType) (*GetContactsResponseType, error) { - return service.GetContactsContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneContactContext(ctx context.Context, request *DeleteOneContactRequestType) (*DeleteOneContactResponseType, error) { - response := new(DeleteOneContactResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneContact(request *DeleteOneContactRequestType) (*DeleteOneContactResponseType, error) { - return service.DeleteOneContactContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateContactContext(ctx context.Context, request *UpdateContactRequestType) (*UpdateContactResponseType, error) { - response := new(UpdateContactResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateContact(request *UpdateContactRequestType) (*UpdateContactResponseType, error) { - return service.UpdateContactContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateCustomerContext(ctx context.Context, request *CreateCustomerRequestType) (*CreateCustomerResponseType, error) { - response := new(CreateCustomerResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateCustomer(request *CreateCustomerRequestType) (*CreateCustomerResponseType, error) { - return service.CreateCustomerContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateCustomerContext(ctx context.Context, request *UpdateCustomerRequestType) (*UpdateCustomerResponseType, error) { - response := new(UpdateCustomerResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateCustomer(request *UpdateCustomerRequestType) (*UpdateCustomerResponseType, error) { - return service.UpdateCustomerContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneCustomerContext(ctx context.Context, request *GetOneCustomerRequestType) (*GetOneCustomerResponseType, error) { - response := new(GetOneCustomerResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneCustomer(request *GetOneCustomerRequestType) (*GetOneCustomerResponseType, error) { - return service.GetOneCustomerContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCustomersContext(ctx context.Context, request *GetCustomersRequestType) (*GetCustomersResponseType, error) { - response := new(GetCustomersResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCustomers(request *GetCustomersRequestType) (*GetCustomersResponseType, error) { - return service.GetCustomersContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneCustomerContext(ctx context.Context, request *DeleteOneCustomerRequestType) (*DeleteOneCustomerResponseType, error) { - response := new(DeleteOneCustomerResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneCustomer(request *DeleteOneCustomerRequestType) (*DeleteOneCustomerResponseType, error) { - return service.DeleteOneCustomerContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCustomerPrefsContext(ctx context.Context, request *GetCustomerPrefsRequestType) (*GetCustomerPrefsResponseType, error) { - response := new(GetCustomerPrefsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCustomerPrefs(request *GetCustomerPrefsRequestType) (*GetCustomerPrefsResponseType, error) { - return service.GetCustomerPrefsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetCustomerPrefsContext(ctx context.Context, request *SetCustomerPrefsRequestType) (*SetCustomerPrefsResponseType, error) { - response := new(SetCustomerPrefsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetCustomerPrefs(request *SetCustomerPrefsRequestType) (*SetCustomerPrefsResponseType, error) { - return service.SetCustomerPrefsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCustomerIPACLContext(ctx context.Context, request *GetCustomerIPACLRequestType) (*GetCustomerIPACLResponseType, error) { - response := new(GetCustomerIPACLResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCustomerIPACL(request *GetCustomerIPACLRequestType) (*GetCustomerIPACLResponseType, error) { - return service.GetCustomerIPACLContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetCustomerIPACLContext(ctx context.Context, request *SetCustomerIPACLRequestType) (*SetCustomerIPACLResponseType, error) { - response := new(SetCustomerIPACLResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetCustomerIPACL(request *SetCustomerIPACLRequestType) (*SetCustomerIPACLResponseType, error) { - return service.SetCustomerIPACLContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateCustomerOracleMetadataContext(ctx context.Context, request *CreateCustomerOracleMetadataRequestType) (*CreateCustomerOracleMetadataResponseType, error) { - response := new(CreateCustomerOracleMetadataResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateCustomerOracleMetadata(request *CreateCustomerOracleMetadataRequestType) (*CreateCustomerOracleMetadataResponseType, error) { - return service.CreateCustomerOracleMetadataContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateCustomerOracleMetadataContext(ctx context.Context, request *UpdateCustomerOracleMetadataRequestType) (*UpdateCustomerOracleMetadataResponseType, error) { - response := new(UpdateCustomerOracleMetadataResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateCustomerOracleMetadata(request *UpdateCustomerOracleMetadataRequestType) (*UpdateCustomerOracleMetadataResponseType, error) { - return service.UpdateCustomerOracleMetadataContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetCustomerOracleMetadataContext(ctx context.Context, request *GetCustomerOracleMetadataRequestType) (*GetCustomerOracleMetadataResponseType, error) { - response := new(GetCustomerOracleMetadataResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetCustomerOracleMetadata(request *GetCustomerOracleMetadataRequestType) (*GetCustomerOracleMetadataResponseType, error) { - return service.GetCustomerOracleMetadataContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteCustomerOracleMetadataContext(ctx context.Context, request *DeleteCustomerOracleMetadataRequestType) (*DeleteCustomerOracleMetadataResponseType, error) { - response := new(DeleteCustomerOracleMetadataResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteCustomerOracleMetadata(request *DeleteCustomerOracleMetadataRequestType) (*DeleteCustomerOracleMetadataResponseType, error) { - return service.DeleteCustomerOracleMetadataContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateZoneOracleMetadataContext(ctx context.Context, request *CreateZoneOracleMetadataRequestType) (*CreateZoneOracleMetadataResponseType, error) { - response := new(CreateZoneOracleMetadataResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateZoneOracleMetadata(request *CreateZoneOracleMetadataRequestType) (*CreateZoneOracleMetadataResponseType, error) { - return service.CreateZoneOracleMetadataContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateZoneOracleMetadataContext(ctx context.Context, request *UpdateZoneOracleMetadataRequestType) (*UpdateZoneOracleMetadataResponseType, error) { - response := new(UpdateZoneOracleMetadataResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateZoneOracleMetadata(request *UpdateZoneOracleMetadataRequestType) (*UpdateZoneOracleMetadataResponseType, error) { - return service.UpdateZoneOracleMetadataContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetZoneOracleMetadataContext(ctx context.Context, request *GetZoneOracleMetadataRequestType) (*GetZoneOracleMetadataResponseType, error) { - response := new(GetZoneOracleMetadataResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetZoneOracleMetadata(request *GetZoneOracleMetadataRequestType) (*GetZoneOracleMetadataResponseType, error) { - return service.GetZoneOracleMetadataContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteZoneOracleMetadataContext(ctx context.Context, request *DeleteZoneOracleMetadataRequestType) (*DeleteZoneOracleMetadataResponseType, error) { - response := new(DeleteZoneOracleMetadataResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteZoneOracleMetadata(request *DeleteZoneOracleMetadataRequestType) (*DeleteZoneOracleMetadataResponseType, error) { - return service.DeleteZoneOracleMetadataContext( - context.Background(), - request, - ) -} - -func (service *dynect) OCIMigrateContext(ctx context.Context, request *OCIMigrateRequestType) (*OCIMigrateResponseType, error) { - response := new(OCIMigrateResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) OCIMigrate(request *OCIMigrateRequestType) (*OCIMigrateResponseType, error) { - return service.OCIMigrateContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDDNSContext(ctx context.Context, request *CreateDDNSRequestType) (*CreateDDNSResponseType, error) { - response := new(CreateDDNSResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDDNS(request *CreateDDNSRequestType) (*CreateDDNSResponseType, error) { - return service.CreateDDNSContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDDNSContext(ctx context.Context, request *GetOneDDNSRequestType) (*GetOneDDNSResponseType, error) { - response := new(GetOneDDNSResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDDNS(request *GetOneDDNSRequestType) (*GetOneDDNSResponseType, error) { - return service.GetOneDDNSContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDDNSsContext(ctx context.Context, request *GetDDNSsRequestType) (*GetDDNSsResponseType, error) { - response := new(GetDDNSsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDDNSs(request *GetDDNSsRequestType) (*GetDDNSsResponseType, error) { - return service.GetDDNSsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDDNSContext(ctx context.Context, request *UpdateDDNSRequestType) (*UpdateDDNSResponseType, error) { - response := new(UpdateDDNSResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDDNS(request *UpdateDDNSRequestType) (*UpdateDDNSResponseType, error) { - return service.UpdateDDNSContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDDNSContext(ctx context.Context, request *DeleteOneDDNSRequestType) (*DeleteOneDDNSResponseType, error) { - response := new(DeleteOneDDNSResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDDNS(request *DeleteOneDDNSRequestType) (*DeleteOneDDNSResponseType, error) { - return service.DeleteOneDDNSContext( - context.Background(), - request, - ) -} - -func (service *dynect) ActivateDDNSContext(ctx context.Context, request *ActivateDDNSRequestType) (*ActivateDDNSResponseType, error) { - response := new(ActivateDDNSResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ActivateDDNS(request *ActivateDDNSRequestType) (*ActivateDDNSResponseType, error) { - return service.ActivateDDNSContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeactivateDDNSContext(ctx context.Context, request *DeactivateDDNSRequestType) (*DeactivateDDNSResponseType, error) { - response := new(DeactivateDDNSResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeactivateDDNS(request *DeactivateDDNSRequestType) (*DeactivateDDNSResponseType, error) { - return service.DeactivateDDNSContext( - context.Background(), - request, - ) -} - -func (service *dynect) ResetDDNSContext(ctx context.Context, request *ResetDDNSRequestType) (*ResetDDNSResponseType, error) { - response := new(ResetDDNSResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ResetDDNS(request *ResetDDNSRequestType) (*ResetDDNSResponseType, error) { - return service.ResetDDNSContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetUpdateUserPasswordContext(ctx context.Context, request *GetUpdateUserPasswordRequestType) (*GetUpdateUserPasswordResponseType, error) { - response := new(GetUpdateUserPasswordResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetUpdateUserPassword(request *GetUpdateUserPasswordRequestType) (*GetUpdateUserPasswordResponseType, error) { - return service.GetUpdateUserPasswordContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDDNSHostContext(ctx context.Context, request *CreateDDNSHostRequestType) (*CreateDDNSHostResponseType, error) { - response := new(CreateDDNSHostResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDDNSHost(request *CreateDDNSHostRequestType) (*CreateDDNSHostResponseType, error) { - return service.CreateDDNSHostContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateUpdateUserContext(ctx context.Context, request *CreateUpdateUserRequestType) (*CreateUpdateUserResponseType, error) { - response := new(CreateUpdateUserResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateUpdateUser(request *CreateUpdateUserRequestType) (*CreateUpdateUserResponseType, error) { - return service.CreateUpdateUserContext( - context.Background(), - request, - ) -} - -func (service *dynect) AddDDNSContext(ctx context.Context, request *AddDDNSRequestType) (*AddDDNSResponseType, error) { - response := new(AddDDNSResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) AddDDNS(request *AddDDNSRequestType) (*AddDDNSResponseType, error) { - return service.AddDDNSContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateFailoverContext(ctx context.Context, request *CreateFailoverRequestType) (*CreateFailoverResponseType, error) { - response := new(CreateFailoverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateFailover(request *CreateFailoverRequestType) (*CreateFailoverResponseType, error) { - return service.CreateFailoverContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneFailoverContext(ctx context.Context, request *GetOneFailoverRequestType) (*GetOneFailoverResponseType, error) { - response := new(GetOneFailoverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneFailover(request *GetOneFailoverRequestType) (*GetOneFailoverResponseType, error) { - return service.GetOneFailoverContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetFailoversContext(ctx context.Context, request *GetFailoversRequestType) (*GetFailoversResponseType, error) { - response := new(GetFailoversResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetFailovers(request *GetFailoversRequestType) (*GetFailoversResponseType, error) { - return service.GetFailoversContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateFailoverContext(ctx context.Context, request *UpdateFailoverRequestType) (*UpdateFailoverResponseType, error) { - response := new(UpdateFailoverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateFailover(request *UpdateFailoverRequestType) (*UpdateFailoverResponseType, error) { - return service.UpdateFailoverContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneFailoverContext(ctx context.Context, request *DeleteOneFailoverRequestType) (*DeleteOneFailoverResponseType, error) { - response := new(DeleteOneFailoverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneFailover(request *DeleteOneFailoverRequestType) (*DeleteOneFailoverResponseType, error) { - return service.DeleteOneFailoverContext( - context.Background(), - request, - ) -} - -func (service *dynect) ActivateFailoverContext(ctx context.Context, request *ActivateFailoverRequestType) (*ActivateFailoverResponseType, error) { - response := new(ActivateFailoverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ActivateFailover(request *ActivateFailoverRequestType) (*ActivateFailoverResponseType, error) { - return service.ActivateFailoverContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeactivateFailoverContext(ctx context.Context, request *DeactivateFailoverRequestType) (*DeactivateFailoverResponseType, error) { - response := new(DeactivateFailoverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeactivateFailover(request *DeactivateFailoverRequestType) (*DeactivateFailoverResponseType, error) { - return service.DeactivateFailoverContext( - context.Background(), - request, - ) -} - -func (service *dynect) RecoverFailoverContext(ctx context.Context, request *RecoverFailoverRequestType) (*RecoverFailoverResponseType, error) { - response := new(RecoverFailoverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RecoverFailover(request *RecoverFailoverRequestType) (*RecoverFailoverResponseType, error) { - return service.RecoverFailoverContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateLoadBalanceContext(ctx context.Context, request *CreateLoadBalanceRequestType) (*CreateLoadBalanceResponseType, error) { - response := new(CreateLoadBalanceResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateLoadBalance(request *CreateLoadBalanceRequestType) (*CreateLoadBalanceResponseType, error) { - return service.CreateLoadBalanceContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneLoadBalanceContext(ctx context.Context, request *GetOneLoadBalanceRequestType) (*GetOneLoadBalanceResponseType, error) { - response := new(GetOneLoadBalanceResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneLoadBalance(request *GetOneLoadBalanceRequestType) (*GetOneLoadBalanceResponseType, error) { - return service.GetOneLoadBalanceContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetLoadBalancesContext(ctx context.Context, request *GetLoadBalancesRequestType) (*GetLoadBalancesResponseType, error) { - response := new(GetLoadBalancesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetLoadBalances(request *GetLoadBalancesRequestType) (*GetLoadBalancesResponseType, error) { - return service.GetLoadBalancesContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateLoadBalanceContext(ctx context.Context, request *UpdateLoadBalanceRequestType) (*UpdateLoadBalanceResponseType, error) { - response := new(UpdateLoadBalanceResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateLoadBalance(request *UpdateLoadBalanceRequestType) (*UpdateLoadBalanceResponseType, error) { - return service.UpdateLoadBalanceContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneLoadBalanceContext(ctx context.Context, request *DeleteOneLoadBalanceRequestType) (*DeleteOneLoadBalanceResponseType, error) { - response := new(DeleteOneLoadBalanceResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneLoadBalance(request *DeleteOneLoadBalanceRequestType) (*DeleteOneLoadBalanceResponseType, error) { - return service.DeleteOneLoadBalanceContext( - context.Background(), - request, - ) -} - -func (service *dynect) ActivateLoadBalanceContext(ctx context.Context, request *ActivateLoadBalanceRequestType) (*ActivateLoadBalanceResponseType, error) { - response := new(ActivateLoadBalanceResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ActivateLoadBalance(request *ActivateLoadBalanceRequestType) (*ActivateLoadBalanceResponseType, error) { - return service.ActivateLoadBalanceContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeactivateLoadBalanceContext(ctx context.Context, request *DeactivateLoadBalanceRequestType) (*DeactivateLoadBalanceResponseType, error) { - response := new(DeactivateLoadBalanceResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeactivateLoadBalance(request *DeactivateLoadBalanceRequestType) (*DeactivateLoadBalanceResponseType, error) { - return service.DeactivateLoadBalanceContext( - context.Background(), - request, - ) -} - -func (service *dynect) RecoverLoadBalanceContext(ctx context.Context, request *RecoverLoadBalanceRequestType) (*RecoverLoadBalanceResponseType, error) { - response := new(RecoverLoadBalanceResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RecoverLoadBalance(request *RecoverLoadBalanceRequestType) (*RecoverLoadBalanceResponseType, error) { - return service.RecoverLoadBalanceContext( - context.Background(), - request, - ) -} - -func (service *dynect) RecoverLoadBalanceIPContext(ctx context.Context, request *RecoverLoadBalanceIPRequestType) (*RecoverLoadBalanceIPResponseType, error) { - response := new(RecoverLoadBalanceIPResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RecoverLoadBalanceIP(request *RecoverLoadBalanceIPRequestType) (*RecoverLoadBalanceIPResponseType, error) { - return service.RecoverLoadBalanceIPContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateLoadBalancePoolEntryContext(ctx context.Context, request *CreateLoadBalancePoolEntryRequestType) (*CreateLoadBalancePoolEntryResponseType, error) { - response := new(CreateLoadBalancePoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateLoadBalancePoolEntry(request *CreateLoadBalancePoolEntryRequestType) (*CreateLoadBalancePoolEntryResponseType, error) { - return service.CreateLoadBalancePoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateLoadBalancePoolEntryContext(ctx context.Context, request *UpdateLoadBalancePoolEntryRequestType) (*UpdateLoadBalancePoolEntryResponseType, error) { - response := new(UpdateLoadBalancePoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateLoadBalancePoolEntry(request *UpdateLoadBalancePoolEntryRequestType) (*UpdateLoadBalancePoolEntryResponseType, error) { - return service.UpdateLoadBalancePoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneLoadBalancePoolEntryContext(ctx context.Context, request *GetOneLoadBalancePoolEntryRequestType) (*GetOneLoadBalancePoolEntryResponseType, error) { - response := new(GetOneLoadBalancePoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneLoadBalancePoolEntry(request *GetOneLoadBalancePoolEntryRequestType) (*GetOneLoadBalancePoolEntryResponseType, error) { - return service.GetOneLoadBalancePoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetLoadBalancePoolEntriesContext(ctx context.Context, request *GetLoadBalancePoolEntriesRequestType) (*GetLoadBalancePoolEntriesResponseType, error) { - response := new(GetLoadBalancePoolEntriesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetLoadBalancePoolEntries(request *GetLoadBalancePoolEntriesRequestType) (*GetLoadBalancePoolEntriesResponseType, error) { - return service.GetLoadBalancePoolEntriesContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneLoadBalancePoolEntryContext(ctx context.Context, request *DeleteOneLoadBalancePoolEntryRequestType) (*DeleteOneLoadBalancePoolEntryResponseType, error) { - response := new(DeleteOneLoadBalancePoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneLoadBalancePoolEntry(request *DeleteOneLoadBalancePoolEntryRequestType) (*DeleteOneLoadBalancePoolEntryResponseType, error) { - return service.DeleteOneLoadBalancePoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateGSLBContext(ctx context.Context, request *CreateGSLBRequestType) (*CreateGSLBResponseType, error) { - response := new(CreateGSLBResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateGSLB(request *CreateGSLBRequestType) (*CreateGSLBResponseType, error) { - return service.CreateGSLBContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneGSLBContext(ctx context.Context, request *GetOneGSLBRequestType) (*GetOneGSLBResponseType, error) { - response := new(GetOneGSLBResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneGSLB(request *GetOneGSLBRequestType) (*GetOneGSLBResponseType, error) { - return service.GetOneGSLBContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetGSLBsContext(ctx context.Context, request *GetGSLBsRequestType) (*GetGSLBsResponseType, error) { - response := new(GetGSLBsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetGSLBs(request *GetGSLBsRequestType) (*GetGSLBsResponseType, error) { - return service.GetGSLBsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateGSLBContext(ctx context.Context, request *UpdateGSLBRequestType) (*UpdateGSLBResponseType, error) { - response := new(UpdateGSLBResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateGSLB(request *UpdateGSLBRequestType) (*UpdateGSLBResponseType, error) { - return service.UpdateGSLBContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneGSLBContext(ctx context.Context, request *DeleteOneGSLBRequestType) (*DeleteOneGSLBResponseType, error) { - response := new(DeleteOneGSLBResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneGSLB(request *DeleteOneGSLBRequestType) (*DeleteOneGSLBResponseType, error) { - return service.DeleteOneGSLBContext( - context.Background(), - request, - ) -} - -func (service *dynect) ActivateGSLBContext(ctx context.Context, request *ActivateGSLBRequestType) (*ActivateGSLBResponseType, error) { - response := new(ActivateGSLBResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ActivateGSLB(request *ActivateGSLBRequestType) (*ActivateGSLBResponseType, error) { - return service.ActivateGSLBContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeactivateGSLBContext(ctx context.Context, request *DeactivateGSLBRequestType) (*DeactivateGSLBResponseType, error) { - response := new(DeactivateGSLBResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeactivateGSLB(request *DeactivateGSLBRequestType) (*DeactivateGSLBResponseType, error) { - return service.DeactivateGSLBContext( - context.Background(), - request, - ) -} - -func (service *dynect) RecoverGSLBContext(ctx context.Context, request *RecoverGSLBRequestType) (*RecoverGSLBResponseType, error) { - response := new(RecoverGSLBResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RecoverGSLB(request *RecoverGSLBRequestType) (*RecoverGSLBResponseType, error) { - return service.RecoverGSLBContext( - context.Background(), - request, - ) -} - -func (service *dynect) RecoverGSLBIPContext(ctx context.Context, request *RecoverGSLBIPRequestType) (*RecoverGSLBIPResponseType, error) { - response := new(RecoverGSLBIPResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RecoverGSLBIP(request *RecoverGSLBIPRequestType) (*RecoverGSLBIPResponseType, error) { - return service.RecoverGSLBIPContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateGSLBRegionContext(ctx context.Context, request *CreateGSLBRegionRequestType) (*CreateGSLBRegionResponseType, error) { - response := new(CreateGSLBRegionResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateGSLBRegion(request *CreateGSLBRegionRequestType) (*CreateGSLBRegionResponseType, error) { - return service.CreateGSLBRegionContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneGSLBRegionContext(ctx context.Context, request *GetOneGSLBRegionRequestType) (*GetOneGSLBRegionResponseType, error) { - response := new(GetOneGSLBRegionResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneGSLBRegion(request *GetOneGSLBRegionRequestType) (*GetOneGSLBRegionResponseType, error) { - return service.GetOneGSLBRegionContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetGSLBRegionsContext(ctx context.Context, request *GetGSLBRegionsRequestType) (*GetGSLBRegionsResponseType, error) { - response := new(GetGSLBRegionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetGSLBRegions(request *GetGSLBRegionsRequestType) (*GetGSLBRegionsResponseType, error) { - return service.GetGSLBRegionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateGSLBRegionContext(ctx context.Context, request *UpdateGSLBRegionRequestType) (*UpdateGSLBRegionResponseType, error) { - response := new(UpdateGSLBRegionResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateGSLBRegion(request *UpdateGSLBRegionRequestType) (*UpdateGSLBRegionResponseType, error) { - return service.UpdateGSLBRegionContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneGSLBRegionContext(ctx context.Context, request *DeleteOneGSLBRegionRequestType) (*DeleteOneGSLBRegionResponseType, error) { - response := new(DeleteOneGSLBRegionResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneGSLBRegion(request *DeleteOneGSLBRegionRequestType) (*DeleteOneGSLBRegionResponseType, error) { - return service.DeleteOneGSLBRegionContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateGSLBRegionPoolEntryContext(ctx context.Context, request *CreateGSLBRegionPoolEntryRequestType) (*CreateGSLBRegionPoolEntryResponseType, error) { - response := new(CreateGSLBRegionPoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateGSLBRegionPoolEntry(request *CreateGSLBRegionPoolEntryRequestType) (*CreateGSLBRegionPoolEntryResponseType, error) { - return service.CreateGSLBRegionPoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateGSLBRegionPoolEntryContext(ctx context.Context, request *UpdateGSLBRegionPoolEntryRequestType) (*UpdateGSLBRegionPoolEntryResponseType, error) { - response := new(UpdateGSLBRegionPoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateGSLBRegionPoolEntry(request *UpdateGSLBRegionPoolEntryRequestType) (*UpdateGSLBRegionPoolEntryResponseType, error) { - return service.UpdateGSLBRegionPoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneGSLBRegionPoolEntryContext(ctx context.Context, request *GetOneGSLBRegionPoolEntryRequestType) (*GetOneGSLBRegionPoolEntryResponseType, error) { - response := new(GetOneGSLBRegionPoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneGSLBRegionPoolEntry(request *GetOneGSLBRegionPoolEntryRequestType) (*GetOneGSLBRegionPoolEntryResponseType, error) { - return service.GetOneGSLBRegionPoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetGSLBRegionPoolEntriesContext(ctx context.Context, request *GetGSLBRegionPoolEntriesRequestType) (*GetGSLBRegionPoolEntriesResponseType, error) { - response := new(GetGSLBRegionPoolEntriesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetGSLBRegionPoolEntries(request *GetGSLBRegionPoolEntriesRequestType) (*GetGSLBRegionPoolEntriesResponseType, error) { - return service.GetGSLBRegionPoolEntriesContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneGSLBRegionPoolEntryContext(ctx context.Context, request *DeleteOneGSLBRegionPoolEntryRequestType) (*DeleteOneGSLBRegionPoolEntryResponseType, error) { - response := new(DeleteOneGSLBRegionPoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneGSLBRegionPoolEntry(request *DeleteOneGSLBRegionPoolEntryRequestType) (*DeleteOneGSLBRegionPoolEntryResponseType, error) { - return service.DeleteOneGSLBRegionPoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateRTTMContext(ctx context.Context, request *CreateRTTMRequestType) (*CreateRTTMResponseType, error) { - response := new(CreateRTTMResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateRTTM(request *CreateRTTMRequestType) (*CreateRTTMResponseType, error) { - return service.CreateRTTMContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneRTTMContext(ctx context.Context, request *GetOneRTTMRequestType) (*GetOneRTTMResponseType, error) { - response := new(GetOneRTTMResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneRTTM(request *GetOneRTTMRequestType) (*GetOneRTTMResponseType, error) { - return service.GetOneRTTMContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetRTTMsContext(ctx context.Context, request *GetRTTMsRequestType) (*GetRTTMsResponseType, error) { - response := new(GetRTTMsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetRTTMs(request *GetRTTMsRequestType) (*GetRTTMsResponseType, error) { - return service.GetRTTMsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateRTTMContext(ctx context.Context, request *UpdateRTTMRequestType) (*UpdateRTTMResponseType, error) { - response := new(UpdateRTTMResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateRTTM(request *UpdateRTTMRequestType) (*UpdateRTTMResponseType, error) { - return service.UpdateRTTMContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneRTTMContext(ctx context.Context, request *DeleteOneRTTMRequestType) (*DeleteOneRTTMResponseType, error) { - response := new(DeleteOneRTTMResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneRTTM(request *DeleteOneRTTMRequestType) (*DeleteOneRTTMResponseType, error) { - return service.DeleteOneRTTMContext( - context.Background(), - request, - ) -} - -func (service *dynect) ActivateRTTMContext(ctx context.Context, request *ActivateRTTMRequestType) (*ActivateRTTMResponseType, error) { - response := new(ActivateRTTMResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ActivateRTTM(request *ActivateRTTMRequestType) (*ActivateRTTMResponseType, error) { - return service.ActivateRTTMContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeactivateRTTMContext(ctx context.Context, request *DeactivateRTTMRequestType) (*DeactivateRTTMResponseType, error) { - response := new(DeactivateRTTMResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeactivateRTTM(request *DeactivateRTTMRequestType) (*DeactivateRTTMResponseType, error) { - return service.DeactivateRTTMContext( - context.Background(), - request, - ) -} - -func (service *dynect) RecoverRTTMContext(ctx context.Context, request *RecoverRTTMRequestType) (*RecoverRTTMResponseType, error) { - response := new(RecoverRTTMResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RecoverRTTM(request *RecoverRTTMRequestType) (*RecoverRTTMResponseType, error) { - return service.RecoverRTTMContext( - context.Background(), - request, - ) -} - -func (service *dynect) RecoverRTTMIPContext(ctx context.Context, request *RecoverRTTMIPRequestType) (*RecoverRTTMIPResponseType, error) { - response := new(RecoverRTTMIPResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RecoverRTTMIP(request *RecoverRTTMIPRequestType) (*RecoverRTTMIPResponseType, error) { - return service.RecoverRTTMIPContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetRTTMLogsContext(ctx context.Context, request *GetRTTMLogsRequestType) (*GetRTTMLogsResponseType, error) { - response := new(GetRTTMLogsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetRTTMLogs(request *GetRTTMLogsRequestType) (*GetRTTMLogsResponseType, error) { - return service.GetRTTMLogsContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetRTTMRRSetsContext(ctx context.Context, request *GetRTTMRRSetsRequestType) (*GetRTTMRRSetsResponseType, error) { - response := new(GetRTTMRRSetsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetRTTMRRSets(request *GetRTTMRRSetsRequestType) (*GetRTTMRRSetsResponseType, error) { - return service.GetRTTMRRSetsContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateRTTMRegionContext(ctx context.Context, request *CreateRTTMRegionRequestType) (*CreateRTTMRegionResponseType, error) { - response := new(CreateRTTMRegionResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateRTTMRegion(request *CreateRTTMRegionRequestType) (*CreateRTTMRegionResponseType, error) { - return service.CreateRTTMRegionContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneRTTMRegionContext(ctx context.Context, request *GetOneRTTMRegionRequestType) (*GetOneRTTMRegionResponseType, error) { - response := new(GetOneRTTMRegionResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneRTTMRegion(request *GetOneRTTMRegionRequestType) (*GetOneRTTMRegionResponseType, error) { - return service.GetOneRTTMRegionContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetRTTMRegionsContext(ctx context.Context, request *GetRTTMRegionsRequestType) (*GetRTTMRegionsResponseType, error) { - response := new(GetRTTMRegionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetRTTMRegions(request *GetRTTMRegionsRequestType) (*GetRTTMRegionsResponseType, error) { - return service.GetRTTMRegionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateRTTMRegionContext(ctx context.Context, request *UpdateRTTMRegionRequestType) (*UpdateRTTMRegionResponseType, error) { - response := new(UpdateRTTMRegionResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateRTTMRegion(request *UpdateRTTMRegionRequestType) (*UpdateRTTMRegionResponseType, error) { - return service.UpdateRTTMRegionContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneRTTMRegionContext(ctx context.Context, request *DeleteOneRTTMRegionRequestType) (*DeleteOneRTTMRegionResponseType, error) { - response := new(DeleteOneRTTMRegionResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneRTTMRegion(request *DeleteOneRTTMRegionRequestType) (*DeleteOneRTTMRegionResponseType, error) { - return service.DeleteOneRTTMRegionContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateRTTMRegionPoolEntryContext(ctx context.Context, request *CreateRTTMRegionPoolEntryRequestType) (*CreateRTTMRegionPoolEntryResponseType, error) { - response := new(CreateRTTMRegionPoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateRTTMRegionPoolEntry(request *CreateRTTMRegionPoolEntryRequestType) (*CreateRTTMRegionPoolEntryResponseType, error) { - return service.CreateRTTMRegionPoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateRTTMRegionPoolEntryContext(ctx context.Context, request *UpdateRTTMRegionPoolEntryRequestType) (*UpdateRTTMRegionPoolEntryResponseType, error) { - response := new(UpdateRTTMRegionPoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateRTTMRegionPoolEntry(request *UpdateRTTMRegionPoolEntryRequestType) (*UpdateRTTMRegionPoolEntryResponseType, error) { - return service.UpdateRTTMRegionPoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneRTTMRegionPoolEntryContext(ctx context.Context, request *GetOneRTTMRegionPoolEntryRequestType) (*GetOneRTTMRegionPoolEntryResponseType, error) { - response := new(GetOneRTTMRegionPoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneRTTMRegionPoolEntry(request *GetOneRTTMRegionPoolEntryRequestType) (*GetOneRTTMRegionPoolEntryResponseType, error) { - return service.GetOneRTTMRegionPoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetRTTMRegionPoolEntriesContext(ctx context.Context, request *GetRTTMRegionPoolEntriesRequestType) (*GetRTTMRegionPoolEntriesResponseType, error) { - response := new(GetRTTMRegionPoolEntriesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetRTTMRegionPoolEntries(request *GetRTTMRegionPoolEntriesRequestType) (*GetRTTMRegionPoolEntriesResponseType, error) { - return service.GetRTTMRegionPoolEntriesContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneRTTMRegionPoolEntryContext(ctx context.Context, request *DeleteOneRTTMRegionPoolEntryRequestType) (*DeleteOneRTTMRegionPoolEntryResponseType, error) { - response := new(DeleteOneRTTMRegionPoolEntryResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneRTTMRegionPoolEntry(request *DeleteOneRTTMRegionPoolEntryRequestType) (*DeleteOneRTTMRegionPoolEntryResponseType, error) { - return service.DeleteOneRTTMRegionPoolEntryContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateHTTPRedirectContext(ctx context.Context, request *CreateHTTPRedirectRequestType) (*CreateHTTPRedirectResponseType, error) { - response := new(CreateHTTPRedirectResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateHTTPRedirect(request *CreateHTTPRedirectRequestType) (*CreateHTTPRedirectResponseType, error) { - return service.CreateHTTPRedirectContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneHTTPRedirectContext(ctx context.Context, request *GetOneHTTPRedirectRequestType) (*GetOneHTTPRedirectResponseType, error) { - response := new(GetOneHTTPRedirectResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneHTTPRedirect(request *GetOneHTTPRedirectRequestType) (*GetOneHTTPRedirectResponseType, error) { - return service.GetOneHTTPRedirectContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetHTTPRedirectsContext(ctx context.Context, request *GetHTTPRedirectsRequestType) (*GetHTTPRedirectsResponseType, error) { - response := new(GetHTTPRedirectsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetHTTPRedirects(request *GetHTTPRedirectsRequestType) (*GetHTTPRedirectsResponseType, error) { - return service.GetHTTPRedirectsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateHTTPRedirectContext(ctx context.Context, request *UpdateHTTPRedirectRequestType) (*UpdateHTTPRedirectResponseType, error) { - response := new(UpdateHTTPRedirectResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateHTTPRedirect(request *UpdateHTTPRedirectRequestType) (*UpdateHTTPRedirectResponseType, error) { - return service.UpdateHTTPRedirectContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneHTTPRedirectContext(ctx context.Context, request *DeleteOneHTTPRedirectRequestType) (*DeleteOneHTTPRedirectResponseType, error) { - response := new(DeleteOneHTTPRedirectResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneHTTPRedirect(request *DeleteOneHTTPRedirectRequestType) (*DeleteOneHTTPRedirectResponseType, error) { - return service.DeleteOneHTTPRedirectContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateAdvRedirectRuleContext(ctx context.Context, request *CreateAdvRedirectRuleRequestType) (*CreateAdvRedirectRuleResponseType, error) { - response := new(CreateAdvRedirectRuleResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateAdvRedirectRule(request *CreateAdvRedirectRuleRequestType) (*CreateAdvRedirectRuleResponseType, error) { - return service.CreateAdvRedirectRuleContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateAdvRedirectRuleContext(ctx context.Context, request *UpdateAdvRedirectRuleRequestType) (*UpdateAdvRedirectRuleResponseType, error) { - response := new(UpdateAdvRedirectRuleResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateAdvRedirectRule(request *UpdateAdvRedirectRuleRequestType) (*UpdateAdvRedirectRuleResponseType, error) { - return service.UpdateAdvRedirectRuleContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneAdvRedirectRuleContext(ctx context.Context, request *GetOneAdvRedirectRuleRequestType) (*GetOneAdvRedirectRuleResponseType, error) { - response := new(GetOneAdvRedirectRuleResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneAdvRedirectRule(request *GetOneAdvRedirectRuleRequestType) (*GetOneAdvRedirectRuleResponseType, error) { - return service.GetOneAdvRedirectRuleContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetAdvRedirectRulesContext(ctx context.Context, request *GetAdvRedirectRulesRequestType) (*GetAdvRedirectRulesResponseType, error) { - response := new(GetAdvRedirectRulesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetAdvRedirectRules(request *GetAdvRedirectRulesRequestType) (*GetAdvRedirectRulesResponseType, error) { - return service.GetAdvRedirectRulesContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneAdvRedirectRuleContext(ctx context.Context, request *DeleteOneAdvRedirectRuleRequestType) (*DeleteOneAdvRedirectRuleResponseType, error) { - response := new(DeleteOneAdvRedirectRuleResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneAdvRedirectRule(request *DeleteOneAdvRedirectRuleRequestType) (*DeleteOneAdvRedirectRuleResponseType, error) { - return service.DeleteOneAdvRedirectRuleContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateAdvRedirectContext(ctx context.Context, request *CreateAdvRedirectRequestType) (*CreateAdvRedirectResponseType, error) { - response := new(CreateAdvRedirectResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateAdvRedirect(request *CreateAdvRedirectRequestType) (*CreateAdvRedirectResponseType, error) { - return service.CreateAdvRedirectContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneAdvRedirectContext(ctx context.Context, request *GetOneAdvRedirectRequestType) (*GetOneAdvRedirectResponseType, error) { - response := new(GetOneAdvRedirectResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneAdvRedirect(request *GetOneAdvRedirectRequestType) (*GetOneAdvRedirectResponseType, error) { - return service.GetOneAdvRedirectContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetAdvRedirectsContext(ctx context.Context, request *GetAdvRedirectsRequestType) (*GetAdvRedirectsResponseType, error) { - response := new(GetAdvRedirectsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetAdvRedirects(request *GetAdvRedirectsRequestType) (*GetAdvRedirectsResponseType, error) { - return service.GetAdvRedirectsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateAdvRedirectContext(ctx context.Context, request *UpdateAdvRedirectRequestType) (*UpdateAdvRedirectResponseType, error) { - response := new(UpdateAdvRedirectResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateAdvRedirect(request *UpdateAdvRedirectRequestType) (*UpdateAdvRedirectResponseType, error) { - return service.UpdateAdvRedirectContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneAdvRedirectContext(ctx context.Context, request *DeleteOneAdvRedirectRequestType) (*DeleteOneAdvRedirectResponseType, error) { - response := new(DeleteOneAdvRedirectResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneAdvRedirect(request *DeleteOneAdvRedirectRequestType) (*DeleteOneAdvRedirectResponseType, error) { - return service.DeleteOneAdvRedirectContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetNodeListContext(ctx context.Context, request *GetNodeListRequestType) (*GetNodeListResponseType, error) { - response := new(GetNodeListResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetNodeList(request *GetNodeListRequestType) (*GetNodeListResponseType, error) { - return service.GetNodeListContext( - context.Background(), - request, - ) -} - -func (service *dynect) PublishZoneContext(ctx context.Context, request *PublishZoneRequestType) (*PublishZoneResponseType, error) { - response := new(PublishZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) PublishZone(request *PublishZoneRequestType) (*PublishZoneResponseType, error) { - return service.PublishZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) PruneZoneContext(ctx context.Context, request *PruneZoneRequestType) (*PruneZoneResponseType, error) { - response := new(PruneZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) PruneZone(request *PruneZoneRequestType) (*PruneZoneResponseType, error) { - return service.PruneZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) FreezeZoneContext(ctx context.Context, request *FreezeZoneRequestType) (*FreezeZoneResponseType, error) { - response := new(FreezeZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) FreezeZone(request *FreezeZoneRequestType) (*FreezeZoneResponseType, error) { - return service.FreezeZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) ThawZoneContext(ctx context.Context, request *ThawZoneRequestType) (*ThawZoneResponseType, error) { - response := new(ThawZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ThawZone(request *ThawZoneRequestType) (*ThawZoneResponseType, error) { - return service.ThawZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) RestoreZoneContext(ctx context.Context, request *RestoreZoneRequestType) (*RestoreZoneResponseType, error) { - response := new(RestoreZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) RestoreZone(request *RestoreZoneRequestType) (*RestoreZoneResponseType, error) { - return service.RestoreZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) BlockZoneContext(ctx context.Context, request *BlockZoneRequestType) (*BlockZoneResponseType, error) { - response := new(BlockZoneResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) BlockZone(request *BlockZoneRequestType) (*BlockZoneResponseType, error) { - return service.BlockZoneContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteZoneChangesetContext(ctx context.Context, request *DeleteZoneChangesetRequestType) (*DeleteZoneChangesetResponseType, error) { - response := new(DeleteZoneChangesetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteZoneChangeset(request *DeleteZoneChangesetRequestType) (*DeleteZoneChangesetResponseType, error) { - return service.DeleteZoneChangesetContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetZoneChangesetContext(ctx context.Context, request *GetZoneChangesetRequestType) (*GetZoneChangesetResponseType, error) { - response := new(GetZoneChangesetResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetZoneChangeset(request *GetZoneChangesetRequestType) (*GetZoneChangesetResponseType, error) { - return service.GetZoneChangesetContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetZoneNotesContext(ctx context.Context, request *GetZoneNotesRequestType) (*GetZoneNotesResponseType, error) { - response := new(GetZoneNotesResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetZoneNotes(request *GetZoneNotesRequestType) (*GetZoneNotesResponseType, error) { - return service.GetZoneNotesContext( - context.Background(), - request, - ) -} - -func (service *dynect) UploadZoneFileContext(ctx context.Context, request *UploadZoneFileRequestType) (*UploadZoneFileResponseType, error) { - response := new(UploadZoneFileResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UploadZoneFile(request *UploadZoneFileRequestType) (*UploadZoneFileResponseType, error) { - return service.UploadZoneFileContext( - context.Background(), - request, - ) -} - -func (service *dynect) TransferZoneInContext(ctx context.Context, request *TransferZoneInRequestType) (*TransferZoneInResponseType, error) { - response := new(TransferZoneInResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) TransferZoneIn(request *TransferZoneInRequestType) (*TransferZoneInResponseType, error) { - return service.TransferZoneInContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetTransferStatusContext(ctx context.Context, request *GetTransferStatusRequestType) (*GetTransferStatusResponseType, error) { - response := new(GetTransferStatusResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetTransferStatus(request *GetTransferStatusRequestType) (*GetTransferStatusResponseType, error) { - return service.GetTransferStatusContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetZoneConfigOptionsContext(ctx context.Context, request *GetZoneConfigOptionsRequestType) (*GetZoneConfigOptionsResponseType, error) { - response := new(GetZoneConfigOptionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetZoneConfigOptions(request *GetZoneConfigOptionsRequestType) (*GetZoneConfigOptionsResponseType, error) { - return service.GetZoneConfigOptionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) SetZoneConfigOptionsContext(ctx context.Context, request *SetZoneConfigOptionsRequestType) (*SetZoneConfigOptionsResponseType, error) { - response := new(SetZoneConfigOptionsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) SetZoneConfigOptions(request *SetZoneConfigOptionsRequestType) (*SetZoneConfigOptionsResponseType, error) { - return service.SetZoneConfigOptionsContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateIPTrackContext(ctx context.Context, request *CreateIPTrackRequestType) (*CreateIPTrackResponseType, error) { - response := new(CreateIPTrackResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateIPTrack(request *CreateIPTrackRequestType) (*CreateIPTrackResponseType, error) { - return service.CreateIPTrackContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneIPTrackContext(ctx context.Context, request *GetOneIPTrackRequestType) (*GetOneIPTrackResponseType, error) { - response := new(GetOneIPTrackResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneIPTrack(request *GetOneIPTrackRequestType) (*GetOneIPTrackResponseType, error) { - return service.GetOneIPTrackContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetIPTracksContext(ctx context.Context, request *GetIPTracksRequestType) (*GetIPTracksResponseType, error) { - response := new(GetIPTracksResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetIPTracks(request *GetIPTracksRequestType) (*GetIPTracksResponseType, error) { - return service.GetIPTracksContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateIPTrackContext(ctx context.Context, request *UpdateIPTrackRequestType) (*UpdateIPTrackResponseType, error) { - response := new(UpdateIPTrackResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateIPTrack(request *UpdateIPTrackRequestType) (*UpdateIPTrackResponseType, error) { - return service.UpdateIPTrackContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneIPTrackContext(ctx context.Context, request *DeleteOneIPTrackRequestType) (*DeleteOneIPTrackResponseType, error) { - response := new(DeleteOneIPTrackResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneIPTrack(request *DeleteOneIPTrackRequestType) (*DeleteOneIPTrackResponseType, error) { - return service.DeleteOneIPTrackContext( - context.Background(), - request, - ) -} - -func (service *dynect) ActivateIPTrackContext(ctx context.Context, request *ActivateIPTrackRequestType) (*ActivateIPTrackResponseType, error) { - response := new(ActivateIPTrackResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ActivateIPTrack(request *ActivateIPTrackRequestType) (*ActivateIPTrackResponseType, error) { - return service.ActivateIPTrackContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeactivateIPTrackContext(ctx context.Context, request *DeactivateIPTrackRequestType) (*DeactivateIPTrackResponseType, error) { - response := new(DeactivateIPTrackResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeactivateIPTrack(request *DeactivateIPTrackRequestType) (*DeactivateIPTrackResponseType, error) { - return service.DeactivateIPTrackContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateDNSSECContext(ctx context.Context, request *CreateDNSSECRequestType) (*CreateDNSSECResponseType, error) { - response := new(CreateDNSSECResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateDNSSEC(request *CreateDNSSECRequestType) (*CreateDNSSECResponseType, error) { - return service.CreateDNSSECContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneDNSSECContext(ctx context.Context, request *GetOneDNSSECRequestType) (*GetOneDNSSECResponseType, error) { - response := new(GetOneDNSSECResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneDNSSEC(request *GetOneDNSSECRequestType) (*GetOneDNSSECResponseType, error) { - return service.GetOneDNSSECContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDNSSECsContext(ctx context.Context, request *GetDNSSECsRequestType) (*GetDNSSECsResponseType, error) { - response := new(GetDNSSECsResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDNSSECs(request *GetDNSSECsRequestType) (*GetDNSSECsResponseType, error) { - return service.GetDNSSECsContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateDNSSECContext(ctx context.Context, request *UpdateDNSSECRequestType) (*UpdateDNSSECResponseType, error) { - response := new(UpdateDNSSECResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateDNSSEC(request *UpdateDNSSECRequestType) (*UpdateDNSSECResponseType, error) { - return service.UpdateDNSSECContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneDNSSECContext(ctx context.Context, request *DeleteOneDNSSECRequestType) (*DeleteOneDNSSECResponseType, error) { - response := new(DeleteOneDNSSECResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneDNSSEC(request *DeleteOneDNSSECRequestType) (*DeleteOneDNSSECResponseType, error) { - return service.DeleteOneDNSSECContext( - context.Background(), - request, - ) -} - -func (service *dynect) ActivateDNSSECContext(ctx context.Context, request *ActivateDNSSECRequestType) (*ActivateDNSSECResponseType, error) { - response := new(ActivateDNSSECResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) ActivateDNSSEC(request *ActivateDNSSECRequestType) (*ActivateDNSSECResponseType, error) { - return service.ActivateDNSSECContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeactivateDNSSECContext(ctx context.Context, request *DeactivateDNSSECRequestType) (*DeactivateDNSSECResponseType, error) { - response := new(DeactivateDNSSECResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeactivateDNSSEC(request *DeactivateDNSSECRequestType) (*DeactivateDNSSECResponseType, error) { - return service.DeactivateDNSSECContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetDNSSECTimelineContext(ctx context.Context, request *GetDNSSECTimelineRequestType) (*GetDNSSECTimelineResponseType, error) { - response := new(GetDNSSECTimelineResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetDNSSECTimeline(request *GetDNSSECTimelineRequestType) (*GetDNSSECTimelineResponseType, error) { - return service.GetDNSSECTimelineContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetTasksContext(ctx context.Context, request *GetTasksRequestType) (*GetTasksResponseType, error) { - response := new(GetTasksResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetTasks(request *GetTasksRequestType) (*GetTasksResponseType, error) { - return service.GetTasksContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneTaskContext(ctx context.Context, request *GetOneTaskRequestType) (*GetOneTaskResponseType, error) { - response := new(GetOneTaskResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneTask(request *GetOneTaskRequestType) (*GetOneTaskResponseType, error) { - return service.GetOneTaskContext( - context.Background(), - request, - ) -} - -func (service *dynect) CancelTaskContext(ctx context.Context, request *CancelTaskRequestType) (*CancelTaskResponseType, error) { - response := new(CancelTaskResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CancelTask(request *CancelTaskRequestType) (*CancelTaskResponseType, error) { - return service.CancelTaskContext( - context.Background(), - request, - ) -} - -func (service *dynect) CreateExtNameserverContext(ctx context.Context, request *CreateExtNameserverRequestType) (*CreateExtNameserverResponseType, error) { - response := new(CreateExtNameserverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) CreateExtNameserver(request *CreateExtNameserverRequestType) (*CreateExtNameserverResponseType, error) { - return service.CreateExtNameserverContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetOneExtNameserverContext(ctx context.Context, request *GetOneExtNameserverRequestType) (*GetOneExtNameserverResponseType, error) { - response := new(GetOneExtNameserverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetOneExtNameserver(request *GetOneExtNameserverRequestType) (*GetOneExtNameserverResponseType, error) { - return service.GetOneExtNameserverContext( - context.Background(), - request, - ) -} - -func (service *dynect) GetExtNameserversContext(ctx context.Context, request *GetExtNameserversRequestType) (*GetExtNameserversResponseType, error) { - response := new(GetExtNameserversResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) GetExtNameservers(request *GetExtNameserversRequestType) (*GetExtNameserversResponseType, error) { - return service.GetExtNameserversContext( - context.Background(), - request, - ) -} - -func (service *dynect) UpdateExtNameserverContext(ctx context.Context, request *UpdateExtNameserverRequestType) (*UpdateExtNameserverResponseType, error) { - response := new(UpdateExtNameserverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) UpdateExtNameserver(request *UpdateExtNameserverRequestType) (*UpdateExtNameserverResponseType, error) { - return service.UpdateExtNameserverContext( - context.Background(), - request, - ) -} - -func (service *dynect) DeleteOneExtNameserverContext(ctx context.Context, request *DeleteOneExtNameserverRequestType) (*DeleteOneExtNameserverResponseType, error) { - response := new(DeleteOneExtNameserverResponseType) - err := service.client.CallContext(ctx, "https://api2.dynect.net/SOAP/", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -func (service *dynect) DeleteOneExtNameserver(request *DeleteOneExtNameserverRequestType) (*DeleteOneExtNameserverResponseType, error) { - return service.DeleteOneExtNameserverContext( - context.Background(), - request, - ) -} diff --git a/provider/google/google.go b/provider/google/google.go index 115de68aa..c3c9270f0 100644 --- a/provider/google/google.go +++ b/provider/google/google.go @@ -144,7 +144,7 @@ func NewGoogleProvider(ctx context.Context, project string, domainFilter endpoin } if project == "" { - mProject, mErr := metadata.ProjectID() + mProject, mErr := metadata.ProjectIDWithContext(ctx) if mErr != nil { return nil, fmt.Errorf("failed to auto-detect the project id: %w", mErr) } diff --git a/provider/inmemory/inmemory.go b/provider/inmemory/inmemory.go index eab515a67..1f636dfda 100644 --- a/provider/inmemory/inmemory.go +++ b/provider/inmemory/inmemory.go @@ -46,7 +46,7 @@ var ( // initialized as dns provider with no records type InMemoryProvider struct { provider.BaseProvider - domain endpoint.DomainFilter + domain endpoint.DomainFilterInterface client *inMemoryClient filter *filter OnApplyChanges func(ctx context.Context, changes *plan.Changes) diff --git a/provider/plural/client.go b/provider/plural/client.go index 0db3659b5..b17b9594f 100644 --- a/provider/plural/client.go +++ b/provider/plural/client.go @@ -23,6 +23,7 @@ import ( "net/url" "strings" + "github.com/Yamashou/gqlgenc/clientv2" "github.com/pluralsh/gqlclient" "github.com/pluralsh/gqlclient/pkg/utils" ) @@ -76,7 +77,7 @@ func NewClient(conf *Config) (Client, error) { endpoint := base + "/gql" return &client{ ctx: context.Background(), - pluralClient: gqlclient.NewClient(&httpClient, endpoint), + pluralClient: gqlclient.NewClient(&httpClient, endpoint, &clientv2.Options{}), config: conf, }, nil } diff --git a/provider/provider.go b/provider/provider.go index 6a9c591e1..2bbfac161 100644 --- a/provider/provider.go +++ b/provider/provider.go @@ -48,7 +48,7 @@ type Provider interface { // unnecessary (potentially failing) changes. It may also modify other fields, add, or remove // Endpoints. It is permitted to modify the supplied endpoints. AdjustEndpoints(endpoints []*endpoint.Endpoint) ([]*endpoint.Endpoint, error) - GetDomainFilter() endpoint.DomainFilter + GetDomainFilter() endpoint.DomainFilterInterface } type BaseProvider struct{} @@ -57,7 +57,7 @@ func (b BaseProvider) AdjustEndpoints(endpoints []*endpoint.Endpoint) ([]*endpoi return endpoints, nil } -func (b BaseProvider) GetDomainFilter() endpoint.DomainFilter { +func (b BaseProvider) GetDomainFilter() endpoint.DomainFilterInterface { return endpoint.DomainFilter{} } diff --git a/provider/rcode0/rcode0.go b/provider/rcode0/rcode0.go deleted file mode 100644 index 03edc73c3..000000000 --- a/provider/rcode0/rcode0.go +++ /dev/null @@ -1,313 +0,0 @@ -/* -Copyright 2019 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package rcode0 - -import ( - "context" - "fmt" - "net/url" - "os" - "strings" - - rc0 "github.com/nic-at/rc0go" - log "github.com/sirupsen/logrus" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" - "sigs.k8s.io/external-dns/provider" -) - -// RcodeZeroProvider implements the DNS provider for RcodeZero Anycast DNS. -type RcodeZeroProvider struct { - provider.BaseProvider - Client *rc0.Client - - DomainFilter endpoint.DomainFilter - DryRun bool - TXTEncrypt bool - Key []byte -} - -// NewRcodeZeroProvider creates a new RcodeZero Anycast DNS provider. -// -// Returns the provider or an error if a provider could not be created. -func NewRcodeZeroProvider(domainFilter endpoint.DomainFilter, dryRun bool, txtEnc bool) (*RcodeZeroProvider, error) { - client, err := rc0.NewClient(os.Getenv("RC0_API_KEY")) - if err != nil { - return nil, err - } - - value := os.Getenv("RC0_BASE_URL") - if len(value) != 0 { - client.BaseURL, err = url.Parse(os.Getenv("RC0_BASE_URL")) - } - - if err != nil { - return nil, fmt.Errorf("failed to initialize rcodezero provider: %v", err) - } - - provider := &RcodeZeroProvider{ - Client: client, - DomainFilter: domainFilter, - DryRun: dryRun, - TXTEncrypt: txtEnc, - } - - if txtEnc { - provider.Key = []byte(os.Getenv("RC0_ENC_KEY")) - } - - return provider, nil -} - -// Zones returns filtered zones if filter is set -func (p *RcodeZeroProvider) Zones() ([]*rc0.Zone, error) { - var result []*rc0.Zone - - zones, err := p.fetchZones() - if err != nil { - return nil, err - } - - for _, zone := range zones { - if p.DomainFilter.Match(zone.Domain) { - result = append(result, zone) - } - } - - return result, nil -} - -// Records returns resource records -// -// Decrypts TXT records if TXT-Encrypt flag is set and key is provided -func (p *RcodeZeroProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { - zones, err := p.Zones() - if err != nil { - return nil, err - } - - var endpoints []*endpoint.Endpoint - - for _, zone := range zones { - rrset, err := p.fetchRecords(zone.Domain) - if err != nil { - return nil, err - } - - for _, r := range rrset { - if provider.SupportedRecordType(r.Type) { - if p.TXTEncrypt && (p.Key != nil) && strings.EqualFold(r.Type, "TXT") { - p.Client.RRSet.DecryptTXT(p.Key, r) - } - if len(r.Records) > 1 { - for _, _r := range r.Records { - if !_r.Disabled { - endpoints = append(endpoints, endpoint.NewEndpointWithTTL(r.Name, r.Type, endpoint.TTL(r.TTL), _r.Content)) - } - } - } else if !r.Records[0].Disabled { - endpoints = append(endpoints, endpoint.NewEndpointWithTTL(r.Name, r.Type, endpoint.TTL(r.TTL), r.Records[0].Content)) - } - } - } - } - - return endpoints, nil -} - -// ApplyChanges applies a given set of changes in a given zone. -func (p *RcodeZeroProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error { - combinedChanges := make([]*rc0.RRSetChange, 0, len(changes.Create)+len(changes.UpdateNew)+len(changes.Delete)) - - combinedChanges = append(combinedChanges, p.NewRcodezeroChanges(rc0.ChangeTypeADD, changes.Create)...) - combinedChanges = append(combinedChanges, p.NewRcodezeroChanges(rc0.ChangeTypeUPDATE, changes.UpdateNew)...) - combinedChanges = append(combinedChanges, p.NewRcodezeroChanges(rc0.ChangeTypeDELETE, changes.Delete)...) - - return p.submitChanges(combinedChanges) -} - -// Helper function -func rcodezeroChangesByZone(zones []*rc0.Zone, changeSet []*rc0.RRSetChange) map[string][]*rc0.RRSetChange { - changes := make(map[string][]*rc0.RRSetChange) - zoneNameIDMapper := provider.ZoneIDName{} - for _, z := range zones { - zoneNameIDMapper.Add(z.Domain, z.Domain) - changes[z.Domain] = []*rc0.RRSetChange{} - } - - for _, c := range changeSet { - zone, _ := zoneNameIDMapper.FindZone(c.Name) - if zone == "" { - log.Debugf("Skipping record %s because no hosted zone matching record DNS Name was detected", c.Name) - continue - } - changes[zone] = append(changes[zone], c) - } - - return changes -} - -// Helper function -func (p *RcodeZeroProvider) fetchRecords(zoneName string) ([]*rc0.RRType, error) { - var allRecords []*rc0.RRType - - listOptions := rc0.NewListOptions() - - for { - records, page, err := p.Client.RRSet.List(zoneName, listOptions) - if err != nil { - return nil, err - } - - allRecords = append(allRecords, records...) - - if page == nil || (page.CurrentPage == page.LastPage) { - break - } - - listOptions.SetPageNumber(page.CurrentPage + 1) - } - - return allRecords, nil -} - -// Helper function -func (p *RcodeZeroProvider) fetchZones() ([]*rc0.Zone, error) { - var allZones []*rc0.Zone - - listOptions := rc0.NewListOptions() - - for { - zones, page, err := p.Client.Zones.List(listOptions) - if err != nil { - return nil, err - } - allZones = append(allZones, zones...) - - if page == nil || page.IsLastPage() { - break - } - - listOptions.SetPageNumber(page.CurrentPage + 1) - } - - return allZones, nil -} - -// Helper function to submit changes. -// -// Changes are submitted by change type. -func (p *RcodeZeroProvider) submitChanges(changes []*rc0.RRSetChange) error { - if len(changes) == 0 { - return nil - } - - zones, err := p.Zones() - if err != nil { - return err - } - - // separate into per-zone change sets to be passed to the API. - changesByZone := rcodezeroChangesByZone(zones, changes) - for zoneName, changes := range changesByZone { - for _, change := range changes { - logFields := log.Fields{ - "record": change.Name, - "content": change.Records[0].Content, - "type": change.Type, - "action": change.ChangeType, - "zone": zoneName, - } - - log.WithFields(logFields).Info("Changing record.") - - if p.DryRun { - continue - } - - // to avoid accidentally adding extra dot if already present - change.Name = strings.TrimSuffix(change.Name, ".") + "." - - switch change.ChangeType { - case rc0.ChangeTypeADD: - sr, err := p.Client.RRSet.Create(zoneName, []*rc0.RRSetChange{change}) - if err != nil { - return err - } - - if sr.HasError() { - return fmt.Errorf("adding new RR resulted in an error: %v", sr.Message) - } - - case rc0.ChangeTypeUPDATE: - sr, err := p.Client.RRSet.Edit(zoneName, []*rc0.RRSetChange{change}) - if err != nil { - return err - } - - if sr.HasError() { - return fmt.Errorf("updating existing RR resulted in an error: %v", sr.Message) - } - - case rc0.ChangeTypeDELETE: - sr, err := p.Client.RRSet.Delete(zoneName, []*rc0.RRSetChange{change}) - if err != nil { - return err - } - - if sr.HasError() { - return fmt.Errorf("deleting existing RR resulted in an error: %v", sr.Message) - } - - default: - return fmt.Errorf("unsupported changeType submitted: %v", change.ChangeType) - } - } - } - return nil -} - -// NewRcodezeroChanges returns a RcodeZero specific array with rrset change objects. -func (p *RcodeZeroProvider) NewRcodezeroChanges(action string, endpoints []*endpoint.Endpoint) []*rc0.RRSetChange { - changes := make([]*rc0.RRSetChange, 0, len(endpoints)) - - for _, _endpoint := range endpoints { - changes = append(changes, p.NewRcodezeroChange(action, _endpoint)) - } - - return changes -} - -// NewRcodezeroChange returns a RcodeZero specific rrset change object. -func (p *RcodeZeroProvider) NewRcodezeroChange(action string, endpoint *endpoint.Endpoint) *rc0.RRSetChange { - change := &rc0.RRSetChange{ - Type: endpoint.RecordType, - ChangeType: action, - Name: endpoint.DNSName, - Records: []*rc0.Record{{ - Disabled: false, - Content: endpoint.Targets[0], - }}, - } - - if p.TXTEncrypt && (p.Key != nil) && strings.EqualFold(endpoint.RecordType, "TXT") { - p.Client.RRSet.EncryptTXT(p.Key, change) - } - - return change -} diff --git a/provider/rcode0/rcode0_test.go b/provider/rcode0/rcode0_test.go deleted file mode 100644 index 2887c8980..000000000 --- a/provider/rcode0/rcode0_test.go +++ /dev/null @@ -1,394 +0,0 @@ -/* -Copyright 2019 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package rcode0 - -import ( - "context" - "fmt" - "os" - "testing" - - rc0 "github.com/nic-at/rc0go" - "github.com/stretchr/testify/require" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" -) - -const ( - testZoneOne = "testzone1.at" - testZoneTwo = "testzone2.at" - - rrsetChangesUnsupportedChangeType = 0 -) - -type mockRcodeZeroClient rc0.Client - -type mockZoneManagementService struct { - TestNilZonesReturned bool - TestErrorReturned bool -} - -type mockRRSetService struct { - TestErrorReturned bool -} - -func (m *mockZoneManagementService) resetTestConditions() { - m.TestNilZonesReturned = false - m.TestErrorReturned = false -} - -func TestRcodeZeroProvider_Records(t *testing.T) { - mockRRSetService := &mockRRSetService{} - mockZoneManagementService := &mockZoneManagementService{} - - provider := &RcodeZeroProvider{ - Client: (*rc0.Client)(&mockRcodeZeroClient{ - Zones: mockZoneManagementService, - RRSet: mockRRSetService, - }), - } - - ctx := context.Background() - - endpoints, err := provider.Records(ctx) // should return 6 rrs - if err != nil { - t.Errorf("should not fail, %s", err) - } - require.Equal(t, 10, len(endpoints)) - - mockRRSetService.TestErrorReturned = true - - _, err = provider.Records(ctx) - if err == nil { - t.Errorf("expected to fail, %s", err) - } -} - -func TestRcodeZeroProvider_ApplyChanges(t *testing.T) { - mockRRSetService := &mockRRSetService{} - mockZoneManagementService := &mockZoneManagementService{} - - provider := &RcodeZeroProvider{ - Client: (*rc0.Client)(&mockRcodeZeroClient{ - Zones: mockZoneManagementService, - RRSet: mockRRSetService, - }), - DomainFilter: endpoint.NewDomainFilter([]string{testZoneOne}), - } - - changes := mockChanges() - - err := provider.ApplyChanges(context.Background(), changes) - if err != nil { - t.Errorf("should not fail, %s", err) - } -} - -func TestRcodeZeroProvider_NewRcodezeroChanges(t *testing.T) { - provider := &RcodeZeroProvider{} - - changes := mockChanges() - - createChanges := provider.NewRcodezeroChanges(testZoneOne, changes.Create) - require.Equal(t, 4, len(createChanges)) - - deleteChanges := provider.NewRcodezeroChanges(testZoneOne, changes.Delete) - require.Equal(t, 1, len(deleteChanges)) - - updateOldChanges := provider.NewRcodezeroChanges(testZoneOne, changes.UpdateOld) - require.Equal(t, 1, len(updateOldChanges)) - - updateNewChanges := provider.NewRcodezeroChanges(testZoneOne, changes.UpdateNew) - require.Equal(t, 1, len(updateNewChanges)) -} - -func TestRcodeZeroProvider_NewRcodezeroChange(t *testing.T) { - _endpoint := &endpoint.Endpoint{ - RecordType: "A", - DNSName: "app." + testZoneOne, - RecordTTL: 300, - Targets: endpoint.Targets{"target"}, - } - - provider := &RcodeZeroProvider{} - - rrsetChange := provider.NewRcodezeroChange(testZoneOne, _endpoint) - - require.Equal(t, _endpoint.RecordType, rrsetChange.Type) - require.Equal(t, _endpoint.DNSName, rrsetChange.Name) - require.Equal(t, _endpoint.Targets[0], rrsetChange.Records[0].Content) - // require.Equal(t, endpoint.RecordTTL, rrsetChange.TTL) -} - -func Test_submitChanges(t *testing.T) { - mockRRSetService := &mockRRSetService{} - mockZoneManagementService := &mockZoneManagementService{} - - provider := &RcodeZeroProvider{ - Client: (*rc0.Client)(&mockRcodeZeroClient{ - Zones: mockZoneManagementService, - RRSet: mockRRSetService, - }), - DomainFilter: endpoint.NewDomainFilter([]string{testZoneOne}), - } - - changes := mockRRSetChanges(rrsetChangesUnsupportedChangeType) - - err := provider.submitChanges(changes) - - if err == nil { - t.Errorf("expected to fail, %s", err) - } -} - -func mockRRSetChanges(condition int) []*rc0.RRSetChange { - switch condition { - case rrsetChangesUnsupportedChangeType: - return []*rc0.RRSetChange{ - { - Name: testZoneOne, - Type: "A", - ChangeType: "UNSUPPORTED", - Records: []*rc0.Record{{Content: "fail"}}, - }, - } - default: - return nil - } -} - -func mockChanges() *plan.Changes { - changes := &plan.Changes{} - - changes.Create = []*endpoint.Endpoint{ - {DNSName: "new.ext-dns-test." + testZoneOne, Targets: endpoint.Targets{"target"}, RecordType: "A"}, - {DNSName: "new.ext-dns-test-with-ttl." + testZoneOne, Targets: endpoint.Targets{"target"}, RecordType: "A", RecordTTL: 100}, - {DNSName: "new.ext-dns-test.unexpected.com", Targets: endpoint.Targets{"target"}, RecordType: "AAAA"}, - {DNSName: testZoneOne, Targets: endpoint.Targets{"target"}, RecordType: "CNAME"}, - } - changes.Delete = []*endpoint.Endpoint{{DNSName: "foobar.ext-dns-test." + testZoneOne, Targets: endpoint.Targets{"target"}}} - changes.UpdateOld = []*endpoint.Endpoint{{DNSName: "foobar.ext-dns-test." + testZoneOne, Targets: endpoint.Targets{"target-old"}}} - changes.UpdateNew = []*endpoint.Endpoint{{DNSName: "foobar.ext-dns-test." + testZoneOne, Targets: endpoint.Targets{"target-new"}, RecordType: "CNAME", RecordTTL: 100}} - - return changes -} - -func TestRcodeZeroProvider_Zones(t *testing.T) { - mockRRSetService := &mockRRSetService{} - mockZoneManagementService := &mockZoneManagementService{} - - provider := &RcodeZeroProvider{ - Client: (*rc0.Client)(&mockRcodeZeroClient{ - Zones: mockZoneManagementService, - RRSet: mockRRSetService, - }), - } - - mockZoneManagementService.TestNilZonesReturned = true - - zones, err := provider.Zones() - if err != nil { - t.Fatal(err) - } - require.Equal(t, 0, len(zones)) - mockZoneManagementService.resetTestConditions() - - mockZoneManagementService.TestErrorReturned = true - - _, err = provider.Zones() - if err == nil { - t.Errorf("expected to fail, %s", err) - } -} - -func TestNewRcodeZeroProvider(t *testing.T) { - _ = os.Setenv("RC0_API_KEY", "123") - p, err := NewRcodeZeroProvider(endpoint.NewDomainFilter([]string{"ext-dns-test." + testZoneOne + "."}), true, true) - if err != nil { - t.Errorf("should not fail, %s", err) - } - - require.Equal(t, true, p.DryRun) - require.Equal(t, true, p.TXTEncrypt) - require.Equal(t, true, p.DomainFilter.IsConfigured()) - require.Equal(t, false, p.DomainFilter.Match("ext-dns-test."+testZoneTwo+".")) // filter is set, so it should match only provided domains - - p, err = NewRcodeZeroProvider(endpoint.DomainFilter{}, false, false) - - if err != nil { - t.Errorf("should not fail, %s", err) - } - - require.Equal(t, false, p.DryRun) - require.Equal(t, false, p.DomainFilter.IsConfigured()) - require.Equal(t, true, p.DomainFilter.Match("ext-dns-test."+testZoneOne+".")) // filter is not set, so it should match any - - _ = os.Unsetenv("RC0_API_KEY") - _, err = NewRcodeZeroProvider(endpoint.DomainFilter{}, false, false) - - if err == nil { - t.Errorf("expected to fail") - } -} - -/* mocking mockRRSetServiceInterface */ - -func (m *mockRRSetService) List(zone string, options *rc0.ListOptions) ([]*rc0.RRType, *rc0.Page, error) { - if m.TestErrorReturned { - return nil, nil, fmt.Errorf("operation RRSet.List failed") - } - - return mockRRSet(zone), nil, nil -} - -func mockRRSet(zone string) []*rc0.RRType { - return []*rc0.RRType{ - { - Name: "app." + zone + ".", - Type: "TXT", - TTL: 300, - Records: []*rc0.Record{ - { - Content: "\"heritage=external-dns,external-dns/owner=default,external-dns/resource=ingress/default/app\"", - Disabled: false, - }, - }, - }, - { - Name: "app." + zone + ".", - Type: "A", - TTL: 300, - Records: []*rc0.Record{ - { - Content: "127.0.0.1", - Disabled: false, - }, - }, - }, - { - Name: "www." + zone + ".", - Type: "A", - TTL: 300, - Records: []*rc0.Record{ - { - Content: "127.0.0.1", - Disabled: false, - }, - }, - }, - { - Name: zone + ".", - Type: "SOA", - TTL: 3600, - Records: []*rc0.Record{ - { - Content: "sec1.rcode0.net. rcodezero-soa.ipcom.at. 2019011616 10800 3600 604800 3600", - Disabled: false, - }, - }, - }, - { - Name: zone + ".", - Type: "NS", - TTL: 3600, - Records: []*rc0.Record{ - { - Content: "sec2.rcode0.net.", - Disabled: false, - }, - { - Content: "sec1.rcode0.net.", - Disabled: false, - }, - }, - }, - } -} - -func (m *mockRRSetService) Create(zone string, rrsetCreate []*rc0.RRSetChange) (*rc0.StatusResponse, error) { - return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil -} - -func (m *mockRRSetService) Edit(zone string, rrsetEdit []*rc0.RRSetChange) (*rc0.StatusResponse, error) { - return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil -} - -func (m *mockRRSetService) Delete(zone string, rrsetDelete []*rc0.RRSetChange) (*rc0.StatusResponse, error) { - return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil -} - -func (m *mockRRSetService) SubmitChangeSet(zone string, changeSet []*rc0.RRSetChange) (*rc0.StatusResponse, error) { - return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil -} - -func (m *mockRRSetService) EncryptTXT(key []byte, rrType *rc0.RRSetChange) {} - -func (m *mockRRSetService) DecryptTXT(key []byte, rrType *rc0.RRType) {} - -/* mocking ZoneManagementServiceInterface */ - -func (m *mockZoneManagementService) List(options *rc0.ListOptions) ([]*rc0.Zone, *rc0.Page, error) { - if m.TestNilZonesReturned { - return nil, nil, nil - } - - if m.TestErrorReturned { - return nil, nil, fmt.Errorf("operation Zone.List failed") - } - - zones := []*rc0.Zone{ - { - Domain: testZoneOne, - Type: "SLAVE", - // "dnssec": "yes", @todo: add this - // "created": "2018-04-09T09:27:31Z", @todo: add this - LastCheck: "", - Serial: 20180411, - Masters: []string{ - "193.0.2.2", - "2001:db8::2", - }, - }, - { - Domain: testZoneTwo, - Type: "MASTER", - // "dnssec": "no", @todo: add this - // "created": "2019-01-15T13:20:10Z", @todo: add this - LastCheck: "", - Serial: 2019011616, - Masters: []string{ - "", - }, - }, - } - - return zones, nil, nil -} - -func (m *mockZoneManagementService) Get(zone string) (*rc0.Zone, error) { return nil, nil } -func (m *mockZoneManagementService) Create(zoneCreate *rc0.ZoneCreate) (*rc0.StatusResponse, error) { - return nil, nil -} - -func (m *mockZoneManagementService) Edit(zone string, zoneEdit *rc0.ZoneEdit) (*rc0.StatusResponse, error) { - return nil, nil -} -func (m *mockZoneManagementService) Delete(zone string) (*rc0.StatusResponse, error) { return nil, nil } -func (m *mockZoneManagementService) Transfer(zone string) (*rc0.StatusResponse, error) { - return nil, nil -} diff --git a/provider/safedns/safedns.go b/provider/safedns/safedns.go deleted file mode 100644 index 829f7c14b..000000000 --- a/provider/safedns/safedns.go +++ /dev/null @@ -1,242 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package safedns - -import ( - "context" - "fmt" - "os" - - ansClient "github.com/ans-group/sdk-go/pkg/client" - ansConnection "github.com/ans-group/sdk-go/pkg/connection" - "github.com/ans-group/sdk-go/pkg/service/safedns" - log "github.com/sirupsen/logrus" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" - "sigs.k8s.io/external-dns/provider" -) - -// SafeDNS is an interface that is a subset of the SafeDNS service API that are actually used. -// Signatures must match exactly. -type SafeDNS interface { - CreateZoneRecord(zoneName string, req safedns.CreateRecordRequest) (int, error) - DeleteZoneRecord(zoneName string, recordID int) error - GetZone(zoneName string) (safedns.Zone, error) - GetZoneRecord(zoneName string, recordID int) (safedns.Record, error) - GetZoneRecords(zoneName string, parameters ansConnection.APIRequestParameters) ([]safedns.Record, error) - GetZones(parameters ansConnection.APIRequestParameters) ([]safedns.Zone, error) - PatchZoneRecord(zoneName string, recordID int, patch safedns.PatchRecordRequest) (int, error) - UpdateZoneRecord(zoneName string, record safedns.Record) (int, error) -} - -// SafeDNSProvider implements the DNS provider spec for UKFast SafeDNS. -type SafeDNSProvider struct { - provider.BaseProvider - Client SafeDNS - // Only consider hosted zones managing domains ending in this suffix - domainFilter endpoint.DomainFilter - DryRun bool - APIRequestParams ansConnection.APIRequestParameters -} - -// ZoneRecord is a datatype to simplify management of a record in a zone. -type ZoneRecord struct { - ID int - Name string - Type safedns.RecordType - TTL safedns.RecordTTL - Zone string - Content string -} - -func NewSafeDNSProvider(domainFilter endpoint.DomainFilter, dryRun bool) (*SafeDNSProvider, error) { - token, ok := os.LookupEnv("SAFEDNS_TOKEN") - if !ok { - return nil, fmt.Errorf("no SAFEDNS_TOKEN found in environment") - } - - ukfAPIConnection := ansConnection.NewAPIKeyCredentialsAPIConnection(token) - ansClient := ansClient.NewClient(ukfAPIConnection) - safeDNS := ansClient.SafeDNSService() - - provider := &SafeDNSProvider{ - Client: safeDNS, - domainFilter: domainFilter, - DryRun: dryRun, - APIRequestParams: *ansConnection.NewAPIRequestParameters(), - } - return provider, nil -} - -// Zones returns the list of hosted zones in the SafeDNS account -func (p *SafeDNSProvider) Zones(ctx context.Context) ([]safedns.Zone, error) { - var zones []safedns.Zone - - allZones, err := p.Client.GetZones(p.APIRequestParams) - if err != nil { - return nil, err - } - - // Check each found zone to see whether they match the domain filter provided. If they do, append it to the array of - // zones defined above. If not, continue to the next item in the loop. - for _, zone := range allZones { - if p.domainFilter.Match(zone.Name) { - zones = append(zones, zone) - } else { - continue - } - } - return zones, nil -} - -func (p *SafeDNSProvider) ZoneRecords(ctx context.Context) ([]ZoneRecord, error) { - zones, err := p.Zones(ctx) - if err != nil { - return nil, err - } - - var zoneRecords []ZoneRecord - for _, zone := range zones { - // For each zone in the zonelist, get all records of an ExternalDNS supported type. - records, err := p.Client.GetZoneRecords(zone.Name, p.APIRequestParams) - if err != nil { - return nil, err - } - for _, r := range records { - zoneRecord := ZoneRecord{ - ID: r.ID, - Name: r.Name, - Type: r.Type, - TTL: r.TTL, - Zone: zone.Name, - Content: r.Content, - } - zoneRecords = append(zoneRecords, zoneRecord) - } - } - return zoneRecords, nil -} - -// Records returns a list of Endpoint resources created from all records in supported zones. -func (p *SafeDNSProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { - var endpoints []*endpoint.Endpoint - zoneRecords, err := p.ZoneRecords(ctx) - if err != nil { - return nil, err - } - for _, r := range zoneRecords { - if provider.SupportedRecordType(string(r.Type)) { - endpoints = append(endpoints, endpoint.NewEndpointWithTTL(r.Name, string(r.Type), endpoint.TTL(r.TTL), r.Content)) - } - } - return endpoints, nil -} - -// ApplyChanges applies a given set of changes in a given zone. -func (p *SafeDNSProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error { - // Identify the zone name for each record - zoneNameIDMapper := provider.ZoneIDName{} - - zones, err := p.Zones(ctx) - if err != nil { - return err - } - for _, zone := range zones { - zoneNameIDMapper.Add(zone.Name, zone.Name) - } - - zoneRecords, err := p.ZoneRecords(ctx) - if err != nil { - return err - } - - for _, endpoint := range changes.Create { - _, ZoneName := zoneNameIDMapper.FindZone(endpoint.DNSName) - for _, target := range endpoint.Targets { - request := safedns.CreateRecordRequest{ - Name: endpoint.DNSName, - Type: endpoint.RecordType, - Content: target, - } - log.WithFields(log.Fields{ - "zoneID": ZoneName, - "dnsName": endpoint.DNSName, - "recordType": endpoint.RecordType, - "Value": target, - }).Info("Creating record") - _, err := p.Client.CreateZoneRecord(ZoneName, request) - if err != nil { - return err - } - } - } - for _, endpoint := range changes.UpdateNew { - // Currently iterates over each zoneRecord in ZoneRecords for each Endpoint - // in UpdateNew; the same will go for Delete. As it's double-iteration, - // that's O(n^2), which isn't great. No performance issues have been noted - // thus far. - var zoneRecord ZoneRecord - for _, target := range endpoint.Targets { - for _, zr := range zoneRecords { - if zr.Name == endpoint.DNSName && zr.Content == target { - zoneRecord = zr - break - } - } - - newTTL := safedns.RecordTTL(int(endpoint.RecordTTL)) - newRecord := safedns.PatchRecordRequest{ - Name: endpoint.DNSName, - Content: target, - TTL: &newTTL, - Type: endpoint.RecordType, - } - log.WithFields(log.Fields{ - "zoneID": zoneRecord.Zone, - "dnsName": newRecord.Name, - "recordType": newRecord.Type, - "Value": newRecord.Content, - "Priority": newRecord.Priority, - }).Info("Patching record") - _, err = p.Client.PatchZoneRecord(zoneRecord.Zone, zoneRecord.ID, newRecord) - if err != nil { - return err - } - } - } - for _, endpoint := range changes.Delete { - // As above, currently iterates in O(n^2). May be a good start for optimisations. - var zoneRecord ZoneRecord - for _, zr := range zoneRecords { - if zr.Name == endpoint.DNSName && string(zr.Type) == endpoint.RecordType { - zoneRecord = zr - break - } - } - log.WithFields(log.Fields{ - "zoneID": zoneRecord.Zone, - "dnsName": zoneRecord.Name, - "recordType": zoneRecord.Type, - }).Info("Deleting record") - err := p.Client.DeleteZoneRecord(zoneRecord.Zone, zoneRecord.ID) - if err != nil { - return err - } - } - return nil -} diff --git a/provider/safedns/safedns_test.go b/provider/safedns/safedns_test.go deleted file mode 100644 index e066f75e8..000000000 --- a/provider/safedns/safedns_test.go +++ /dev/null @@ -1,366 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package safedns - -import ( - "context" - "os" - "testing" - - ansConnection "github.com/ans-group/sdk-go/pkg/connection" - "github.com/ans-group/sdk-go/pkg/service/safedns" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - "github.com/stretchr/testify/require" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" -) - -// Create an implementation of the SafeDNS interface for Mocking -type MockSafeDNSService struct { - mock.Mock -} - -func (m *MockSafeDNSService) CreateZoneRecord(zoneName string, req safedns.CreateRecordRequest) (int, error) { - args := m.Called(zoneName, req) - return args.Int(0), args.Error(1) -} - -func (m *MockSafeDNSService) DeleteZoneRecord(zoneName string, recordID int) error { - args := m.Called(zoneName, recordID) - return args.Error(0) -} - -func (m *MockSafeDNSService) GetZone(zoneName string) (safedns.Zone, error) { - args := m.Called(zoneName) - return args.Get(0).(safedns.Zone), args.Error(1) -} - -func (m *MockSafeDNSService) GetZoneRecord(zoneName string, recordID int) (safedns.Record, error) { - args := m.Called(zoneName, recordID) - return args.Get(0).(safedns.Record), args.Error(1) -} - -func (m *MockSafeDNSService) GetZoneRecords(zoneName string, parameters ansConnection.APIRequestParameters) ([]safedns.Record, error) { - args := m.Called(zoneName, parameters) - return args.Get(0).([]safedns.Record), args.Error(1) -} - -func (m *MockSafeDNSService) GetZones(parameters ansConnection.APIRequestParameters) ([]safedns.Zone, error) { - args := m.Called(parameters) - return args.Get(0).([]safedns.Zone), args.Error(1) -} - -func (m *MockSafeDNSService) PatchZoneRecord(zoneName string, recordID int, patch safedns.PatchRecordRequest) (int, error) { - args := m.Called(zoneName, recordID, patch) - return args.Int(0), args.Error(1) -} - -func (m *MockSafeDNSService) UpdateZoneRecord(zoneName string, record safedns.Record) (int, error) { - args := m.Called(zoneName, record) - return args.Int(0), args.Error(1) -} - -// Utility functions -func createZones() []safedns.Zone { - return []safedns.Zone{ - {Name: "foo.com", Description: "Foo dot com"}, - {Name: "bar.io", Description: ""}, - {Name: "baz.org", Description: "Org"}, - } -} - -func createFooRecords() []safedns.Record { - return []safedns.Record{ - { - ID: 11, - Type: safedns.RecordTypeA, - Name: "foo.com", - Content: "targetFoo", - TTL: safedns.RecordTTL(3600), - }, - { - ID: 12, - Type: safedns.RecordTypeTXT, - Name: "foo.com", - Content: "text", - TTL: safedns.RecordTTL(3600), - }, - { - ID: 13, - Type: safedns.RecordTypeCAA, - Name: "foo.com", - Content: "", - TTL: safedns.RecordTTL(3600), - }, - } -} - -func createBarRecords() []safedns.Record { - return []safedns.Record{} -} - -func createBazRecords() []safedns.Record { - return []safedns.Record{ - { - ID: 31, - Type: safedns.RecordTypeA, - Name: "baz.org", - Content: "targetBaz", - TTL: safedns.RecordTTL(3600), - }, - { - ID: 32, - Type: safedns.RecordTypeTXT, - Name: "baz.org", - Content: "text", - TTL: safedns.RecordTTL(3600), - }, - { - ID: 33, - Type: safedns.RecordTypeA, - Name: "api.baz.org", - Content: "targetBazAPI", - TTL: safedns.RecordTTL(3600), - }, - { - ID: 34, - Type: safedns.RecordTypeTXT, - Name: "api.baz.org", - Content: "text", - TTL: safedns.RecordTTL(3600), - }, - } -} - -// Actual tests -func TestNewSafeDNSProvider(t *testing.T) { - _ = os.Setenv("SAFEDNS_TOKEN", "DUMMYVALUE") - _, err := NewSafeDNSProvider(endpoint.NewDomainFilter([]string{"ext-dns-test.zalando.to."}), true) - require.NoError(t, err) - - _ = os.Unsetenv("SAFEDNS_TOKEN") - _, err = NewSafeDNSProvider(endpoint.NewDomainFilter([]string{"ext-dns-test.zalando.to."}), true) - require.Error(t, err) -} - -func TestRecords(t *testing.T) { - mockSafeDNSService := MockSafeDNSService{} - - provider := &SafeDNSProvider{ - Client: &mockSafeDNSService, - domainFilter: endpoint.NewDomainFilter([]string{}), - DryRun: false, - } - - mockSafeDNSService.On( - "GetZones", - mock.Anything, - ).Return(createZones(), nil).Once() - - mockSafeDNSService.On( - "GetZoneRecords", - "foo.com", - mock.Anything, - ).Return(createFooRecords(), nil).Once() - - mockSafeDNSService.On( - "GetZoneRecords", - "bar.io", - mock.Anything, - ).Return(createBarRecords(), nil).Once() - - mockSafeDNSService.On( - "GetZoneRecords", - "baz.org", - mock.Anything, - ).Return(createBazRecords(), nil).Once() - - actual, err := provider.Records(context.Background()) - require.NoError(t, err) - - expected := []*endpoint.Endpoint{ - { - DNSName: "foo.com", - Targets: []string{"targetFoo"}, - RecordType: "A", - RecordTTL: 3600, - Labels: endpoint.NewLabels(), - }, - { - DNSName: "foo.com", - Targets: []string{"text"}, - RecordType: "TXT", - RecordTTL: 3600, - Labels: endpoint.NewLabels(), - }, - { - DNSName: "baz.org", - Targets: []string{"targetBaz"}, - RecordType: "A", - RecordTTL: 3600, - Labels: endpoint.NewLabels(), - }, - { - DNSName: "baz.org", - Targets: []string{"text"}, - RecordType: "TXT", - RecordTTL: 3600, - Labels: endpoint.NewLabels(), - }, - { - DNSName: "api.baz.org", - Targets: []string{"targetBazAPI"}, - RecordType: "A", - RecordTTL: 3600, - Labels: endpoint.NewLabels(), - }, - { - DNSName: "api.baz.org", - Targets: []string{"text"}, - RecordType: "TXT", - RecordTTL: 3600, - Labels: endpoint.NewLabels(), - }, - } - - mockSafeDNSService.AssertExpectations(t) - assert.Equal(t, expected, actual) -} - -func TestSafeDNSApplyChanges(t *testing.T) { - mockSafeDNSService := MockSafeDNSService{} - - provider := &SafeDNSProvider{ - Client: &mockSafeDNSService, - domainFilter: endpoint.NewDomainFilter([]string{}), - DryRun: false, - } - - // Dummy data - mockSafeDNSService.On( - "GetZones", - mock.Anything, - ).Return(createZones(), nil).Once() - mockSafeDNSService.On( - "GetZones", - mock.Anything, - ).Return(createZones(), nil).Once() - - mockSafeDNSService.On( - "GetZoneRecords", - "foo.com", - mock.Anything, - ).Return(createFooRecords(), nil).Once() - - mockSafeDNSService.On( - "GetZoneRecords", - "bar.io", - mock.Anything, - ).Return(createBarRecords(), nil).Once() - - mockSafeDNSService.On( - "GetZoneRecords", - "baz.org", - mock.Anything, - ).Return(createBazRecords(), nil).Once() - - // Apply actions - mockSafeDNSService.On( - "DeleteZoneRecord", - "baz.org", - 33, - ).Return(nil).Once() - mockSafeDNSService.On( - "DeleteZoneRecord", - "baz.org", - 34, - ).Return(nil).Once() - - TTL300 := safedns.RecordTTL(300) - mockSafeDNSService.On( - "PatchZoneRecord", - "foo.com", - 11, - safedns.PatchRecordRequest{ - Type: "A", - Name: "foo.com", - Content: "targetFoo", - TTL: &TTL300, - }, - ).Return(123, nil).Once() - - mockSafeDNSService.On( - "CreateZoneRecord", - "bar.io", - safedns.CreateRecordRequest{ - Type: "A", - Name: "create.bar.io", - Content: "targetBar", - }, - ).Return(246, nil).Once() - - mockSafeDNSService.On( - "CreateZoneRecord", - "bar.io", - safedns.CreateRecordRequest{ - Type: "A", - Name: "bar.io", - Content: "targetBar", - }, - ).Return(369, nil).Once() - - err := provider.ApplyChanges(context.Background(), &plan.Changes{ - Create: []*endpoint.Endpoint{ - { - DNSName: "create.bar.io", - RecordType: "A", - Targets: []string{"targetBar"}, - RecordTTL: 3600, - }, - { - DNSName: "bar.io", - RecordType: "A", - Targets: []string{"targetBar"}, - RecordTTL: 3600, - }, - }, - Delete: []*endpoint.Endpoint{ - { - DNSName: "api.baz.org", - RecordType: "A", - }, - { - DNSName: "api.baz.org", - RecordType: "TXT", - }, - }, - UpdateNew: []*endpoint.Endpoint{ - { - DNSName: "foo.com", - RecordType: "A", - RecordTTL: 300, - Targets: []string{"targetFoo"}, - }, - }, - UpdateOld: []*endpoint.Endpoint{}, - }) - require.NoError(t, err) - - mockSafeDNSService.AssertExpectations(t) -} diff --git a/provider/tencentcloud/cloudapi/mockapi.go b/provider/tencentcloud/cloudapi/mockapi.go index 3484ddc12..df5e64b46 100644 --- a/provider/tencentcloud/cloudapi/mockapi.go +++ b/provider/tencentcloud/cloudapi/mockapi.go @@ -71,7 +71,7 @@ func (api *mockAPIService) DeletePrivateZoneRecord(request *privatedns.DeletePri } for _, privateZoneRecord := range api.privateZoneRecords[*request.ZoneId] { deleteflag := false - if request.RecordIdSet != nil && len(request.RecordIdSet) != 0 { + if len(request.RecordIdSet) != 0 { for _, recordId := range request.RecordIdSet { if *privateZoneRecord.RecordId == *recordId { deleteflag = true diff --git a/provider/tencentcloud/cloudapi/tencentapi.go b/provider/tencentcloud/cloudapi/tencentapi.go index 5997cb67f..1c8338e07 100644 --- a/provider/tencentcloud/cloudapi/tencentapi.go +++ b/provider/tencentcloud/cloudapi/tencentapi.go @@ -258,16 +258,16 @@ func dealWithError(action Action, request string, err error) bool { } func APIErrorRecord(apiAction Action, request string, response string, err error) { - log.Infof(fmt.Sprintf("APIError API: %s/%s Request: %s, Response: %s, Error: %s", apiAction.Service, apiAction.Name, request, response, err.Error())) + log.Infof("APIError API: %s/%s Request: %s, Response: %s, Error: %s", apiAction.Service, apiAction.Name, request, response, err.Error()) } func APIRecord(apiAction Action, request string, response string) { message := fmt.Sprintf("APIRecord API: %s/%s Request: %s, Response: %s", apiAction.Service, apiAction.Name, request, response) if apiAction.ReadOnly { - // log.Infof(message) + // log.Info(message) } else { - log.Infof(message) + log.Info(message) } } diff --git a/provider/tencentcloud/dnspod.go b/provider/tencentcloud/dnspod.go index f2e714cf8..30fb81ac0 100644 --- a/provider/tencentcloud/dnspod.go +++ b/provider/tencentcloud/dnspod.go @@ -89,7 +89,7 @@ func (p *TencentCloudProvider) getDomainList() ([]*dnspod.DomainListItem, error) if err != nil { return nil, err } - if response.Response.DomainList != nil && len(response.Response.DomainList) > 0 { + if len(response.Response.DomainList) > 0 { if !p.domainFilter.IsConfigured() { domainList = append(domainList, response.Response.DomainList...) } else { @@ -119,7 +119,7 @@ func (p *TencentCloudProvider) getDomainRecordList(domain string) ([]*dnspod.Rec if err != nil { return nil, err } - if response.Response.RecordList != nil && len(response.Response.RecordList) > 0 { + if len(response.Response.RecordList) > 0 { for _, record := range response.Response.RecordList { if *record.Name == "@" && *record.Type == "NS" { // Special Record, Skip it. continue diff --git a/provider/tencentcloud/privatedns.go b/provider/tencentcloud/privatedns.go index 7bfc9d326..e209f535f 100644 --- a/provider/tencentcloud/privatedns.go +++ b/provider/tencentcloud/privatedns.go @@ -110,7 +110,7 @@ func (p *TencentCloudProvider) getPrivateZones() ([]*privatedns.PrivateZone, err if err != nil { return nil, err } - if response.Response.PrivateZoneSet != nil && len(response.Response.PrivateZoneSet) > 0 { + if len(response.Response.PrivateZoneSet) > 0 { privateZones = append(privateZones, response.Response.PrivateZoneSet...) } totalCount = *response.Response.TotalCount @@ -140,7 +140,7 @@ func (p *TencentCloudProvider) getPrivateZoneRecords(zoneId string) ([]*privated if err != nil { return nil, err } - if response.Response.RecordSet != nil && len(response.Response.RecordSet) > 0 { + if len(response.Response.RecordSet) > 0 { privateZoneRecords = append(privateZoneRecords, response.Response.RecordSet...) } totalCount = *response.Response.TotalCount diff --git a/provider/vinyldns/vinyldns.go b/provider/vinyldns/vinyldns.go deleted file mode 100644 index 7dc98c2d7..000000000 --- a/provider/vinyldns/vinyldns.go +++ /dev/null @@ -1,272 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package vinyldns - -import ( - "context" - "fmt" - "os" - "strings" - - log "github.com/sirupsen/logrus" - "github.com/vinyldns/go-vinyldns/vinyldns" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" - "sigs.k8s.io/external-dns/provider" -) - -const ( - vinyldnsCreate = "CREATE" - vinyldnsDelete = "DELETE" - vinyldnsUpdate = "UPDATE" - - vinyldnsRecordTTL = 300 -) - -type vinyldnsZoneInterface interface { - Zones() ([]vinyldns.Zone, error) - RecordSets(id string) ([]vinyldns.RecordSet, error) - RecordSet(zoneID, recordSetID string) (vinyldns.RecordSet, error) - RecordSetCreate(rs *vinyldns.RecordSet) (*vinyldns.RecordSetUpdateResponse, error) - RecordSetUpdate(rs *vinyldns.RecordSet) (*vinyldns.RecordSetUpdateResponse, error) - RecordSetDelete(zoneID, recordSetID string) (*vinyldns.RecordSetUpdateResponse, error) -} - -type vinyldnsProvider struct { - provider.BaseProvider - client vinyldnsZoneInterface - zoneFilter provider.ZoneIDFilter - domainFilter endpoint.DomainFilter - dryRun bool -} - -type vinyldnsChange struct { - Action string - ResourceRecordSet vinyldns.RecordSet -} - -// NewVinylDNSProvider provides support for VinylDNS records -func NewVinylDNSProvider(domainFilter endpoint.DomainFilter, zoneFilter provider.ZoneIDFilter, dryRun bool) (provider.Provider, error) { - _, ok := os.LookupEnv("VINYLDNS_ACCESS_KEY") - if !ok { - return nil, fmt.Errorf("no vinyldns access key found") - } - - client := vinyldns.NewClientFromEnv() - - return &vinyldnsProvider{ - client: client, - dryRun: dryRun, - zoneFilter: zoneFilter, - domainFilter: domainFilter, - }, nil -} - -func (p *vinyldnsProvider) Records(ctx context.Context) (endpoints []*endpoint.Endpoint, _ error) { - zones, err := p.client.Zones() - if err != nil { - return nil, err - } - - for _, zone := range zones { - if !p.zoneFilter.Match(zone.ID) { - continue - } - - if !p.domainFilter.Match(zone.Name) { - continue - } - - log.Infof(fmt.Sprintf("Zone: [%s:%s]", zone.ID, zone.Name)) - records, err := p.client.RecordSets(zone.ID) - if err != nil { - return nil, err - } - - for _, r := range records { - if provider.SupportedRecordType(r.Type) { - recordsCount := len(r.Records) - log.Debugf(fmt.Sprintf("%s.%s.%d.%s", r.Name, r.Type, recordsCount, zone.Name)) - - // TODO: AAAA Records - if len(r.Records) > 0 { - targets := make([]string, len(r.Records)) - for idx, rr := range r.Records { - switch r.Type { - case "A": - targets[idx] = rr.Address - case "CNAME": - targets[idx] = rr.CName - case "TXT": - targets[idx] = rr.Text - } - } - - endpoints = append(endpoints, endpoint.NewEndpointWithTTL(r.Name+"."+zone.Name, r.Type, endpoint.TTL(r.TTL), targets...)) - } - } - } - } - - return endpoints, nil -} - -func vinyldnsSuitableZone(hostname string, zones []vinyldns.Zone) *vinyldns.Zone { - var zone *vinyldns.Zone - for _, z := range zones { - log.Debugf("hostname: %s and zoneName: %s", hostname, z.Name) - // Adding a . as vinyl appends it to each zone record - if strings.HasSuffix(hostname+".", z.Name) { - zone = &z - break - } - } - return zone -} - -func (p *vinyldnsProvider) submitChanges(changes []*vinyldnsChange) error { - if len(changes) == 0 { - log.Infof("All records are already up to date") - return nil - } - - zones, err := p.client.Zones() - if err != nil { - return err - } - - for _, change := range changes { - zone := vinyldnsSuitableZone(change.ResourceRecordSet.Name, zones) - if zone == nil { - log.Debugf("Skipping record %s because no hosted zone matching record DNS Name was detected", change.ResourceRecordSet.Name) - continue - } - - change.ResourceRecordSet.Name = strings.TrimSuffix(change.ResourceRecordSet.Name+".", "."+zone.Name) - change.ResourceRecordSet.ZoneID = zone.ID - log.Infof("Changing records: %s %v in zone: %s", change.Action, change.ResourceRecordSet, zone.Name) - - if !p.dryRun { - switch change.Action { - case vinyldnsCreate: - _, err := p.client.RecordSetCreate(&change.ResourceRecordSet) - if err != nil { - return err - } - case vinyldnsUpdate: - recordID, err := p.findRecordSetID(zone.ID, change.ResourceRecordSet.Name) - if err != nil { - return err - } - change.ResourceRecordSet.ID = recordID - _, err = p.client.RecordSetUpdate(&change.ResourceRecordSet) - if err != nil { - return err - } - case vinyldnsDelete: - recordID, err := p.findRecordSetID(zone.ID, change.ResourceRecordSet.Name) - if err != nil { - return err - } - _, err = p.client.RecordSetDelete(zone.ID, recordID) - if err != nil { - return err - } - } - } - } - - return nil -} - -func (p *vinyldnsProvider) findRecordSetID(zoneID string, recordSetName string) (recordID string, err error) { - records, err := p.client.RecordSets(zoneID) - if err != nil { - return "", err - } - - for _, r := range records { - if r.Name == recordSetName { - return r.ID, nil - } - } - - return "", fmt.Errorf("record not found") -} - -func (p *vinyldnsProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error { - combinedChanges := make([]*vinyldnsChange, 0, len(changes.Create)+len(changes.UpdateNew)+len(changes.Delete)) - - combinedChanges = append(combinedChanges, newVinylDNSChanges(vinyldnsCreate, changes.Create)...) - combinedChanges = append(combinedChanges, newVinylDNSChanges(vinyldnsUpdate, changes.UpdateNew)...) - combinedChanges = append(combinedChanges, newVinylDNSChanges(vinyldnsDelete, changes.Delete)...) - - return p.submitChanges(combinedChanges) -} - -// newVinylDNSChanges returns a collection of Changes based on the given records and action. -func newVinylDNSChanges(action string, endpoints []*endpoint.Endpoint) []*vinyldnsChange { - changes := make([]*vinyldnsChange, 0, len(endpoints)) - - for _, e := range endpoints { - changes = append(changes, newVinylDNSChange(action, e)) - } - - return changes -} - -func newVinylDNSChange(action string, endpoint *endpoint.Endpoint) *vinyldnsChange { - ttl := vinyldnsRecordTTL - if endpoint.RecordTTL.IsConfigured() { - ttl = int(endpoint.RecordTTL) - } - - records := []vinyldns.Record{} - - // TODO: AAAA - if endpoint.RecordType == "CNAME" { - records = []vinyldns.Record{ - { - CName: endpoint.Targets[0], - }, - } - } else if endpoint.RecordType == "TXT" { - records = []vinyldns.Record{ - { - Text: endpoint.Targets[0], - }, - } - } else if endpoint.RecordType == "A" { - records = []vinyldns.Record{ - { - Address: endpoint.Targets[0], - }, - } - } - - change := &vinyldnsChange{ - Action: action, - ResourceRecordSet: vinyldns.RecordSet{ - Name: endpoint.DNSName, - Type: endpoint.RecordType, - TTL: ttl, - Records: records, - }, - } - return change -} diff --git a/provider/vinyldns/vinyldns_test.go b/provider/vinyldns/vinyldns_test.go deleted file mode 100644 index 1afd831b8..000000000 --- a/provider/vinyldns/vinyldns_test.go +++ /dev/null @@ -1,225 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package vinyldns - -import ( - "context" - "fmt" - "os" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - "github.com/vinyldns/go-vinyldns/vinyldns" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" - "sigs.k8s.io/external-dns/provider" -) - -type mockVinyldnsZoneInterface struct { - mock.Mock -} - -var mockVinylDNSProvider vinyldnsProvider - -var ( - vinylDNSZones []vinyldns.Zone - vinylDNSRecords []vinyldns.RecordSet - vinylDNSRecordSetUpdateResponse *vinyldns.RecordSetUpdateResponse -) - -func TestVinylDNSServices(t *testing.T) { - firstZone := vinyldns.Zone{ - ID: "0", - Name: "example.com.", - } - secondZone := vinyldns.Zone{ - ID: "1", - Name: "example-beta.com.", - } - vinylDNSZones = []vinyldns.Zone{firstZone, secondZone} - - firstRecord := vinyldns.RecordSet{ - ZoneID: "0", - Name: "example.com.", - TTL: 300, - Type: "CNAME", - Records: []vinyldns.Record{ - { - CName: "vinyldns.com", - }, - }, - } - vinylDNSRecords = []vinyldns.RecordSet{firstRecord} - - vinylDNSRecordSetUpdateResponse = &vinyldns.RecordSetUpdateResponse{ - Zone: firstZone, - RecordSet: firstRecord, - ChangeID: "123", - Status: "Active", - } - - mockVinylDNS := &mockVinyldnsZoneInterface{} - mockVinylDNS.On("Zones").Return(vinylDNSZones, nil) - mockVinylDNS.On("RecordSets", "0").Return(vinylDNSRecords, nil) - mockVinylDNS.On("RecordSets", "1").Return(nil, nil) - mockVinylDNS.On("RecordSets", "2").Return(nil, fmt.Errorf("Record not found")) - mockVinylDNS.On("RecordSetCreate", &firstRecord).Return(vinylDNSRecordSetUpdateResponse, nil) - mockVinylDNS.On("RecordSetUpdate", &firstRecord).Return(vinylDNSRecordSetUpdateResponse, nil) - mockVinylDNS.On("RecordSetDelete", "0", "").Return(nil, nil) - - mockVinylDNSProvider = vinyldnsProvider{client: mockVinylDNS} - - // Run tests on mock services - t.Run("Records", testVinylDNSProviderRecords) - t.Run("ApplyChanges", testVinylDNSProviderApplyChanges) - t.Run("SuitableZone", testVinylDNSSuitableZone) - t.Run("GetRecordID", testVinylDNSFindRecordSetID) -} - -func testVinylDNSProviderRecords(t *testing.T) { - ctx := context.Background() - - mockVinylDNSProvider.domainFilter = endpoint.NewDomainFilter([]string{"example.com"}) - result, err := mockVinylDNSProvider.Records(ctx) - assert.Nil(t, err) - assert.Equal(t, len(vinylDNSRecords), len(result)) - - mockVinylDNSProvider.zoneFilter = provider.NewZoneIDFilter([]string{"0"}) - result, err = mockVinylDNSProvider.Records(ctx) - assert.Nil(t, err) - assert.Equal(t, len(vinylDNSRecords), len(result)) - - mockVinylDNSProvider.zoneFilter = provider.NewZoneIDFilter([]string{"1"}) - result, err = mockVinylDNSProvider.Records(ctx) - assert.Nil(t, err) - assert.Equal(t, 0, len(result)) -} - -func testVinylDNSProviderApplyChanges(t *testing.T) { - changes := &plan.Changes{} - changes.Create = []*endpoint.Endpoint{ - {DNSName: "example.com", Targets: endpoint.Targets{"vinyldns.com"}, RecordType: endpoint.RecordTypeCNAME}, - } - changes.UpdateNew = []*endpoint.Endpoint{ - {DNSName: "example.com", Targets: endpoint.Targets{"vinyldns.com"}, RecordType: endpoint.RecordTypeCNAME}, - } - changes.Delete = []*endpoint.Endpoint{{DNSName: "example.com", Targets: endpoint.Targets{"vinyldns.com"}, RecordType: endpoint.RecordTypeCNAME}} - - mockVinylDNSProvider.zoneFilter = provider.NewZoneIDFilter([]string{"1"}) - err := mockVinylDNSProvider.ApplyChanges(context.Background(), changes) - if err != nil { - t.Errorf("Failed to apply changes: %v", err) - } -} - -func testVinylDNSSuitableZone(t *testing.T) { - mockVinylDNSProvider.zoneFilter = provider.NewZoneIDFilter([]string{"0"}) - - zone := vinyldnsSuitableZone("example.com", vinylDNSZones) - assert.Equal(t, zone.Name, "example.com.") -} - -func TestNewVinylDNSProvider(t *testing.T) { - os.Setenv("VINYLDNS_ACCESS_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxx") - _, err := NewVinylDNSProvider(endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{"0"}), true) - assert.Nil(t, err) - - os.Unsetenv("VINYLDNS_ACCESS_KEY") - _, err = NewVinylDNSProvider(endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{"0"}), true) - assert.NotNil(t, err) - if err == nil { - t.Errorf("Expected to fail new provider on empty token") - } -} - -func testVinylDNSFindRecordSetID(t *testing.T) { - mockVinylDNSProvider.zoneFilter = provider.NewZoneIDFilter([]string{"0"}) - result, err := mockVinylDNSProvider.findRecordSetID("0", "example.com.") - assert.Nil(t, err) - assert.Equal(t, "", result) - - _, err = mockVinylDNSProvider.findRecordSetID("2", "example-beta") - assert.NotNil(t, err) -} - -func (m *mockVinyldnsZoneInterface) Zones() ([]vinyldns.Zone, error) { - args := m.Called() - var r0 []vinyldns.Zone - - if args.Get(0) != nil { - r0 = args.Get(0).([]vinyldns.Zone) - } - - return r0, args.Error(1) -} - -func (m *mockVinyldnsZoneInterface) RecordSet(zoneID, recordSet string) (vinyldns.RecordSet, error) { - args := m.Called(zoneID, recordSet) - var r0 vinyldns.RecordSet - - if args.Get(0) != nil { - r0 = args.Get(0).(vinyldns.RecordSet) - } - - return r0, args.Error(1) -} - -func (m *mockVinyldnsZoneInterface) RecordSets(id string) ([]vinyldns.RecordSet, error) { - args := m.Called(id) - var r0 []vinyldns.RecordSet - - if args.Get(0) != nil { - r0 = args.Get(0).([]vinyldns.RecordSet) - } - - return r0, args.Error(1) -} - -func (m *mockVinyldnsZoneInterface) RecordSetCreate(rs *vinyldns.RecordSet) (*vinyldns.RecordSetUpdateResponse, error) { - args := m.Called(rs) - var r0 *vinyldns.RecordSetUpdateResponse - - if args.Get(0) != nil { - r0 = args.Get(0).(*vinyldns.RecordSetUpdateResponse) - } - - return r0, args.Error(1) -} - -func (m *mockVinyldnsZoneInterface) RecordSetUpdate(rs *vinyldns.RecordSet) (*vinyldns.RecordSetUpdateResponse, error) { - args := m.Called(rs) - var r0 *vinyldns.RecordSetUpdateResponse - - if args.Get(0) != nil { - r0 = args.Get(0).(*vinyldns.RecordSetUpdateResponse) - } - - return r0, args.Error(1) -} - -func (m *mockVinyldnsZoneInterface) RecordSetDelete(zoneID, recordSetID string) (*vinyldns.RecordSetUpdateResponse, error) { - args := m.Called(zoneID, recordSetID) - var r0 *vinyldns.RecordSetUpdateResponse - - if args.Get(0) != nil { - r0 = args.Get(0).(*vinyldns.RecordSetUpdateResponse) - } - - return r0, args.Error(1) -} diff --git a/provider/vultr/vultr.go b/provider/vultr/vultr.go deleted file mode 100644 index e9d5187c2..000000000 --- a/provider/vultr/vultr.go +++ /dev/null @@ -1,304 +0,0 @@ -/* -Copyright 2020 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package vultr - -import ( - "context" - "fmt" - "os" - "strings" - - log "github.com/sirupsen/logrus" - "github.com/vultr/govultr/v2" - "golang.org/x/oauth2" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" - "sigs.k8s.io/external-dns/provider" -) - -const ( - vultrCreate = "CREATE" - vultrDelete = "DELETE" - vultrUpdate = "UPDATE" - vultrTTL = 3600 -) - -// VultrProvider is an implementation of Provider for Vultr DNS. -type VultrProvider struct { - provider.BaseProvider - client govultr.Client - - domainFilter endpoint.DomainFilter - DryRun bool -} - -// VultrChanges differentiates between ChangActions. -type VultrChanges struct { - Action string - - ResourceRecordSet *govultr.DomainRecordReq -} - -// NewVultrProvider initializes a new Vultr BNS based provider -func NewVultrProvider(ctx context.Context, domainFilter endpoint.DomainFilter, dryRun bool) (*VultrProvider, error) { - apiKey, ok := os.LookupEnv("VULTR_API_KEY") - if !ok { - return nil, fmt.Errorf("no token found") - } - - oauthClient := oauth2.NewClient(ctx, oauth2.StaticTokenSource(&oauth2.Token{ - AccessToken: apiKey, - })) - client := govultr.NewClient(oauthClient) - client.SetUserAgent(fmt.Sprintf("ExternalDNS/%s", client.UserAgent)) - - p := &VultrProvider{ - client: *client, - domainFilter: domainFilter, - DryRun: dryRun, - } - - return p, nil -} - -// Zones returns list of hosted zones -func (p *VultrProvider) Zones(ctx context.Context) ([]govultr.Domain, error) { - zones, err := p.fetchZones(ctx) - if err != nil { - return nil, err - } - - return zones, nil -} - -// Records returns the list of records. -func (p *VultrProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { - zones, err := p.Zones(ctx) - if err != nil { - return nil, err - } - - var endpoints []*endpoint.Endpoint - - for _, zone := range zones { - records, err := p.fetchRecords(ctx, zone.Domain) - if err != nil { - return nil, err - } - - for _, r := range records { - if provider.SupportedRecordType(r.Type) { - name := fmt.Sprintf("%s.%s", r.Name, zone.Domain) - - // root name is identified by the empty string and should be - // translated to zone name for the endpoint entry. - if r.Name == "" { - name = zone.Domain - } - - endpoints = append(endpoints, endpoint.NewEndpointWithTTL(name, r.Type, endpoint.TTL(r.TTL), r.Data)) - } - } - } - - return endpoints, nil -} - -func (p *VultrProvider) fetchRecords(ctx context.Context, domain string) ([]govultr.DomainRecord, error) { - var allRecords []govultr.DomainRecord - listOptions := &govultr.ListOptions{} - - for { - records, meta, err := p.client.DomainRecord.List(ctx, domain, listOptions) - if err != nil { - return nil, err - } - - allRecords = append(allRecords, records...) - - if meta.Links.Next == "" { - break - } else { - listOptions.Cursor = meta.Links.Next - continue - } - } - - return allRecords, nil -} - -func (p *VultrProvider) fetchZones(ctx context.Context) ([]govultr.Domain, error) { - var zones []govultr.Domain - listOptions := &govultr.ListOptions{} - - for { - allZones, meta, err := p.client.Domain.List(ctx, listOptions) - if err != nil { - return nil, err - } - - for _, zone := range allZones { - if p.domainFilter.Match(zone.Domain) { - zones = append(zones, zone) - } - } - - if meta.Links.Next == "" { - break - } else { - listOptions.Cursor = meta.Links.Next - continue - } - } - - return zones, nil -} - -func (p *VultrProvider) submitChanges(ctx context.Context, changes []*VultrChanges) error { - if len(changes) == 0 { - log.Infof("All records are already up to date") - return nil - } - - zones, err := p.Zones(ctx) - if err != nil { - return err - } - - zoneChanges := separateChangesByZone(zones, changes) - - for zoneName, changes := range zoneChanges { - for _, change := range changes { - log.WithFields(log.Fields{ - "record": change.ResourceRecordSet.Name, - "type": change.ResourceRecordSet.Type, - "ttl": change.ResourceRecordSet.TTL, - "action": change.Action, - "zone": zoneName, - }).Info("Changing record.") - - switch change.Action { - case vultrCreate: - if _, err := p.client.DomainRecord.Create(ctx, zoneName, change.ResourceRecordSet); err != nil { - return err - } - case vultrDelete: - id, err := p.getRecordID(ctx, zoneName, change.ResourceRecordSet) - if err != nil { - return err - } - - if err := p.client.DomainRecord.Delete(ctx, zoneName, id); err != nil { - return err - } - case vultrUpdate: - id, err := p.getRecordID(ctx, zoneName, change.ResourceRecordSet) - if err != nil { - return err - } - if err := p.client.DomainRecord.Update(ctx, zoneName, id, change.ResourceRecordSet); err != nil { - return err - } - } - } - } - return nil -} - -// ApplyChanges applies a given set of changes in a given zone. -func (p *VultrProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error { - combinedChanges := make([]*VultrChanges, 0, len(changes.Create)+len(changes.UpdateNew)+len(changes.Delete)) - - combinedChanges = append(combinedChanges, newVultrChanges(vultrCreate, changes.Create)...) - combinedChanges = append(combinedChanges, newVultrChanges(vultrUpdate, changes.UpdateNew)...) - combinedChanges = append(combinedChanges, newVultrChanges(vultrDelete, changes.Delete)...) - - return p.submitChanges(ctx, combinedChanges) -} - -func newVultrChanges(action string, endpoints []*endpoint.Endpoint) []*VultrChanges { - changes := make([]*VultrChanges, 0, len(endpoints)) - ttl := vultrTTL - for _, e := range endpoints { - if e.RecordTTL.IsConfigured() { - ttl = int(e.RecordTTL) - } - - change := &VultrChanges{ - Action: action, - ResourceRecordSet: &govultr.DomainRecordReq{ - Type: e.RecordType, - Name: e.DNSName, - Data: e.Targets[0], - TTL: ttl, - }, - } - - changes = append(changes, change) - } - return changes -} - -func separateChangesByZone(zones []govultr.Domain, changes []*VultrChanges) map[string][]*VultrChanges { - change := make(map[string][]*VultrChanges) - zoneNameID := provider.ZoneIDName{} - - for _, z := range zones { - zoneNameID.Add(z.Domain, z.Domain) - change[z.Domain] = []*VultrChanges{} - } - - for _, c := range changes { - zone, _ := zoneNameID.FindZone(c.ResourceRecordSet.Name) - if zone == "" { - log.Debugf("Skipping record %s because no hosted zone matching record DNS Name was detected", c.ResourceRecordSet.Name) - continue - } - change[zone] = append(change[zone], c) - } - return change -} - -func (p *VultrProvider) getRecordID(ctx context.Context, zone string, record *govultr.DomainRecordReq) (recordID string, err error) { - listOptions := &govultr.ListOptions{} - for { - records, meta, err := p.client.DomainRecord.List(ctx, zone, listOptions) - if err != nil { - return "0", err - } - - for _, r := range records { - strippedName := strings.TrimSuffix(record.Name, "."+zone) - if record.Name == zone { - strippedName = "" - } - - if r.Name == strippedName && r.Type == record.Type { - return r.ID, nil - } - } - if meta.Links.Next == "" { - break - } else { - listOptions.Cursor = meta.Links.Next - continue - } - } - - return "", fmt.Errorf("no record was found") -} diff --git a/provider/vultr/vultr_test.go b/provider/vultr/vultr_test.go deleted file mode 100644 index e3beb44ea..000000000 --- a/provider/vultr/vultr_test.go +++ /dev/null @@ -1,213 +0,0 @@ -/* -Copyright 2020 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package vultr - -import ( - "context" - "os" - "reflect" - "strings" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/vultr/govultr/v2" - - "sigs.k8s.io/external-dns/endpoint" - "sigs.k8s.io/external-dns/plan" -) - -type mockVultrDomain struct { - client *govultr.Client -} - -func (m mockVultrDomain) Create(ctx context.Context, domainReq *govultr.DomainReq) (*govultr.Domain, error) { - return nil, nil -} - -func (m mockVultrDomain) Get(ctx context.Context, domain string) (*govultr.Domain, error) { - return nil, nil -} - -func (m mockVultrDomain) Update(ctx context.Context, domain, dnsSec string) error { - return nil -} - -func (m mockVultrDomain) Delete(ctx context.Context, domain string) error { - return nil -} - -func (m mockVultrDomain) List(ctx context.Context, options *govultr.ListOptions) ([]govultr.Domain, *govultr.Meta, error) { - return []govultr.Domain{{Domain: "test.com", DateCreated: "1234"}}, &govultr.Meta{ - Total: 1, - Links: &govultr.Links{ - Next: "", - Prev: "", - }, - }, nil -} - -func (m mockVultrDomain) GetSoa(ctx context.Context, domain string) (*govultr.Soa, error) { - return nil, nil -} - -func (m mockVultrDomain) UpdateSoa(ctx context.Context, domain string, soaReq *govultr.Soa) error { - return nil -} - -func (m mockVultrDomain) GetDNSSec(ctx context.Context, domain string) ([]string, error) { - return nil, nil -} - -type mockVultrRecord struct { - client *govultr.Client -} - -func (m mockVultrRecord) Create(ctx context.Context, domain string, domainRecordReq *govultr.DomainRecordReq) (*govultr.DomainRecord, error) { - return nil, nil -} - -func (m mockVultrRecord) Get(ctx context.Context, domain, recordID string) (*govultr.DomainRecord, error) { - return nil, nil -} - -func (m mockVultrRecord) Update(ctx context.Context, domain, recordID string, domainRecordReq *govultr.DomainRecordReq) error { - return nil -} - -func (m mockVultrRecord) Delete(ctx context.Context, domain, recordID string) error { - return nil -} - -func (m mockVultrRecord) List(ctx context.Context, domain string, options *govultr.ListOptions) ([]govultr.DomainRecord, *govultr.Meta, error) { - return []govultr.DomainRecord{{ID: "123", Type: "A", Name: "test", Data: "192.168.1.1", TTL: 300}}, &govultr.Meta{ - Total: 1, - Links: &govultr.Links{ - Next: "", - Prev: "", - }, - }, nil -} - -func TestNewVultrProvider(t *testing.T) { - _ = os.Setenv("VULTR_API_KEY", "") - _, err := NewVultrProvider(context.Background(), endpoint.NewDomainFilter([]string{"test.vultr.com"}), true) - if err != nil { - t.Errorf("failed : %s", err) - } - - _ = os.Unsetenv("VULTR_API_KEY") - _, err = NewVultrProvider(context.Background(), endpoint.NewDomainFilter([]string{"test.vultr.com"}), true) - if err == nil { - t.Errorf("expected to fail") - } -} - -func TestVultrProvider_Zones(t *testing.T) { - mocked := mockVultrDomain{nil} - provider := &VultrProvider{ - client: govultr.Client{ - Domain: &mocked, - }, - } - - expected, _, err := provider.client.Domain.List(context.Background(), nil) - if err != nil { - t.Fatal(err) - } - - provider.Zones(context.Background()) - zones, err := provider.Zones(context.Background()) - if err != nil { - t.Fatal(err) - } - - if !reflect.DeepEqual(expected, zones) { - t.Fatal(err) - } -} - -func TestVultrProvider_Records(t *testing.T) { - mocked := mockVultrRecord{nil} - mockedDomain := mockVultrDomain{nil} - - provider := &VultrProvider{ - client: govultr.Client{ - DomainRecord: &mocked, - Domain: &mockedDomain, - }, - } - - expected, _, _ := provider.client.DomainRecord.List(context.Background(), "test.com", nil) - records, err := provider.Records(context.Background()) - if err != nil { - t.Fatal(err) - } - - for _, v := range records { - assert.Equal(t, strings.TrimSuffix(v.DNSName, ".test.com"), expected[0].Name) - assert.Equal(t, v.RecordType, expected[0].Type) - assert.Equal(t, int(v.RecordTTL), expected[0].TTL) - } -} - -func TestVultrProvider_ApplyChanges(t *testing.T) { - changes := &plan.Changes{} - mocked := mockVultrRecord{nil} - mockedDomain := mockVultrDomain{nil} - - provider := &VultrProvider{ - client: govultr.Client{ - DomainRecord: &mocked, - Domain: &mockedDomain, - }, - } - - changes.Create = []*endpoint.Endpoint{ - {DNSName: "test.com", Targets: endpoint.Targets{"target"}}, - {DNSName: "ttl.test.com", Targets: endpoint.Targets{"target"}, RecordTTL: 100}, - } - - changes.UpdateNew = []*endpoint.Endpoint{{DNSName: "test.test.com", Targets: endpoint.Targets{"target-new"}, RecordType: "A", RecordTTL: 100}} - changes.Delete = []*endpoint.Endpoint{{DNSName: "test.test.com", Targets: endpoint.Targets{"target"}, RecordType: "A"}} - err := provider.ApplyChanges(context.Background(), changes) - if err != nil { - t.Errorf("should not fail, %s", err) - } -} - -func TestVultrProvider_getRecordID(t *testing.T) { - mocked := mockVultrRecord{nil} - mockedDomain := mockVultrDomain{nil} - - provider := &VultrProvider{ - client: govultr.Client{ - DomainRecord: &mocked, - Domain: &mockedDomain, - }, - } - - record := &govultr.DomainRecordReq{ - Type: "A", - Name: "test.test.com", - } - id, err := provider.getRecordID(context.Background(), "test.com", record) - if err != nil { - t.Fatal(err) - } - - assert.Equal(t, id, "123") -} diff --git a/provider/webhook/api/httpapi_test.go b/provider/webhook/api/httpapi_test.go index 48685dc9d..a15efec47 100644 --- a/provider/webhook/api/httpapi_test.go +++ b/provider/webhook/api/httpapi_test.go @@ -62,7 +62,7 @@ func (p FakeWebhookProvider) AdjustEndpoints(endpoints []*endpoint.Endpoint) ([] return endpoints, nil } -func (p FakeWebhookProvider) GetDomainFilter() endpoint.DomainFilter { +func (p FakeWebhookProvider) GetDomainFilter() endpoint.DomainFilterInterface { return p.domainFilter } diff --git a/provider/webhook/webhook.go b/provider/webhook/webhook.go index d50484290..8cae0850e 100644 --- a/provider/webhook/webhook.go +++ b/provider/webhook/webhook.go @@ -296,7 +296,7 @@ func (p WebhookProvider) AdjustEndpoints(e []*endpoint.Endpoint) ([]*endpoint.En } // GetDomainFilter make calls to get the serialized version of the domain filter -func (p WebhookProvider) GetDomainFilter() endpoint.DomainFilter { +func (p WebhookProvider) GetDomainFilter() endpoint.DomainFilterInterface { return p.DomainFilter } diff --git a/provider/zone_type_filter.go b/provider/zone_type_filter.go index 14ceac0e8..c595a4a9c 100644 --- a/provider/zone_type_filter.go +++ b/provider/zone_type_filter.go @@ -17,8 +17,7 @@ limitations under the License. package provider import ( - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/route53" + route53types "github.com/aws/aws-sdk-go-v2/service/route53/types" ) const ( @@ -52,7 +51,7 @@ func (f ZoneTypeFilter) Match(rawZoneType interface{}) bool { case zoneTypePrivate: return zoneType == zoneTypePrivate } - case *route53.HostedZone: + case route53types.HostedZone: // If the zone has no config we assume it's a public zone since the config's field // `PrivateZone` is false by default in go. if zoneType.Config == nil { @@ -61,9 +60,9 @@ func (f ZoneTypeFilter) Match(rawZoneType interface{}) bool { switch f.zoneType { case zoneTypePublic: - return !aws.BoolValue(zoneType.Config.PrivateZone) + return !zoneType.Config.PrivateZone case zoneTypePrivate: - return aws.BoolValue(zoneType.Config.PrivateZone) + return zoneType.Config.PrivateZone } } diff --git a/provider/zone_type_filter_test.go b/provider/zone_type_filter_test.go index 8677e6fb0..903d8e876 100644 --- a/provider/zone_type_filter_test.go +++ b/provider/zone_type_filter_test.go @@ -19,8 +19,7 @@ package provider import ( "testing" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/route53" + route53types "github.com/aws/aws-sdk-go-v2/service/route53/types" "github.com/stretchr/testify/assert" ) @@ -28,8 +27,8 @@ import ( func TestZoneTypeFilterMatch(t *testing.T) { publicZoneStr := "public" privateZoneStr := "private" - publicZoneAWS := &route53.HostedZone{Config: &route53.HostedZoneConfig{PrivateZone: aws.Bool(false)}} - privateZoneAWS := &route53.HostedZone{Config: &route53.HostedZoneConfig{PrivateZone: aws.Bool(true)}} + publicZoneAWS := route53types.HostedZone{Config: &route53types.HostedZoneConfig{PrivateZone: false}} + privateZoneAWS := route53types.HostedZone{Config: &route53types.HostedZoneConfig{PrivateZone: true}} for _, tc := range []struct { zoneTypeFilter string @@ -37,10 +36,10 @@ func TestZoneTypeFilterMatch(t *testing.T) { zones []interface{} }{ { - "", true, []interface{}{publicZoneStr, privateZoneStr, &route53.HostedZone{}}, + "", true, []interface{}{publicZoneStr, privateZoneStr, route53types.HostedZone{}}, }, { - "public", true, []interface{}{publicZoneStr, publicZoneAWS, &route53.HostedZone{}}, + "public", true, []interface{}{publicZoneStr, publicZoneAWS, route53types.HostedZone{}}, }, { "public", false, []interface{}{privateZoneStr, privateZoneAWS}, @@ -49,15 +48,17 @@ func TestZoneTypeFilterMatch(t *testing.T) { "private", true, []interface{}{privateZoneStr, privateZoneAWS}, }, { - "private", false, []interface{}{publicZoneStr, publicZoneAWS, &route53.HostedZone{}}, + "private", false, []interface{}{publicZoneStr, publicZoneAWS, route53types.HostedZone{}}, }, { "unknown", false, []interface{}{publicZoneStr}, }, } { - zoneTypeFilter := NewZoneTypeFilter(tc.zoneTypeFilter) - for _, zone := range tc.zones { - assert.Equal(t, tc.matches, zoneTypeFilter.Match(zone)) - } + t.Run(tc.zoneTypeFilter, func(t *testing.T) { + zoneTypeFilter := NewZoneTypeFilter(tc.zoneTypeFilter) + for _, zone := range tc.zones { + assert.Equal(t, tc.matches, zoneTypeFilter.Match(zone)) + } + }) } } diff --git a/registry/aws_sd_registry.go b/registry/aws_sd_registry.go index 8a2b023c4..a1e2103f5 100644 --- a/registry/aws_sd_registry.go +++ b/registry/aws_sd_registry.go @@ -42,7 +42,7 @@ func NewAWSSDRegistry(provider provider.Provider, ownerID string) (*AWSSDRegistr }, nil } -func (sdr *AWSSDRegistry) GetDomainFilter() endpoint.DomainFilter { +func (sdr *AWSSDRegistry) GetDomainFilter() endpoint.DomainFilterInterface { return sdr.provider.GetDomainFilter() } diff --git a/registry/dynamodb.go b/registry/dynamodb.go index aeb38d9a9..805985f34 100644 --- a/registry/dynamodb.go +++ b/registry/dynamodb.go @@ -23,9 +23,10 @@ import ( "strings" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" log "github.com/sirupsen/logrus" "k8s.io/apimachinery/pkg/util/sets" @@ -34,11 +35,11 @@ import ( "sigs.k8s.io/external-dns/provider" ) -// DynamoDBAPI is the subset of the AWS Route53 API that we actually use. Add methods as required. Signatures must match exactly. +// DynamoDBAPI is the subset of the AWS DynamoDB API that we actually use. Add methods as required. Signatures must match exactly. type DynamoDBAPI interface { - DescribeTableWithContext(ctx aws.Context, input *dynamodb.DescribeTableInput, opts ...request.Option) (*dynamodb.DescribeTableOutput, error) - ScanPagesWithContext(ctx aws.Context, input *dynamodb.ScanInput, fn func(*dynamodb.ScanOutput, bool) bool, opts ...request.Option) error - BatchExecuteStatementWithContext(aws.Context, *dynamodb.BatchExecuteStatementInput, ...request.Option) (*dynamodb.BatchExecuteStatementOutput, error) + DescribeTable(context.Context, *dynamodb.DescribeTableInput, ...func(*dynamodb.Options)) (*dynamodb.DescribeTableOutput, error) + Scan(context.Context, *dynamodb.ScanInput, ...func(*dynamodb.Options)) (*dynamodb.ScanOutput, error) + BatchExecuteStatement(context.Context, *dynamodb.BatchExecuteStatementInput, ...func(*dynamodb.Options)) (*dynamodb.BatchExecuteStatementOutput, error) } // DynamoDBRegistry implements registry interface with ownership implemented via an AWS DynamoDB table. @@ -105,7 +106,7 @@ func NewDynamoDBRegistry(provider provider.Provider, ownerID string, dynamodbAPI }, nil } -func (im *DynamoDBRegistry) GetDomainFilter() endpoint.DomainFilter { +func (im *DynamoDBRegistry) GetDomainFilter() endpoint.DomainFilterInterface { return im.provider.GetDomainFilter() } @@ -225,7 +226,7 @@ func (im *DynamoDBRegistry) ApplyChanges(ctx context.Context, changes *plan.Chan Delete: endpoint.FilterEndpointsByOwnerID(im.ownerID, changes.Delete), } - statements := make([]*dynamodb.BatchStatementRequest, 0, len(filteredChanges.Create)+len(filteredChanges.UpdateNew)) + statements := make([]dynamodbtypes.BatchStatementRequest, 0, len(filteredChanges.Create)+len(filteredChanges.UpdateNew)) for _, r := range filteredChanges.Create { if r.Labels == nil { r.Labels = make(map[string]string) @@ -286,12 +287,15 @@ func (im *DynamoDBRegistry) ApplyChanges(ctx context.Context, changes *plan.Chan } } - err := im.executeStatements(ctx, statements, func(request *dynamodb.BatchStatementRequest, response *dynamodb.BatchStatementResponse) error { + err := im.executeStatements(ctx, statements, func(request dynamodbtypes.BatchStatementRequest, response dynamodbtypes.BatchStatementResponse) error { var context string if strings.HasPrefix(*request.Statement, "INSERT") { - if aws.StringValue(response.Error.Code) == "DuplicateItem" { + if response.Error.Code == dynamodbtypes.BatchStatementErrorCodeEnumDuplicateItem { // We lost a race with a different owner or another owner has an orphaned ownership record. - key := fromDynamoKey(request.Parameters[0]) + key, err := fromDynamoKey(request.Parameters[0]) + if err != nil { + return err + } for i, endpoint := range filteredChanges.Create { if endpoint.Key() == key { log.Infof("Skipping endpoint %v because owner does not match", endpoint) @@ -303,11 +307,19 @@ func (im *DynamoDBRegistry) ApplyChanges(ctx context.Context, changes *plan.Chan } } } - context = fmt.Sprintf("inserting dynamodb record %q", aws.StringValue(request.Parameters[0].S)) + var record string + if err := attributevalue.Unmarshal(request.Parameters[0], &record); err != nil { + return fmt.Errorf("inserting dynamodb record: %w", err) + } + context = fmt.Sprintf("inserting dynamodb record %q", record) } else { - context = fmt.Sprintf("updating dynamodb record %q", aws.StringValue(request.Parameters[1].S)) + var record string + if err := attributevalue.Unmarshal(request.Parameters[1], &record); err != nil { + return fmt.Errorf("inserting dynamodb record: %w", err) + } + context = fmt.Sprintf("updating dynamodb record %q", record) } - return fmt.Errorf("%s: %s: %s", context, aws.StringValue(response.Error.Code), aws.StringValue(response.Error.Message)) + return fmt.Errorf("%s: %s: %s", context, response.Error.Code, *response.Error.Message) }) if err != nil { im.recordsCache = nil @@ -326,7 +338,7 @@ func (im *DynamoDBRegistry) ApplyChanges(ctx context.Context, changes *plan.Chan return err } - statements = make([]*dynamodb.BatchStatementRequest, 0, len(filteredChanges.Delete)+len(im.orphanedLabels)) + statements = make([]dynamodbtypes.BatchStatementRequest, 0, len(filteredChanges.Delete)+len(im.orphanedLabels)) for _, r := range filteredChanges.Delete { statements = im.appendDelete(statements, r.Key()) } @@ -335,9 +347,13 @@ func (im *DynamoDBRegistry) ApplyChanges(ctx context.Context, changes *plan.Chan delete(im.labels, r) } im.orphanedLabels = nil - return im.executeStatements(ctx, statements, func(request *dynamodb.BatchStatementRequest, response *dynamodb.BatchStatementResponse) error { + return im.executeStatements(ctx, statements, func(request dynamodbtypes.BatchStatementRequest, response dynamodbtypes.BatchStatementResponse) error { im.labels = nil - return fmt.Errorf("deleting dynamodb record %q: %s: %s", aws.StringValue(request.Parameters[0].S), aws.StringValue(response.Error.Code), aws.StringValue(response.Error.Message)) + record, err := fromDynamoKey(request.Parameters[0]) + if err != nil { + return fmt.Errorf("deleting dynamodb record: %w", err) + } + return fmt.Errorf("deleting dynamodb record %q: %s: %s", record, response.Error.Code, *response.Error.Message) }) } @@ -347,7 +363,7 @@ func (im *DynamoDBRegistry) AdjustEndpoints(endpoints []*endpoint.Endpoint) ([]* } func (im *DynamoDBRegistry) readLabels(ctx context.Context) error { - table, err := im.dynamodbAPI.DescribeTableWithContext(ctx, &dynamodb.DescribeTableInput{ + table, err := im.dynamodbAPI.DescribeTable(ctx, &dynamodb.DescribeTableInput{ TableName: aws.String(im.table), }) if err != nil { @@ -356,8 +372,8 @@ func (im *DynamoDBRegistry) readLabels(ctx context.Context) error { foundKey := false for _, def := range table.Table.AttributeDefinitions { - if aws.StringValue(def.AttributeName) == "k" { - if aws.StringValue(def.AttributeType) != "S" { + if *def.AttributeName == "k" { + if def.AttributeType != dynamodbtypes.ScalarAttributeTypeS { return fmt.Errorf("table %q attribute \"k\" must have type \"S\"", im.table) } foundKey = true @@ -367,7 +383,7 @@ func (im *DynamoDBRegistry) readLabels(ctx context.Context) error { return fmt.Errorf("table %q must have attribute \"k\" of type \"S\"", im.table) } - if aws.StringValue(table.Table.KeySchema[0].AttributeName) != "k" { + if *table.Table.KeySchema[0].AttributeName != "k" { return fmt.Errorf("table %q must have hash key \"k\"", im.table) } if len(table.Table.KeySchema) > 1 { @@ -375,76 +391,92 @@ func (im *DynamoDBRegistry) readLabels(ctx context.Context) error { } labels := map[endpoint.EndpointKey]endpoint.Labels{} - err = im.dynamodbAPI.ScanPagesWithContext(ctx, &dynamodb.ScanInput{ + scanPaginator := dynamodb.NewScanPaginator(im.dynamodbAPI, &dynamodb.ScanInput{ TableName: aws.String(im.table), FilterExpression: aws.String("o = :ownerval"), - ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{ - ":ownerval": {S: aws.String(im.ownerID)}, + ExpressionAttributeValues: map[string]dynamodbtypes.AttributeValue{ + ":ownerval": &dynamodbtypes.AttributeValueMemberS{Value: im.ownerID}, }, ProjectionExpression: aws.String("k,l"), ConsistentRead: aws.Bool(true), - }, func(output *dynamodb.ScanOutput, last bool) bool { - for _, item := range output.Items { - labels[fromDynamoKey(item["k"])] = fromDynamoLabels(item["l"], im.ownerID) - } - return true }) - if err != nil { - return fmt.Errorf("querying dynamodb: %w", err) + for scanPaginator.HasMorePages() { + output, err := scanPaginator.NextPage(ctx) + if err != nil { + return fmt.Errorf("scanning table %q: %w", im.table, err) + } + for _, item := range output.Items { + k, err := fromDynamoKey(item["k"]) + if err != nil { + return fmt.Errorf("querying dynamodb for key: %w", err) + } + l, err := fromDynamoLabels(item["l"], im.ownerID) + if err != nil { + return fmt.Errorf("querying dynamodb for labels: %w", err) + } + + labels[k] = l + } } im.labels = labels return nil } -func fromDynamoKey(key *dynamodb.AttributeValue) endpoint.EndpointKey { - split := strings.SplitN(aws.StringValue(key.S), "#", 3) +func fromDynamoKey(key dynamodbtypes.AttributeValue) (endpoint.EndpointKey, error) { + var ep string + if err := attributevalue.Unmarshal(key, &ep); err != nil { + return endpoint.EndpointKey{}, fmt.Errorf("unmarshalling endpoint key: %w", err) + } + split := strings.SplitN(ep, "#", 3) return endpoint.EndpointKey{ DNSName: split[0], RecordType: split[1], SetIdentifier: split[2], + }, nil +} + +func toDynamoKey(key endpoint.EndpointKey) dynamodbtypes.AttributeValue { + return &dynamodbtypes.AttributeValueMemberS{ + Value: fmt.Sprintf("%s#%s#%s", key.DNSName, key.RecordType, key.SetIdentifier), } } -func toDynamoKey(key endpoint.EndpointKey) *dynamodb.AttributeValue { - return &dynamodb.AttributeValue{ - S: aws.String(fmt.Sprintf("%s#%s#%s", key.DNSName, key.RecordType, key.SetIdentifier)), - } -} - -func fromDynamoLabels(label *dynamodb.AttributeValue, owner string) endpoint.Labels { +func fromDynamoLabels(label dynamodbtypes.AttributeValue, owner string) (endpoint.Labels, error) { labels := endpoint.NewLabels() - for k, v := range label.M { - labels[k] = aws.StringValue(v.S) + if err := attributevalue.Unmarshal(label, &labels); err != nil { + return endpoint.Labels{}, fmt.Errorf("unmarshalling labels: %w", err) } labels[endpoint.OwnerLabelKey] = owner - return labels + return labels, nil } -func toDynamoLabels(labels endpoint.Labels) *dynamodb.AttributeValue { - labelMap := make(map[string]*dynamodb.AttributeValue, len(labels)) +func toDynamoLabels(labels endpoint.Labels) dynamodbtypes.AttributeValue { + labelMap := make(map[string]dynamodbtypes.AttributeValue, len(labels)) for k, v := range labels { if k == endpoint.OwnerLabelKey { continue } - labelMap[k] = &dynamodb.AttributeValue{S: aws.String(v)} + labelMap[k] = &dynamodbtypes.AttributeValueMemberS{Value: v} } - return &dynamodb.AttributeValue{M: labelMap} + return &dynamodbtypes.AttributeValueMemberM{Value: labelMap} } -func (im *DynamoDBRegistry) appendInsert(statements []*dynamodb.BatchStatementRequest, key endpoint.EndpointKey, new endpoint.Labels) []*dynamodb.BatchStatementRequest { - return append(statements, &dynamodb.BatchStatementRequest{ - Statement: aws.String(fmt.Sprintf("INSERT INTO %q VALUE {'k':?, 'o':?, 'l':?}", im.table)), - Parameters: []*dynamodb.AttributeValue{ +func (im *DynamoDBRegistry) appendInsert(statements []dynamodbtypes.BatchStatementRequest, key endpoint.EndpointKey, new endpoint.Labels) []dynamodbtypes.BatchStatementRequest { + return append(statements, dynamodbtypes.BatchStatementRequest{ + Statement: aws.String(fmt.Sprintf("INSERT INTO %q VALUE {'k':?, 'o':?, 'l':?}", im.table)), + ConsistentRead: aws.Bool(true), + Parameters: []dynamodbtypes.AttributeValue{ toDynamoKey(key), - {S: aws.String(im.ownerID)}, + &dynamodbtypes.AttributeValueMemberS{ + Value: im.ownerID, + }, toDynamoLabels(new), }, - ConsistentRead: aws.Bool(true), }) } -func (im *DynamoDBRegistry) appendUpdate(statements []*dynamodb.BatchStatementRequest, key endpoint.EndpointKey, old endpoint.Labels, new endpoint.Labels) []*dynamodb.BatchStatementRequest { +func (im *DynamoDBRegistry) appendUpdate(statements []dynamodbtypes.BatchStatementRequest, key endpoint.EndpointKey, old endpoint.Labels, new endpoint.Labels) []dynamodbtypes.BatchStatementRequest { if len(old) == len(new) { equal := true for k, v := range old { @@ -458,28 +490,28 @@ func (im *DynamoDBRegistry) appendUpdate(statements []*dynamodb.BatchStatementRe } } - return append(statements, &dynamodb.BatchStatementRequest{ + return append(statements, dynamodbtypes.BatchStatementRequest{ Statement: aws.String(fmt.Sprintf("UPDATE %q SET \"l\"=? WHERE \"k\"=?", im.table)), - Parameters: []*dynamodb.AttributeValue{ + Parameters: []dynamodbtypes.AttributeValue{ toDynamoLabels(new), toDynamoKey(key), }, }) } -func (im *DynamoDBRegistry) appendDelete(statements []*dynamodb.BatchStatementRequest, key endpoint.EndpointKey) []*dynamodb.BatchStatementRequest { - return append(statements, &dynamodb.BatchStatementRequest{ +func (im *DynamoDBRegistry) appendDelete(statements []dynamodbtypes.BatchStatementRequest, key endpoint.EndpointKey) []dynamodbtypes.BatchStatementRequest { + return append(statements, dynamodbtypes.BatchStatementRequest{ Statement: aws.String(fmt.Sprintf("DELETE FROM %q WHERE \"k\"=? AND \"o\"=?", im.table)), - Parameters: []*dynamodb.AttributeValue{ + Parameters: []dynamodbtypes.AttributeValue{ toDynamoKey(key), - {S: aws.String(im.ownerID)}, + &dynamodbtypes.AttributeValueMemberS{Value: im.ownerID}, }, }) } -func (im *DynamoDBRegistry) executeStatements(ctx context.Context, statements []*dynamodb.BatchStatementRequest, handleErr func(request *dynamodb.BatchStatementRequest, response *dynamodb.BatchStatementResponse) error) error { +func (im *DynamoDBRegistry) executeStatements(ctx context.Context, statements []dynamodbtypes.BatchStatementRequest, handleErr func(request dynamodbtypes.BatchStatementRequest, response dynamodbtypes.BatchStatementResponse) error) error { for len(statements) > 0 { - var chunk []*dynamodb.BatchStatementRequest + var chunk []dynamodbtypes.BatchStatementRequest if len(statements) > int(dynamodbMaxBatchSize) { chunk = statements[:dynamodbMaxBatchSize] statements = statements[dynamodbMaxBatchSize:] @@ -488,7 +520,7 @@ func (im *DynamoDBRegistry) executeStatements(ctx context.Context, statements [] statements = nil } - output, err := im.dynamodbAPI.BatchExecuteStatementWithContext(ctx, &dynamodb.BatchExecuteStatementInput{ + output, err := im.dynamodbAPI.BatchExecuteStatement(ctx, &dynamodb.BatchExecuteStatementInput{ Statements: chunk, }) if err != nil { @@ -501,9 +533,13 @@ func (im *DynamoDBRegistry) executeStatements(ctx context.Context, statements [] op, _, _ := strings.Cut(*request.Statement, " ") var key string if op == "UPDATE" { - key = *request.Parameters[1].S + if err := attributevalue.Unmarshal(request.Parameters[1], &key); err != nil { + return err + } } else { - key = *request.Parameters[0].S + if err := attributevalue.Unmarshal(request.Parameters[0], &key); err != nil { + return err + } } log.Infof("%s dynamodb record %q", op, key) } else { diff --git a/registry/dynamodb_test.go b/registry/dynamodb_test.go index 1cadd7dcd..c280554fe 100644 --- a/registry/dynamodb_test.go +++ b/registry/dynamodb_test.go @@ -22,9 +22,10 @@ import ( "testing" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "k8s.io/apimachinery/pkg/util/sets" @@ -69,40 +70,40 @@ func TestDynamoDBRegistryNew(t *testing.T) { func TestDynamoDBRegistryRecordsBadTable(t *testing.T) { for _, tc := range []struct { name string - setup func(desc *dynamodb.TableDescription) + setup func(desc *dynamodbtypes.TableDescription) expected string }{ { name: "missing attribute k", - setup: func(desc *dynamodb.TableDescription) { + setup: func(desc *dynamodbtypes.TableDescription) { desc.AttributeDefinitions[0].AttributeName = aws.String("wrong") }, expected: "table \"test-table\" must have attribute \"k\" of type \"S\"", }, { name: "wrong attribute type", - setup: func(desc *dynamodb.TableDescription) { - desc.AttributeDefinitions[0].AttributeType = aws.String("SS") + setup: func(desc *dynamodbtypes.TableDescription) { + desc.AttributeDefinitions[0].AttributeType = "SS" }, expected: "table \"test-table\" attribute \"k\" must have type \"S\"", }, { name: "wrong key", - setup: func(desc *dynamodb.TableDescription) { + setup: func(desc *dynamodbtypes.TableDescription) { desc.KeySchema[0].AttributeName = aws.String("wrong") }, expected: "table \"test-table\" must have hash key \"k\"", }, { name: "has range key", - setup: func(desc *dynamodb.TableDescription) { - desc.AttributeDefinitions = append(desc.AttributeDefinitions, &dynamodb.AttributeDefinition{ + setup: func(desc *dynamodbtypes.TableDescription) { + desc.AttributeDefinitions = append(desc.AttributeDefinitions, dynamodbtypes.AttributeDefinition{ AttributeName: aws.String("o"), - AttributeType: aws.String("S"), + AttributeType: dynamodbtypes.ScalarAttributeTypeS, }) - desc.KeySchema = append(desc.KeySchema, &dynamodb.KeySchemaElement{ + desc.KeySchema = append(desc.KeySchema, dynamodbtypes.KeySchemaElement{ AttributeName: aws.String("o"), - KeyType: aws.String("RANGE"), + KeyType: dynamodbtypes.KeyTypeRange, }) }, expected: "table \"test-table\" must not have a range key", @@ -559,8 +560,8 @@ func TestDynamoDBRegistryApplyChanges(t *testing.T) { }, }, stubConfig: DynamoDBStubConfig{ - ExpectInsertError: map[string]string{ - "new.test-zone.example.org#CNAME#set-new": "DuplicateItem", + ExpectInsertError: map[string]dynamodbtypes.BatchStatementErrorCodeEnum{ + "new.test-zone.example.org#CNAME#set-new": dynamodbtypes.BatchStatementErrorCodeEnumDuplicateItem, }, ExpectDelete: sets.New("quux.test-zone.example.org#A#set-2"), }, @@ -620,7 +621,7 @@ func TestDynamoDBRegistryApplyChanges(t *testing.T) { }, }, stubConfig: DynamoDBStubConfig{ - ExpectInsertError: map[string]string{ + ExpectInsertError: map[string]dynamodbtypes.BatchStatementErrorCodeEnum{ "new.test-zone.example.org#CNAME#set-new": "TestingError", }, }, @@ -928,7 +929,7 @@ func TestDynamoDBRegistryApplyChanges(t *testing.T) { }, }, stubConfig: DynamoDBStubConfig{ - ExpectUpdateError: map[string]string{ + ExpectUpdateError: map[string]dynamodbtypes.BatchStatementErrorCodeEnum{ "bar.test-zone.example.org#CNAME#": "TestingError", }, }, @@ -1073,15 +1074,15 @@ func TestDynamoDBRegistryApplyChanges(t *testing.T) { type DynamoDBStub struct { t *testing.T stubConfig *DynamoDBStubConfig - tableDescription dynamodb.TableDescription + tableDescription dynamodbtypes.TableDescription changesApplied bool } type DynamoDBStubConfig struct { ExpectInsert map[string]map[string]string - ExpectInsertError map[string]string + ExpectInsertError map[string]dynamodbtypes.BatchStatementErrorCodeEnum ExpectUpdate map[string]map[string]string - ExpectUpdateError map[string]string + ExpectUpdateError map[string]dynamodbtypes.BatchStatementErrorCodeEnum ExpectDelete sets.Set[string] } @@ -1100,17 +1101,17 @@ func newDynamoDBAPIStub(t *testing.T, stubConfig *DynamoDBStubConfig) (*DynamoDB stub := &DynamoDBStub{ t: t, stubConfig: stubConfig, - tableDescription: dynamodb.TableDescription{ - AttributeDefinitions: []*dynamodb.AttributeDefinition{ + tableDescription: dynamodbtypes.TableDescription{ + AttributeDefinitions: []dynamodbtypes.AttributeDefinition{ { AttributeName: aws.String("k"), - AttributeType: aws.String("S"), + AttributeType: dynamodbtypes.ScalarAttributeTypeS, }, }, - KeySchema: []*dynamodb.KeySchemaElement{ + KeySchema: []dynamodbtypes.KeySchemaElement{ { AttributeName: aws.String("k"), - KeyType: aws.String("HASH"), + KeyType: dynamodbtypes.KeyTypeHash, }, }, }, @@ -1131,7 +1132,7 @@ func newDynamoDBAPIStub(t *testing.T, stubConfig *DynamoDBStubConfig) (*DynamoDB } } -func (r *DynamoDBStub) DescribeTableWithContext(ctx aws.Context, input *dynamodb.DescribeTableInput, opts ...request.Option) (*dynamodb.DescribeTableOutput, error) { +func (r *DynamoDBStub) DescribeTable(ctx context.Context, input *dynamodb.DescribeTableInput, opts ...func(*dynamodb.Options)) (*dynamodb.DescribeTableOutput, error) { assert.NotNil(r.t, ctx) assert.Equal(r.t, "test-table", *input.TableName, "table name") return &dynamodb.DescribeTableOutput{ @@ -1139,75 +1140,80 @@ func (r *DynamoDBStub) DescribeTableWithContext(ctx aws.Context, input *dynamodb }, nil } -func (r *DynamoDBStub) ScanPagesWithContext(ctx aws.Context, input *dynamodb.ScanInput, fn func(*dynamodb.ScanOutput, bool) bool, opts ...request.Option) error { +func (r *DynamoDBStub) Scan(ctx context.Context, input *dynamodb.ScanInput, opts ...func(*dynamodb.Options)) (*dynamodb.ScanOutput, error) { assert.NotNil(r.t, ctx) assert.Equal(r.t, "test-table", *input.TableName, "table name") assert.Equal(r.t, "o = :ownerval", *input.FilterExpression) assert.Len(r.t, input.ExpressionAttributeValues, 1) - assert.Equal(r.t, "test-owner", *input.ExpressionAttributeValues[":ownerval"].S) + var owner string + assert.Nil(r.t, attributevalue.Unmarshal(input.ExpressionAttributeValues[":ownerval"], &owner)) + assert.Equal(r.t, "test-owner", owner) assert.Equal(r.t, "k,l", *input.ProjectionExpression) assert.True(r.t, *input.ConsistentRead) - fn(&dynamodb.ScanOutput{ - Items: []map[string]*dynamodb.AttributeValue{ + return &dynamodb.ScanOutput{ + Items: []map[string]dynamodbtypes.AttributeValue{ { - "k": &dynamodb.AttributeValue{S: aws.String("bar.test-zone.example.org#CNAME#")}, - "l": &dynamodb.AttributeValue{M: map[string]*dynamodb.AttributeValue{ - endpoint.ResourceLabelKey: {S: aws.String("ingress/default/my-ingress")}, + "k": &dynamodbtypes.AttributeValueMemberS{Value: "bar.test-zone.example.org#CNAME#"}, + "l": &dynamodbtypes.AttributeValueMemberM{Value: map[string]dynamodbtypes.AttributeValue{ + endpoint.ResourceLabelKey: &dynamodbtypes.AttributeValueMemberS{Value: "ingress/default/my-ingress"}, }}, }, { - "k": &dynamodb.AttributeValue{S: aws.String("baz.test-zone.example.org#A#set-1")}, - "l": &dynamodb.AttributeValue{M: map[string]*dynamodb.AttributeValue{ - endpoint.ResourceLabelKey: {S: aws.String("ingress/default/my-ingress")}, + "k": &dynamodbtypes.AttributeValueMemberS{Value: "baz.test-zone.example.org#A#set-1"}, + "l": &dynamodbtypes.AttributeValueMemberM{Value: map[string]dynamodbtypes.AttributeValue{ + endpoint.ResourceLabelKey: &dynamodbtypes.AttributeValueMemberS{Value: "ingress/default/my-ingress"}, }}, }, { - "k": &dynamodb.AttributeValue{S: aws.String("baz.test-zone.example.org#A#set-2")}, - "l": &dynamodb.AttributeValue{M: map[string]*dynamodb.AttributeValue{ - endpoint.ResourceLabelKey: {S: aws.String("ingress/default/other-ingress")}, + "k": &dynamodbtypes.AttributeValueMemberS{Value: "baz.test-zone.example.org#A#set-2"}, + "l": &dynamodbtypes.AttributeValueMemberM{Value: map[string]dynamodbtypes.AttributeValue{ + endpoint.ResourceLabelKey: &dynamodbtypes.AttributeValueMemberS{Value: "ingress/default/other-ingress"}, }}, }, { - "k": &dynamodb.AttributeValue{S: aws.String("quux.test-zone.example.org#A#set-2")}, - "l": &dynamodb.AttributeValue{M: map[string]*dynamodb.AttributeValue{ - endpoint.ResourceLabelKey: {S: aws.String("ingress/default/quux-ingress")}, + "k": &dynamodbtypes.AttributeValueMemberS{Value: "quux.test-zone.example.org#A#set-2"}, + "l": &dynamodbtypes.AttributeValueMemberM{Value: map[string]dynamodbtypes.AttributeValue{ + endpoint.ResourceLabelKey: &dynamodbtypes.AttributeValueMemberS{Value: "ingress/default/quux-ingress"}, }}, }, }, - }, true) - return nil + }, nil } -func (r *DynamoDBStub) BatchExecuteStatementWithContext(context aws.Context, input *dynamodb.BatchExecuteStatementInput, option ...request.Option) (*dynamodb.BatchExecuteStatementOutput, error) { +func (r *DynamoDBStub) BatchExecuteStatement(context context.Context, input *dynamodb.BatchExecuteStatementInput, option ...func(*dynamodb.Options)) (*dynamodb.BatchExecuteStatementOutput, error) { assert.NotNil(r.t, context) - hasDelete := strings.HasPrefix(strings.ToLower(aws.StringValue(input.Statements[0].Statement)), "delete") + hasDelete := strings.HasPrefix(strings.ToLower(*input.Statements[0].Statement), "delete") assert.Equal(r.t, hasDelete, r.changesApplied, "delete after provider changes, everything else before") assert.LessOrEqual(r.t, len(input.Statements), 25) - responses := make([]*dynamodb.BatchStatementResponse, 0, len(input.Statements)) + responses := make([]dynamodbtypes.BatchStatementResponse, 0, len(input.Statements)) for _, statement := range input.Statements { - assert.Equal(r.t, hasDelete, strings.HasPrefix(strings.ToLower(aws.StringValue(statement.Statement)), "delete")) - switch aws.StringValue(statement.Statement) { + assert.Equal(r.t, hasDelete, strings.HasPrefix(strings.ToLower(*statement.Statement), "delete")) + switch *statement.Statement { case "DELETE FROM \"test-table\" WHERE \"k\"=? AND \"o\"=?": assert.True(r.t, r.changesApplied, "unexpected delete before provider changes") - key := aws.StringValue(statement.Parameters[0].S) + var key string + assert.Nil(r.t, attributevalue.Unmarshal(statement.Parameters[0], &key)) assert.True(r.t, r.stubConfig.ExpectDelete.Has(key), "unexpected delete for key %q", key) r.stubConfig.ExpectDelete.Delete(key) - assert.Equal(r.t, "test-owner", aws.StringValue(statement.Parameters[1].S)) + var testOwner string + assert.Nil(r.t, attributevalue.Unmarshal(statement.Parameters[1], &testOwner)) + assert.Equal(r.t, "test-owner", testOwner) - responses = append(responses, &dynamodb.BatchStatementResponse{}) + responses = append(responses, dynamodbtypes.BatchStatementResponse{}) case "INSERT INTO \"test-table\" VALUE {'k':?, 'o':?, 'l':?}": assert.False(r.t, r.changesApplied, "unexpected insert after provider changes") - key := aws.StringValue(statement.Parameters[0].S) + var key string + assert.Nil(r.t, attributevalue.Unmarshal(statement.Parameters[0], &key)) if code, exists := r.stubConfig.ExpectInsertError[key]; exists { delete(r.stubConfig.ExpectInsertError, key) - responses = append(responses, &dynamodb.BatchStatementResponse{ - Error: &dynamodb.BatchStatementError{ - Code: aws.String(code), + responses = append(responses, dynamodbtypes.BatchStatementResponse{ + Error: &dynamodbtypes.BatchStatementError{ + Code: code, Message: aws.String("testing error"), }, }) @@ -1218,10 +1224,15 @@ func (r *DynamoDBStub) BatchExecuteStatementWithContext(context aws.Context, inp assert.True(r.t, found, "unexpected insert for key %q", key) delete(r.stubConfig.ExpectInsert, key) - assert.Equal(r.t, "test-owner", aws.StringValue(statement.Parameters[1].S)) + var testOwner string + assert.Nil(r.t, attributevalue.Unmarshal(statement.Parameters[1], &testOwner)) + assert.Equal(r.t, "test-owner", testOwner) - for label, attribute := range statement.Parameters[2].M { - value := aws.StringValue(attribute.S) + var labels map[string]string + err := attributevalue.Unmarshal(statement.Parameters[2], &labels) + assert.Nil(r.t, err) + + for label, value := range labels { expectedValue, found := expectedLabels[label] assert.True(r.t, found, "insert for key %q has unexpected label %q", key, label) delete(expectedLabels, label) @@ -1232,17 +1243,18 @@ func (r *DynamoDBStub) BatchExecuteStatementWithContext(context aws.Context, inp r.t.Errorf("insert for key %q did not get expected label %q", key, label) } - responses = append(responses, &dynamodb.BatchStatementResponse{}) + responses = append(responses, dynamodbtypes.BatchStatementResponse{}) case "UPDATE \"test-table\" SET \"l\"=? WHERE \"k\"=?": assert.False(r.t, r.changesApplied, "unexpected update after provider changes") - key := aws.StringValue(statement.Parameters[1].S) + var key string + assert.Nil(r.t, attributevalue.Unmarshal(statement.Parameters[1], &key)) if code, exists := r.stubConfig.ExpectUpdateError[key]; exists { delete(r.stubConfig.ExpectInsertError, key) - responses = append(responses, &dynamodb.BatchStatementResponse{ - Error: &dynamodb.BatchStatementError{ - Code: aws.String(code), + responses = append(responses, dynamodbtypes.BatchStatementResponse{ + Error: &dynamodbtypes.BatchStatementError{ + Code: code, Message: aws.String("testing error"), }, }) @@ -1253,8 +1265,10 @@ func (r *DynamoDBStub) BatchExecuteStatementWithContext(context aws.Context, inp assert.True(r.t, found, "unexpected update for key %q", key) delete(r.stubConfig.ExpectUpdate, key) - for label, attribute := range statement.Parameters[0].M { - value := aws.StringValue(attribute.S) + var labels map[string]string + assert.Nil(r.t, attributevalue.Unmarshal(statement.Parameters[0], &labels)) + + for label, value := range labels { expectedValue, found := expectedLabels[label] assert.True(r.t, found, "update for key %q has unexpected label %q", key, label) delete(expectedLabels, label) @@ -1265,10 +1279,10 @@ func (r *DynamoDBStub) BatchExecuteStatementWithContext(context aws.Context, inp r.t.Errorf("update for key %q did not get expected label %q", key, label) } - responses = append(responses, &dynamodb.BatchStatementResponse{}) + responses = append(responses, dynamodbtypes.BatchStatementResponse{}) default: - r.t.Errorf("unexpected statement: %s", aws.StringValue(statement.Statement)) + r.t.Errorf("unexpected statement: %s", *statement.Statement) } } diff --git a/registry/noop.go b/registry/noop.go index 9e06bbb92..daf29cb01 100644 --- a/registry/noop.go +++ b/registry/noop.go @@ -36,7 +36,7 @@ func NewNoopRegistry(provider provider.Provider) (*NoopRegistry, error) { }, nil } -func (im *NoopRegistry) GetDomainFilter() endpoint.DomainFilter { +func (im *NoopRegistry) GetDomainFilter() endpoint.DomainFilterInterface { return im.provider.GetDomainFilter() } diff --git a/registry/registry.go b/registry/registry.go index d2955365d..3117c4205 100644 --- a/registry/registry.go +++ b/registry/registry.go @@ -31,6 +31,6 @@ type Registry interface { Records(ctx context.Context) ([]*endpoint.Endpoint, error) ApplyChanges(ctx context.Context, changes *plan.Changes) error AdjustEndpoints(endpoints []*endpoint.Endpoint) ([]*endpoint.Endpoint, error) - GetDomainFilter() endpoint.DomainFilter + GetDomainFilter() endpoint.DomainFilterInterface OwnerID() string } diff --git a/registry/txt.go b/registry/txt.go index 8e7b6f096..12445bcb1 100644 --- a/registry/txt.go +++ b/registry/txt.go @@ -95,7 +95,7 @@ func getSupportedTypes() []string { return []string{endpoint.RecordTypeA, endpoint.RecordTypeAAAA, endpoint.RecordTypeCNAME, endpoint.RecordTypeNS} } -func (im *TXTRegistry) GetDomainFilter() endpoint.DomainFilter { +func (im *TXTRegistry) GetDomainFilter() endpoint.DomainFilterInterface { return im.provider.GetDomainFilter() } diff --git a/source/ambassador_host.go b/source/ambassador_host.go index 5d8b9e56e..cb0501210 100644 --- a/source/ambassador_host.go +++ b/source/ambassador_host.go @@ -57,8 +57,10 @@ type ambassadorHostSource struct { dynamicKubeClient dynamic.Interface kubeClient kubernetes.Interface namespace string + annotationFilter string ambassadorHostInformer informers.GenericInformer unstructuredConverter *unstructuredConverter + labelSelector labels.Selector } // NewAmbassadorHostSource creates a new ambassadorHostSource with the given config. @@ -67,6 +69,8 @@ func NewAmbassadorHostSource( dynamicKubeClient dynamic.Interface, kubeClient kubernetes.Interface, namespace string, + annotationFilter string, + labelSelector labels.Selector, ) (Source, error) { var err error @@ -85,6 +89,7 @@ func NewAmbassadorHostSource( informerFactory.Start(ctx.Done()) + // wait for the local cache to be populated. if err := waitForDynamicCacheSync(context.Background(), informerFactory); err != nil { return nil, err } @@ -98,20 +103,23 @@ func NewAmbassadorHostSource( dynamicKubeClient: dynamicKubeClient, kubeClient: kubeClient, namespace: namespace, + annotationFilter: annotationFilter, ambassadorHostInformer: ambassadorHostInformer, unstructuredConverter: uc, + labelSelector: labelSelector, }, nil } // Endpoints returns endpoint objects for each host-target combination that should be processed. // Retrieves all Hosts in the source's namespace(s). func (sc *ambassadorHostSource) Endpoints(ctx context.Context) ([]*endpoint.Endpoint, error) { - hosts, err := sc.ambassadorHostInformer.Lister().ByNamespace(sc.namespace).List(labels.Everything()) + hosts, err := sc.ambassadorHostInformer.Lister().ByNamespace(sc.namespace).List(sc.labelSelector) if err != nil { return nil, err } - endpoints := []*endpoint.Endpoint{} + // Get a list of Ambassador Host resources + ambassadorHosts := []*ambassador.Host{} for _, hostObj := range hosts { unstructuredHost, ok := hostObj.(*unstructured.Unstructured) if !ok { @@ -123,7 +131,18 @@ func (sc *ambassadorHostSource) Endpoints(ctx context.Context) ([]*endpoint.Endp if err != nil { return nil, err } + ambassadorHosts = append(ambassadorHosts, host) + } + // Filter Ambassador Hosts + ambassadorHosts, err = sc.filterByAnnotations(ambassadorHosts) + if err != nil { + return nil, errors.Wrap(err, "failed to filter Ambassador Hosts by annotation") + } + + endpoints := []*endpoint.Endpoint{} + + for _, host := range ambassadorHosts { fullname := fmt.Sprintf("%s/%s", host.Namespace, host.Name) // look for the "exernal-dns.ambassador-service" annotation. If it is not there then just ignore this `Host` @@ -269,3 +288,35 @@ func newUnstructuredConverter() (*unstructuredConverter, error) { return uc, nil } + +// Filter a list of Ambassador Host Resources to only return the ones that +// contain the required External-DNS annotation filter +func (sc *ambassadorHostSource) filterByAnnotations(ambassadorHosts []*ambassador.Host) ([]*ambassador.Host, error) { + // External-DNS Annotation Filter + labelSelector, err := metav1.ParseToLabelSelector(sc.annotationFilter) + if err != nil { + return nil, err + } + + selector, err := metav1.LabelSelectorAsSelector(labelSelector) + if err != nil { + return nil, err + } + + // empty filter returns original list of Ambassador Hosts + if selector.Empty() { + return ambassadorHosts, nil + } + + // Return a filtered list of Ambassador Hosts + filteredList := []*ambassador.Host{} + for _, host := range ambassadorHosts { + annotations := labels.Set(host.Annotations) + // include Ambassador Host if its annotations match the annotation filter + if selector.Matches(annotations) { + filteredList = append(filteredList, host) + } + } + + return filteredList, nil +} diff --git a/source/ambassador_host_test.go b/source/ambassador_host_test.go index 1f0091146..970bb2a19 100644 --- a/source/ambassador_host_test.go +++ b/source/ambassador_host_test.go @@ -17,6 +17,7 @@ limitations under the License. package source import ( + "context" "fmt" "testing" @@ -24,10 +25,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "golang.org/x/net/context" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" fakeDynamic "k8s.io/client-go/dynamic/fake" fakeKube "k8s.io/client-go/kubernetes/fake" @@ -37,6 +38,9 @@ import ( const defaultAmbassadorNamespace = "ambassador" const defaultAmbassadorServiceName = "ambassador" +// This is a compile-time validation that ambassadorHostSource is a Source. +var _ Source = &ambassadorHostSource{} + type AmbassadorSuite struct { suite.Suite } @@ -57,13 +61,16 @@ func TestAmbassadorHostSource(t *testing.T) { hostAnnotation := fmt.Sprintf("%s/%s", defaultAmbassadorNamespace, defaultAmbassadorServiceName) for _, ti := range []struct { - title string - host ambassador.Host - service v1.Service - expected []*endpoint.Endpoint + title string + annotationFilter string + labelSelector labels.Selector + host ambassador.Host + service v1.Service + expected []*endpoint.Endpoint }{ { - title: "Simple host", + title: "Simple host", + labelSelector: labels.Everything(), host: ambassador.Host{ ObjectMeta: metav1.ObjectMeta{ Name: "basic-host", @@ -95,7 +102,8 @@ func TestAmbassadorHostSource(t *testing.T) { }, }, }, { - title: "Service with load balancer hostname", + title: "Service with load balancer hostname", + labelSelector: labels.Everything(), host: ambassador.Host{ ObjectMeta: metav1.ObjectMeta{ Name: "basic-host", @@ -127,7 +135,8 @@ func TestAmbassadorHostSource(t *testing.T) { }, }, }, { - title: "Service with external IP", + title: "Service with external IP", + labelSelector: labels.Everything(), host: ambassador.Host{ ObjectMeta: metav1.ObjectMeta{ Name: "service-external-ip", @@ -162,7 +171,8 @@ func TestAmbassadorHostSource(t *testing.T) { }, }, }, { - title: "Host with target annotation", + title: "Host with target annotation", + labelSelector: labels.Everything(), host: ambassador.Host{ ObjectMeta: metav1.ObjectMeta{ Name: "basic-host", @@ -195,7 +205,8 @@ func TestAmbassadorHostSource(t *testing.T) { }, }, }, { - title: "Host with TTL annotation", + title: "Host with TTL annotation", + labelSelector: labels.Everything(), host: ambassador.Host{ ObjectMeta: metav1.ObjectMeta{ Name: "basic-host", @@ -229,7 +240,8 @@ func TestAmbassadorHostSource(t *testing.T) { }, }, }, { - title: "Host with provider specific annotation", + title: "Host with provider specific annotation", + labelSelector: labels.Everything(), host: ambassador.Host{ ObjectMeta: metav1.ObjectMeta{ Name: "basic-host", @@ -266,7 +278,8 @@ func TestAmbassadorHostSource(t *testing.T) { }, }, }, { - title: "Host with missing Ambassador annotation", + title: "Host with missing Ambassador annotation", + labelSelector: labels.Everything(), host: ambassador.Host{ ObjectMeta: metav1.ObjectMeta{ Name: "basic-host", @@ -288,6 +301,316 @@ func TestAmbassadorHostSource(t *testing.T) { }, }, expected: []*endpoint.Endpoint{}, + }, { + title: "valid matching annotation filter expression", + annotationFilter: "kubernetes.io/ingress.class in (external-ingress)", + labelSelector: labels.Everything(), + host: ambassador.Host{ + ObjectMeta: metav1.ObjectMeta{ + Name: "basic-host", + Annotations: map[string]string{ + ambHostAnnotation: hostAnnotation, + "kubernetes.io/ingress.class": "external-ingress", + }, + }, + Spec: &ambassador.HostSpec{ + Hostname: "www.example.org", + }, + }, + service: v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: defaultAmbassadorServiceName, + }, + Status: v1.ServiceStatus{ + LoadBalancer: v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{ + IP: "1.1.1.1", + }}, + }, + }, + }, + expected: []*endpoint.Endpoint{ + { + DNSName: "www.example.org", + RecordType: endpoint.RecordTypeA, + Targets: endpoint.Targets{"1.1.1.1"}, + }, + }, + }, { + title: "valid non-matching annotation filter expression", + annotationFilter: "kubernetes.io/ingress.class in (external-ingress)", + labelSelector: labels.Everything(), + host: ambassador.Host{ + ObjectMeta: metav1.ObjectMeta{ + Name: "basic-host", + Annotations: map[string]string{ + ambHostAnnotation: hostAnnotation, + "kubernetes.io/ingress.class": "internal-ingress", + }, + }, + Spec: &ambassador.HostSpec{ + Hostname: "www.example.org", + }, + }, + service: v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: defaultAmbassadorServiceName, + }, + Status: v1.ServiceStatus{ + LoadBalancer: v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{ + IP: "1.1.1.1", + }}, + }, + }, + }, + expected: []*endpoint.Endpoint{}, + }, { + title: "invalid annotation filter expression", + annotationFilter: "kubernetes.io/ingress.class in (invalid-ingress)", + labelSelector: labels.Everything(), + host: ambassador.Host{ + ObjectMeta: metav1.ObjectMeta{ + Name: "basic-host", + Annotations: map[string]string{ + ambHostAnnotation: hostAnnotation, + "kubernetes.io/ingress.class": "external-ingress", + }, + }, + Spec: &ambassador.HostSpec{ + Hostname: "www.example.org", + }, + }, + service: v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: defaultAmbassadorServiceName, + }, + Status: v1.ServiceStatus{ + LoadBalancer: v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{ + IP: "1.1.1.1", + }}, + }, + }, + }, + expected: []*endpoint.Endpoint{}, + }, { + title: "valid non-matching annotation filter label", + annotationFilter: "kubernetes.io/ingress.class=external-ingress", + labelSelector: labels.Everything(), + host: ambassador.Host{ + ObjectMeta: metav1.ObjectMeta{ + Name: "basic-host", + Annotations: map[string]string{ + ambHostAnnotation: hostAnnotation, + "kubernetes.io/ingress.class": "internal-ingress", + }, + }, + Spec: &ambassador.HostSpec{ + Hostname: "www.example.org", + }, + }, + service: v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: defaultAmbassadorServiceName, + }, + Status: v1.ServiceStatus{ + LoadBalancer: v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{ + IP: "1.1.1.1", + }}, + }, + }, + }, + expected: []*endpoint.Endpoint{}, + }, + { + title: "valid non-matching label filter expression", + labelSelector: labels.SelectorFromSet(labels.Set{"kubernetes.io/ingress.class": "external-ingress"}), + host: ambassador.Host{ + ObjectMeta: metav1.ObjectMeta{ + Name: "basic-host", + Annotations: map[string]string{ + ambHostAnnotation: hostAnnotation, + "kubernetes.io/ingress.class": "internal-ingress", + }, + Labels: map[string]string{ + "kubernetes.io/ingress.class": "internal-ingress", + }, + }, + Spec: &ambassador.HostSpec{ + Hostname: "www.example.org", + }, + }, + service: v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: defaultAmbassadorServiceName, + }, + Status: v1.ServiceStatus{ + LoadBalancer: v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{ + IP: "1.1.1.1", + }}, + }, + }, + }, + expected: []*endpoint.Endpoint{}, + }, + { + title: "valid matching label filter expression for single host", + labelSelector: labels.SelectorFromSet(labels.Set{"kubernetes.io/ingress.class": "external-ingress"}), + host: ambassador.Host{ + ObjectMeta: metav1.ObjectMeta{ + Name: "basic-host", + Annotations: map[string]string{ + ambHostAnnotation: hostAnnotation, + }, + Labels: map[string]string{ + "kubernetes.io/ingress.class": "external-ingress", + }, + }, + Spec: &ambassador.HostSpec{ + Hostname: "www.example.org", + }, + }, + service: v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: defaultAmbassadorServiceName, + }, + Status: v1.ServiceStatus{ + LoadBalancer: v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{ + IP: "1.1.1.1", + Hostname: "dns.google", + }}, + }, + }, + }, + expected: []*endpoint.Endpoint{ + { + DNSName: "www.example.org", + RecordType: endpoint.RecordTypeA, + Targets: endpoint.Targets{"1.1.1.1"}, + }, + { + DNSName: "www.example.org", + RecordType: endpoint.RecordTypeCNAME, + Targets: endpoint.Targets{"dns.google"}, + }, + }, + }, + { + title: "valid matching label filter expression and matching annotation filter", + annotationFilter: "kubernetes.io/ingress.class in (external-ingress)", + labelSelector: labels.SelectorFromSet(labels.Set{"kubernetes.io/ingress.class": "external-ingress"}), + host: ambassador.Host{ + ObjectMeta: metav1.ObjectMeta{ + Name: "basic-host", + Annotations: map[string]string{ + ambHostAnnotation: hostAnnotation, + "kubernetes.io/ingress.class": "external-ingress", + }, + Labels: map[string]string{ + "kubernetes.io/ingress.class": "external-ingress", + }, + }, + Spec: &ambassador.HostSpec{ + Hostname: "www.example.org", + }, + }, + service: v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: defaultAmbassadorServiceName, + }, + Status: v1.ServiceStatus{ + LoadBalancer: v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{ + IP: "1.1.1.1", + Hostname: "dns.google", + }}, + }, + }, + }, + expected: []*endpoint.Endpoint{ + { + DNSName: "www.example.org", + RecordType: endpoint.RecordTypeA, + Targets: endpoint.Targets{"1.1.1.1"}, + }, + { + DNSName: "www.example.org", + RecordType: endpoint.RecordTypeCNAME, + Targets: endpoint.Targets{"dns.google"}, + }, + }, + }, + { + title: "valid non matching label filter expression and valid matching annotation filter", + annotationFilter: "kubernetes.io/ingress.class in (external-ingress)", + labelSelector: labels.SelectorFromSet(labels.Set{"kubernetes.io/ingress.class": "external-ingress"}), + host: ambassador.Host{ + ObjectMeta: metav1.ObjectMeta{ + Name: "basic-host", + Annotations: map[string]string{ + ambHostAnnotation: hostAnnotation, + "kubernetes.io/ingress.class": "external-ingress", + }, + Labels: map[string]string{ + "kubernetes.io/ingress.class": "internal-ingress", + }, + }, + Spec: &ambassador.HostSpec{ + Hostname: "www.example.org", + }, + }, + service: v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: defaultAmbassadorServiceName, + }, + Status: v1.ServiceStatus{ + LoadBalancer: v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{ + IP: "1.1.1.1", + Hostname: "dns.google", + }}, + }, + }, + }, + expected: []*endpoint.Endpoint{}, + }, + { + title: "valid matching label filter expression and non matching annotation filter", + annotationFilter: "kubernetes.io/ingress.class in (external-ingress)", + labelSelector: labels.SelectorFromSet(labels.Set{"kubernetes.io/ingress.class": "external-ingress"}), + host: ambassador.Host{ + ObjectMeta: metav1.ObjectMeta{ + Name: "basic-host", + Annotations: map[string]string{ + ambHostAnnotation: hostAnnotation, + "kubernetes.io/ingress.class": "internal-ingress", + }, + Labels: map[string]string{ + "kubernetes.io/ingress.class": "external-ingress", + }, + }, + Spec: &ambassador.HostSpec{ + Hostname: "www.example.org", + }, + }, + service: v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: defaultAmbassadorServiceName, + }, + Status: v1.ServiceStatus{ + LoadBalancer: v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{ + IP: "1.1.1.1", + Hostname: "dns.google", + }}, + }, + }, + }, + expected: []*endpoint.Endpoint{}, }, } { ti := ti @@ -312,7 +635,7 @@ func TestAmbassadorHostSource(t *testing.T) { _, err = fakeDynamicClient.Resource(ambHostGVR).Namespace(namespace).Create(context.Background(), host, metav1.CreateOptions{}) assert.NoError(t, err) - source, err := NewAmbassadorHostSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, namespace) + source, err := NewAmbassadorHostSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, namespace, ti.annotationFilter, ti.labelSelector) assert.NoError(t, err) assert.NotNil(t, source) diff --git a/source/gateway.go b/source/gateway.go index 8f8a624a5..5d8474999 100644 --- a/source/gateway.go +++ b/source/gateway.go @@ -34,9 +34,10 @@ import ( coreinformers "k8s.io/client-go/informers/core/v1" cache "k8s.io/client-go/tools/cache" v1 "sigs.k8s.io/gateway-api/apis/v1" + v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" gateway "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned" informers "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions" - informers_v1 "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions/apis/v1" + informers_v1beta1 "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions/apis/v1beta1" "sigs.k8s.io/external-dns/endpoint" ) @@ -44,6 +45,10 @@ import ( const ( gatewayGroup = "gateway.networking.k8s.io" gatewayKind = "Gateway" + // gatewayAPIDualstackAnnotationKey is the annotation used for determining if a Gateway Route is dualstack + gatewayAPIDualstackAnnotationKey = "external-dns.alpha.kubernetes.io/dualstack" + // gatewayAPIDualstackAnnotationValue is the value of the Gateway Route dualstack annotation that indicates it is dualstack + gatewayAPIDualstackAnnotationValue = "true" ) type gatewayRoute interface { @@ -83,7 +88,7 @@ func newGatewayInformerFactory(client gateway.Interface, namespace string, label type gatewayRouteSource struct { gwNamespace string gwLabels labels.Selector - gwInformer informers_v1.GatewayInformer + gwInformer informers_v1beta1.GatewayInformer rtKind string rtNamespace string @@ -124,8 +129,8 @@ func newGatewayRouteSource(clients ClientGenerator, config *Config, kind string, } informerFactory := newGatewayInformerFactory(client, config.GatewayNamespace, gwLabels) - gwInformer := informerFactory.Gateway().V1().Gateways() // TODO: Gateway informer should be shared across gateway sources. - gwInformer.Informer() // Register with factory before starting. + gwInformer := informerFactory.Gateway().V1beta1().Gateways() // TODO: Gateway informer should be shared across gateway sources. + gwInformer.Informer() // Register with factory before starting. rtInformerFactory := informerFactory if config.Namespace != config.GatewayNamespace || !selectorsEqual(rtLabels, gwLabels) { @@ -235,6 +240,7 @@ func (src *gatewayRouteSource) Endpoints(ctx context.Context) ([]*endpoint.Endpo for host, targets := range hostTargets { endpoints = append(endpoints, endpointsForHostname(host, targets, ttl, providerSpecific, setIdentifier, resource)...) } + setDualstackLabel(rt, endpoints) log.Debugf("Endpoints generated from %s %s/%s: %v", src.rtKind, meta.Namespace, meta.Name, endpoints) } return endpoints, nil @@ -251,11 +257,11 @@ type gatewayRouteResolver struct { } type gatewayListeners struct { - gateway *v1.Gateway + gateway *v1beta1.Gateway listeners map[v1.SectionName][]v1.Listener } -func newGatewayRouteResolver(src *gatewayRouteSource, gateways []*v1.Gateway, namespaces []*corev1.Namespace) *gatewayRouteResolver { +func newGatewayRouteResolver(src *gatewayRouteSource, gateways []*v1beta1.Gateway, namespaces []*corev1.Namespace) *gatewayRouteResolver { // Create Gateway Listener lookup table. gws := make(map[types.NamespacedName]gatewayListeners, len(gateways)) for _, gw := range gateways { @@ -395,7 +401,7 @@ func (c *gatewayRouteResolver) hosts(rt gatewayRoute) ([]string, error) { return hostnames, nil } -func (c *gatewayRouteResolver) routeIsAllowed(gw *v1.Gateway, lis *v1.Listener, rt gatewayRoute) bool { +func (c *gatewayRouteResolver) routeIsAllowed(gw *v1beta1.Gateway, lis *v1.Listener, rt gatewayRoute) bool { meta := rt.Metadata() allow := lis.AllowedRoutes @@ -609,3 +615,13 @@ func selectorsEqual(a, b labels.Selector) bool { } return true } + +func setDualstackLabel(rt gatewayRoute, endpoints []*endpoint.Endpoint) { + val, ok := rt.Metadata().Annotations[gatewayAPIDualstackAnnotationKey] + if ok && val == gatewayAPIDualstackAnnotationValue { + log.Debugf("Adding dualstack label to GatewayRoute %s/%s.", rt.Metadata().Namespace, rt.Metadata().Name) + for _, ep := range endpoints { + ep.Labels[endpoint.DualstackLabelKey] = "true" + } + } +} diff --git a/source/gateway_grpcroute.go b/source/gateway_grpcroute.go index a1091cbd8..de93a72de 100644 --- a/source/gateway_grpcroute.go +++ b/source/gateway_grpcroute.go @@ -20,19 +20,18 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" v1 "sigs.k8s.io/gateway-api/apis/v1" - "sigs.k8s.io/gateway-api/apis/v1alpha2" informers "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions" - informers_v1a2 "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions/apis/v1alpha2" + informers_v1 "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions/apis/v1" ) // NewGatewayGRPCRouteSource creates a new Gateway GRPCRoute source with the given config. func NewGatewayGRPCRouteSource(clients ClientGenerator, config *Config) (Source, error) { return newGatewayRouteSource(clients, config, "GRPCRoute", func(factory informers.SharedInformerFactory) gatewayRouteInformer { - return &gatewayGRPCRouteInformer{factory.Gateway().V1alpha2().GRPCRoutes()} + return &gatewayGRPCRouteInformer{factory.Gateway().V1().GRPCRoutes()} }) } -type gatewayGRPCRoute struct{ route v1alpha2.GRPCRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion. +type gatewayGRPCRoute struct{ route v1.GRPCRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion. func (rt *gatewayGRPCRoute) Object() kubeObject { return &rt.route } func (rt *gatewayGRPCRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta } @@ -41,7 +40,7 @@ func (rt *gatewayGRPCRoute) Protocol() v1.ProtocolType { return v1.HTTPSProto func (rt *gatewayGRPCRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus } type gatewayGRPCRouteInformer struct { - informers_v1a2.GRPCRouteInformer + informers_v1.GRPCRouteInformer } func (inf gatewayGRPCRouteInformer) List(namespace string, selector labels.Selector) ([]gatewayRoute, error) { @@ -55,7 +54,7 @@ func (inf gatewayGRPCRouteInformer) List(namespace string, selector labels.Selec // We make a shallow copy since we're only interested in setting the TypeMeta. clone := *rt clone.TypeMeta = metav1.TypeMeta{ - APIVersion: v1alpha2.GroupVersion.String(), + APIVersion: v1.GroupVersion.String(), Kind: "GRPCRoute", } routes[i] = &gatewayGRPCRoute{clone} diff --git a/source/gateway_grpcroute_test.go b/source/gateway_grpcroute_test.go index c3cd93c25..f92070eb4 100644 --- a/source/gateway_grpcroute_test.go +++ b/source/gateway_grpcroute_test.go @@ -26,7 +26,7 @@ import ( kubefake "k8s.io/client-go/kubernetes/fake" "sigs.k8s.io/external-dns/endpoint" v1 "sigs.k8s.io/gateway-api/apis/v1" - "sigs.k8s.io/gateway-api/apis/v1alpha2" + v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" gatewayfake "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned/fake" ) @@ -49,7 +49,7 @@ func TestGatewayGRPCRouteSourceEndpoints(t *testing.T) { require.NoError(t, err, "failed to create Namespace") ips := []string{"10.64.0.1", "10.64.0.2"} - gw := &v1.Gateway{ + gw := &v1beta1.Gateway{ ObjectMeta: metav1.ObjectMeta{ Name: "internal", Namespace: "default", @@ -61,10 +61,10 @@ func TestGatewayGRPCRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus(ips...), } - _, err = gwClient.GatewayV1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) + _, err = gwClient.GatewayV1beta1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) require.NoError(t, err, "failed to create Gateway") - rt := &v1alpha2.GRPCRoute{ + rt := &v1.GRPCRoute{ ObjectMeta: metav1.ObjectMeta{ Name: "api", Namespace: "default", @@ -79,7 +79,7 @@ func TestGatewayGRPCRouteSourceEndpoints(t *testing.T) { RouteStatus: gwRouteStatus(gwParentRef("default", "internal")), }, } - _, err = gwClient.GatewayV1alpha2().GRPCRoutes(rt.Namespace).Create(ctx, rt, metav1.CreateOptions{}) + _, err = gwClient.GatewayV1().GRPCRoutes(rt.Namespace).Create(ctx, rt, metav1.CreateOptions{}) require.NoError(t, err, "failed to create GRPCRoute") src, err := NewGatewayGRPCRouteSource(clients, &Config{ diff --git a/source/gateway_httproute.go b/source/gateway_httproute.go index 4e028c93f..4c063d4d7 100644 --- a/source/gateway_httproute.go +++ b/source/gateway_httproute.go @@ -20,14 +20,15 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" v1 "sigs.k8s.io/gateway-api/apis/v1" + v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" informers "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions" - informers_v1 "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions/apis/v1" + informers_v1beta1 "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions/apis/v1beta1" ) // NewGatewayHTTPRouteSource creates a new Gateway HTTPRoute source with the given config. func NewGatewayHTTPRouteSource(clients ClientGenerator, config *Config) (Source, error) { return newGatewayRouteSource(clients, config, "HTTPRoute", func(factory informers.SharedInformerFactory) gatewayRouteInformer { - return &gatewayHTTPRouteInformer{factory.Gateway().V1().HTTPRoutes()} + return &gatewayHTTPRouteInformer{factory.Gateway().V1beta1().HTTPRoutes()} }) } @@ -40,7 +41,7 @@ func (rt *gatewayHTTPRoute) Protocol() v1.ProtocolType { return v1.HTTPProtoc func (rt *gatewayHTTPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus } type gatewayHTTPRouteInformer struct { - informers_v1.HTTPRouteInformer + informers_v1beta1.HTTPRouteInformer } func (inf gatewayHTTPRouteInformer) List(namespace string, selector labels.Selector) ([]gatewayRoute, error) { @@ -54,10 +55,10 @@ func (inf gatewayHTTPRouteInformer) List(namespace string, selector labels.Selec // We make a shallow copy since we're only interested in setting the TypeMeta. clone := *rt clone.TypeMeta = metav1.TypeMeta{ - APIVersion: v1.GroupVersion.String(), + APIVersion: v1beta1.GroupVersion.String(), Kind: "HTTPRoute", } - routes[i] = &gatewayHTTPRoute{clone} + routes[i] = &gatewayHTTPRoute{v1.HTTPRoute(clone)} } return routes, nil } diff --git a/source/gateway_httproute_test.go b/source/gateway_httproute_test.go index 8f4e2b31f..62143c1d1 100644 --- a/source/gateway_httproute_test.go +++ b/source/gateway_httproute_test.go @@ -27,6 +27,7 @@ import ( kubefake "k8s.io/client-go/kubernetes/fake" "sigs.k8s.io/external-dns/endpoint" v1 "sigs.k8s.io/gateway-api/apis/v1" + v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" gatewayfake "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned/fake" ) @@ -135,8 +136,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title string config Config namespaces []*corev1.Namespace - gateways []*v1.Gateway - routes []*v1.HTTPRoute + gateways []*v1beta1.Gateway + routes []*v1beta1.HTTPRoute endpoints []*endpoint.Endpoint }{ { @@ -145,7 +146,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { GatewayNamespace: "gateway-namespace", }, namespaces: namespaces("gateway-namespace", "not-gateway-namespace", "route-namespace"), - gateways: []*v1.Gateway{ + gateways: []*v1beta1.Gateway{ { ObjectMeta: objectMeta("gateway-namespace", "test"), Spec: v1.GatewaySpec{ @@ -164,7 +165,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: gatewayStatus("2.3.4.5"), }, }, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("route-namespace", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("test.example.internal"), @@ -184,7 +185,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Namespace: "route-namespace", }, namespaces: namespaces("gateway-namespace", "route-namespace", "not-route-namespace"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("gateway-namespace", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{ @@ -194,7 +195,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{ + routes: []*v1beta1.HTTPRoute{ { ObjectMeta: objectMeta("route-namespace", "test"), Spec: v1.HTTPRouteSpec{ @@ -220,7 +221,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { GatewayLabelFilter: "foo=bar", }, namespaces: namespaces("default"), - gateways: []*v1.Gateway{ + gateways: []*v1beta1.Gateway{ { ObjectMeta: metav1.ObjectMeta{ Name: "labels-match", @@ -244,7 +245,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: gatewayStatus("2.3.4.5"), }, }, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("test.example.internal"), @@ -264,14 +265,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { LabelFilter: mustGetLabelSelector("foo=bar"), }, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{ + routes: []*v1beta1.HTTPRoute{ { ObjectMeta: metav1.ObjectMeta{ Name: "labels-match", @@ -305,14 +306,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { AnnotationFilter: "foo=bar", }, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{ + routes: []*v1beta1.HTTPRoute{ { ObjectMeta: metav1.ObjectMeta{ Name: "annotations-match", @@ -344,14 +345,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "SkipControllerAnnotation", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: metav1.ObjectMeta{ Name: "api", Namespace: "default", @@ -370,7 +371,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "MultipleGateways", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{ + gateways: []*v1beta1.Gateway{ { ObjectMeta: objectMeta("default", "one"), Spec: v1.GatewaySpec{ @@ -386,7 +387,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: gatewayStatus("2.3.4.5"), }, }, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("test.example.internal"), @@ -404,7 +405,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "MultipleListeners", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "one"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{ @@ -422,7 +423,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("*.example.internal"), @@ -440,7 +441,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "SectionNameMatch", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{ @@ -458,7 +459,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("*.example.internal"), @@ -476,7 +477,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "PortNumberMatch", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{ @@ -502,7 +503,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("*.example.internal"), @@ -520,7 +521,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "WildcardInGateway", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{ @@ -530,7 +531,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "no-hostname"), Spec: v1.HTTPRouteSpec{ Hostnames: []v1.Hostname{ @@ -547,7 +548,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "WildcardInRoute", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{ @@ -557,7 +558,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "no-hostname"), Spec: v1.HTTPRouteSpec{ Hostnames: []v1.Hostname{ @@ -574,7 +575,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "WildcardInRouteAndGateway", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{ @@ -584,7 +585,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "no-hostname"), Spec: v1.HTTPRouteSpec{ Hostnames: []v1.Hostname{ @@ -601,7 +602,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "NoRouteHostname", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{ @@ -611,7 +612,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "no-hostname"), Spec: v1.HTTPRouteSpec{ Hostnames: nil, @@ -627,7 +628,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { config: Config{}, namespaces: namespaces("default"), gateways: nil, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("example.internal"), @@ -640,14 +641,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "NoHostnames", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "no-hostname"), Spec: v1.HTTPRouteSpec{ Hostnames: nil, @@ -660,14 +661,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "HostnameAnnotation", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{ + routes: []*v1beta1.HTTPRoute{ { ObjectMeta: metav1.ObjectMeta{ Name: "without-hostame", @@ -707,14 +708,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { IgnoreHostnameAnnotation: true, }, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: metav1.ObjectMeta{ Name: "with-hostame", Namespace: "default", @@ -737,14 +738,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { FQDNTemplate: "{{.Name}}.zero.internal, {{.Name}}.one.internal. , {{.Name}}.two.internal ", }, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{ + routes: []*v1beta1.HTTPRoute{ { ObjectMeta: objectMeta("default", "fqdn-with-hostnames"), Spec: v1.HTTPRouteSpec{ @@ -774,14 +775,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { CombineFQDNAndAnnotation: true, }, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "fqdn-with-hostnames"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("fqdn-with-hostnames.internal"), @@ -797,14 +798,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "TTL", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{ + routes: []*v1beta1.HTTPRoute{ { ObjectMeta: metav1.ObjectMeta{ Name: "valid-ttl", @@ -837,14 +838,14 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "ProviderAnnotations", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{Protocol: v1.HTTPProtocolType}}, }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: metav1.ObjectMeta{ Name: "provider-annotations", Namespace: "default", @@ -868,7 +869,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "DifferentHostnameDifferentGateway", config: Config{}, namespaces: namespaces("default"), - gateways: []*v1.Gateway{ + gateways: []*v1beta1.Gateway{ { ObjectMeta: objectMeta("default", "one"), Spec: v1.GatewaySpec{ @@ -890,7 +891,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: gatewayStatus("2.3.4.5"), }, }, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("test.one.internal", "test.two.internal"), @@ -909,7 +910,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "AllowedRoutesSameNamespace", config: Config{}, namespaces: namespaces("same-namespace", "other-namespace"), - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("same-namespace", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{ @@ -923,7 +924,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{ + routes: []*v1beta1.HTTPRoute{ { ObjectMeta: objectMeta("same-namespace", "test"), Spec: v1.HTTPRouteSpec{ @@ -965,7 +966,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, }, - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{ @@ -982,7 +983,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{ + routes: []*v1beta1.HTTPRoute{ { ObjectMeta: objectMeta("foo", "test"), Spec: v1.HTTPRouteSpec{ @@ -1006,7 +1007,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { title: "MissingNamespace", config: Config{}, namespaces: nil, - gateways: []*v1.Gateway{{ + gateways: []*v1beta1.Gateway{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.GatewaySpec{ Listeners: []v1.Listener{{ @@ -1024,7 +1025,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus("1.2.3.4"), }}, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("default", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("example.internal"), @@ -1039,7 +1040,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { GatewayNamespace: "gateway-namespace", }, namespaces: namespaces("gateway-namespace", "route-namespace"), - gateways: []*v1.Gateway{ + gateways: []*v1beta1.Gateway{ { ObjectMeta: metav1.ObjectMeta{ Name: "overriden-gateway", @@ -1057,7 +1058,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: gatewayStatus("1.2.3.4"), }, }, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("route-namespace", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("test.example.internal"), @@ -1076,7 +1077,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { GatewayNamespace: "gateway-namespace", }, namespaces: namespaces("gateway-namespace", "route-namespace"), - gateways: []*v1.Gateway{ + gateways: []*v1beta1.Gateway{ { ObjectMeta: metav1.ObjectMeta{ Name: "overriden-gateway", @@ -1104,7 +1105,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: gatewayStatus("2.3.4.5"), }, }, - routes: []*v1.HTTPRoute{{ + routes: []*v1beta1.HTTPRoute{{ ObjectMeta: objectMeta("route-namespace", "test"), Spec: v1.HTTPRouteSpec{ Hostnames: hostnames("test.example.internal"), @@ -1127,12 +1128,12 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ctx := context.Background() gwClient := gatewayfake.NewSimpleClientset() for _, gw := range tt.gateways { - _, err := gwClient.GatewayV1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) + _, err := gwClient.GatewayV1beta1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) require.NoError(t, err, "failed to create Gateway") } for _, rt := range tt.routes { - _, err := gwClient.GatewayV1().HTTPRoutes(rt.Namespace).Create(ctx, rt, metav1.CreateOptions{}) + _, err := gwClient.GatewayV1beta1().HTTPRoutes(rt.Namespace).Create(ctx, rt, metav1.CreateOptions{}) require.NoError(t, err, "failed to create HTTPRoute") } kubeClient := kubefake.NewSimpleClientset() diff --git a/source/gateway_tcproute_test.go b/source/gateway_tcproute_test.go index 52e36034b..a6039ebf1 100644 --- a/source/gateway_tcproute_test.go +++ b/source/gateway_tcproute_test.go @@ -27,6 +27,7 @@ import ( "sigs.k8s.io/external-dns/endpoint" v1 "sigs.k8s.io/gateway-api/apis/v1" "sigs.k8s.io/gateway-api/apis/v1alpha2" + v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" gatewayfake "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned/fake" ) @@ -49,7 +50,7 @@ func TestGatewayTCPRouteSourceEndpoints(t *testing.T) { require.NoError(t, err, "failed to create Namespace") ips := []string{"10.64.0.1", "10.64.0.2"} - gw := &v1.Gateway{ + gw := &v1beta1.Gateway{ ObjectMeta: metav1.ObjectMeta{ Name: "internal", Namespace: "default", @@ -61,7 +62,7 @@ func TestGatewayTCPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus(ips...), } - _, err = gwClient.GatewayV1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) + _, err = gwClient.GatewayV1beta1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) require.NoError(t, err, "failed to create Gateway") rt := &v1alpha2.TCPRoute{ diff --git a/source/gateway_test.go b/source/gateway_test.go index 940622e95..19d603a24 100644 --- a/source/gateway_test.go +++ b/source/gateway_test.go @@ -20,6 +20,7 @@ import ( "strings" "testing" + "sigs.k8s.io/external-dns/endpoint" v1 "sigs.k8s.io/gateway-api/apis/v1" ) @@ -245,3 +246,47 @@ func TestIsDNS1123Domain(t *testing.T) { }) } } + +func TestDualStackLabel(t *testing.T) { + tests := []struct { + desc string + in map[string](string) + setsLabel bool + }{ + { + desc: "empty-annotation", + setsLabel: false, + }, + { + desc: "correct-annotation-key-and-value", + in: map[string]string{gatewayAPIDualstackAnnotationKey: gatewayAPIDualstackAnnotationValue}, + setsLabel: true, + }, + { + desc: "correct-annotation-key-incorrect-value", + in: map[string]string{gatewayAPIDualstackAnnotationKey: "foo"}, + setsLabel: false, + }, + { + desc: "incorrect-annotation-key-correct-value", + in: map[string]string{"FOO": gatewayAPIDualstackAnnotationValue}, + setsLabel: false, + }, + } + for _, tt := range tests { + t.Run(tt.desc, func(t *testing.T) { + endpoints := make([]*endpoint.Endpoint, 0) + endpoints = append(endpoints, endpoint.NewEndpoint("www.example.com", endpoint.RecordTypeA, "10.0.0.2", "10.0.0.3")) + + rt := &gatewayHTTPRoute{} + rt.Metadata().Annotations = tt.in + + setDualstackLabel(rt, endpoints) + got := endpoints[0].Labels[endpoint.DualstackLabelKey] == "true" + + if got != tt.setsLabel { + t.Errorf("setDualstackLabel(%q); got: %v; want: %v", tt.in, got, tt.setsLabel) + } + }) + } +} diff --git a/source/gateway_tlsroute_test.go b/source/gateway_tlsroute_test.go index 914c9c6a3..e6d4660e5 100644 --- a/source/gateway_tlsroute_test.go +++ b/source/gateway_tlsroute_test.go @@ -27,6 +27,7 @@ import ( "sigs.k8s.io/external-dns/endpoint" v1 "sigs.k8s.io/gateway-api/apis/v1" "sigs.k8s.io/gateway-api/apis/v1alpha2" + v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" gatewayfake "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned/fake" ) @@ -49,7 +50,7 @@ func TestGatewayTLSRouteSourceEndpoints(t *testing.T) { require.NoError(t, err, "failed to create Namespace") ips := []string{"10.64.0.1", "10.64.0.2"} - gw := &v1.Gateway{ + gw := &v1beta1.Gateway{ ObjectMeta: metav1.ObjectMeta{ Name: "internal", Namespace: "default", @@ -61,7 +62,7 @@ func TestGatewayTLSRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus(ips...), } - _, err = gwClient.GatewayV1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) + _, err = gwClient.GatewayV1beta1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) require.NoError(t, err, "failed to create Gateway") rt := &v1alpha2.TLSRoute{ diff --git a/source/gateway_udproute_test.go b/source/gateway_udproute_test.go index 410832da3..570e3d10c 100644 --- a/source/gateway_udproute_test.go +++ b/source/gateway_udproute_test.go @@ -27,6 +27,7 @@ import ( "sigs.k8s.io/external-dns/endpoint" v1 "sigs.k8s.io/gateway-api/apis/v1" "sigs.k8s.io/gateway-api/apis/v1alpha2" + v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" gatewayfake "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned/fake" ) @@ -49,7 +50,7 @@ func TestGatewayUDPRouteSourceEndpoints(t *testing.T) { require.NoError(t, err, "failed to create Namespace") ips := []string{"10.64.0.1", "10.64.0.2"} - gw := &v1.Gateway{ + gw := &v1beta1.Gateway{ ObjectMeta: metav1.ObjectMeta{ Name: "internal", Namespace: "default", @@ -61,7 +62,7 @@ func TestGatewayUDPRouteSourceEndpoints(t *testing.T) { }, Status: gatewayStatus(ips...), } - _, err = gwClient.GatewayV1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) + _, err = gwClient.GatewayV1beta1().Gateways(gw.Namespace).Create(ctx, gw, metav1.CreateOptions{}) require.NoError(t, err, "failed to create Gateway") rt := &v1alpha2.UDPRoute{ diff --git a/source/nat64source.go b/source/nat64source.go new file mode 100644 index 000000000..dec879bd2 --- /dev/null +++ b/source/nat64source.go @@ -0,0 +1,112 @@ +/* +Copyright 2024 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package source + +import ( + "context" + "fmt" + "net/netip" + + "sigs.k8s.io/external-dns/endpoint" +) + +// nat64Source is a Source that adds A endpoints for AAAA records including an NAT64 address. +type nat64Source struct { + source Source + nat64Prefixes []string +} + +// NewNAT64Source creates a new nat64Source wrapping the provided Source. +func NewNAT64Source(source Source, nat64Prefixes []string) Source { + return &nat64Source{source: source, nat64Prefixes: nat64Prefixes} +} + +// Endpoints collects endpoints from its wrapped source and returns them without duplicates. +func (s *nat64Source) Endpoints(ctx context.Context) ([]*endpoint.Endpoint, error) { + parsedNAT64Prefixes := make([]netip.Prefix, 0) + for _, prefix := range s.nat64Prefixes { + pPrefix, err := netip.ParsePrefix(prefix) + if err != nil { + return nil, err + } + + if pPrefix.Bits() != 96 { + return nil, fmt.Errorf("NAT64 prefixes need to be /96 prefixes.") + } + parsedNAT64Prefixes = append(parsedNAT64Prefixes, pPrefix) + } + + additionalEndpoints := []*endpoint.Endpoint{} + + endpoints, err := s.source.Endpoints(ctx) + if err != nil { + return nil, err + } + + for _, ep := range endpoints { + if ep.RecordType != endpoint.RecordTypeAAAA { + continue + } + + v4Targets := make([]string, 0) + + for _, target := range ep.Targets { + ip, err := netip.ParseAddr(target) + if err != nil { + return nil, err + } + + var sPrefix *netip.Prefix + + for _, cPrefix := range parsedNAT64Prefixes { + if cPrefix.Contains(ip) { + sPrefix = &cPrefix + } + } + + // If we do not have a NAT64 prefix, we skip this record. + if sPrefix == nil { + continue + } + + ipBytes := ip.As16() + v4AddrBytes := ipBytes[12:16] + + v4Addr, isOk := netip.AddrFromSlice(v4AddrBytes) + if !isOk { + return nil, fmt.Errorf("Could not parse %v to IPv4 address", v4AddrBytes) + } + + v4Targets = append(v4Targets, v4Addr.String()) + } + + if len(v4Targets) == 0 { + continue + } + + v4EP := ep.DeepCopy() + v4EP.Targets = v4Targets + v4EP.RecordType = endpoint.RecordTypeA + + additionalEndpoints = append(additionalEndpoints, v4EP) + } + return append(endpoints, additionalEndpoints...), nil +} + +func (s *nat64Source) AddEventHandler(ctx context.Context, handler func()) { + s.source.AddEventHandler(ctx, handler) +} diff --git a/source/nat64source_test.go b/source/nat64source_test.go new file mode 100644 index 000000000..d7a6a0a33 --- /dev/null +++ b/source/nat64source_test.go @@ -0,0 +1,90 @@ +/* +Copyright 2024 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package source + +import ( + "context" + "testing" + + "sigs.k8s.io/external-dns/endpoint" + "sigs.k8s.io/external-dns/internal/testutils" +) + +// Validates that dedupSource is a Source +var _ Source = &nat64Source{} + +func TestNAT64Source(t *testing.T) { + t.Run("Endpoints", testNat64Source) +} + +// testDedupEndpoints tests that duplicates from the wrapped source are removed. +func testNat64Source(t *testing.T) { + for _, tc := range []struct { + title string + endpoints []*endpoint.Endpoint + expected []*endpoint.Endpoint + }{ + { + "single non-nat64 ipv6 endpoint returns one ipv6 endpoint", + []*endpoint.Endpoint{ + {DNSName: "foo.example.org", RecordType: endpoint.RecordTypeAAAA, Targets: endpoint.Targets{"2001:db8:1::1"}}, + }, + []*endpoint.Endpoint{ + {DNSName: "foo.example.org", RecordType: endpoint.RecordTypeAAAA, Targets: endpoint.Targets{"2001:db8:1::1"}}, + }, + }, + { + "single nat64 ipv6 endpoint returns one ipv4 endpoint and one ipv6 endpoint", + []*endpoint.Endpoint{ + {DNSName: "foo.example.org", RecordType: endpoint.RecordTypeAAAA, Targets: endpoint.Targets{"2001:db8::192.0.2.42"}}, + }, + []*endpoint.Endpoint{ + {DNSName: "foo.example.org", RecordType: endpoint.RecordTypeAAAA, Targets: endpoint.Targets{"2001:db8::192.0.2.42"}}, + {DNSName: "foo.example.org", RecordType: endpoint.RecordTypeA, Targets: endpoint.Targets{"192.0.2.42"}}, + }, + }, + { + "single nat64 ipv6 endpoint returns one ipv4 endpoint and one ipv6 endpoint", + []*endpoint.Endpoint{ + {DNSName: "foo.example.org", RecordType: endpoint.RecordTypeAAAA, Targets: endpoint.Targets{"2001:db8::c000:22a"}}, + }, + []*endpoint.Endpoint{ + {DNSName: "foo.example.org", RecordType: endpoint.RecordTypeAAAA, Targets: endpoint.Targets{"2001:db8::c000:22a"}}, + {DNSName: "foo.example.org", RecordType: endpoint.RecordTypeA, Targets: endpoint.Targets{"192.0.2.42"}}, + }, + }, + } { + t.Run(tc.title, func(t *testing.T) { + mockSource := new(testutils.MockSource) + mockSource.On("Endpoints").Return(tc.endpoints, nil) + + // Create our object under test and get the endpoints. + source := NewNAT64Source(mockSource, []string{"2001:DB8::/96"}) + + endpoints, err := source.Endpoints(context.Background()) + if err != nil { + t.Fatal(err) + } + + // Validate returned endpoints against desired endpoints. + validateEndpoints(t, endpoints, tc.expected) + + // Validate that the mock source was called. + mockSource.AssertExpectations(t) + }) + } +} diff --git a/source/store.go b/source/store.go index cdb993b6b..f67091d31 100644 --- a/source/store.go +++ b/source/store.go @@ -276,7 +276,7 @@ func BuildWithConfig(ctx context.Context, source string, p ClientGenerator, cfg if err != nil { return nil, err } - return NewAmbassadorHostSource(ctx, dynamicClient, kubernetesClient, cfg.Namespace) + return NewAmbassadorHostSource(ctx, dynamicClient, kubernetesClient, cfg.Namespace, cfg.AnnotationFilter, cfg.LabelFilter) case "contour-httpproxy": dynamicClient, err := p.DynamicKubernetesClient() if err != nil {