From 825227787c0bad61b301de478b2c8bf6a56ee5c8 Mon Sep 17 00:00:00 2001 From: Marques Johansson Date: Fri, 26 Aug 2022 11:47:58 -0400 Subject: [PATCH 1/8] update .github for provider-jet-equinix matching provider-jet-template@d938ff2 Signed-off-by: Marques Johansson --- .github/ISSUE_TEMPLATE/bug_report.md | 9 +++++---- .github/ISSUE_TEMPLATE/feature_request.md | 8 ++++---- .github/ISSUE_TEMPLATE/new_resource_request.md | 8 ++++++++ .github/workflows/ci.yml | 14 +++++++------- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index a7b73b8..23babe1 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,10 +1,10 @@ --- name: Bug Report -about: Help us diagnose and fix bugs in Crossplane +about: Help us diagnose and fix bugs in Equinix Provider. labels: bug --- @@ -27,9 +27,10 @@ appreciated! ### What environment did it happen in? Crossplane version: +Provider version: -### How could Crossplane help solve your problem? +### How could Equinix Provider help solve your problem? diff --git a/.github/ISSUE_TEMPLATE/new_resource_request.md b/.github/ISSUE_TEMPLATE/new_resource_request.md index 53461fa..3fa43c3 100644 --- a/.github/ISSUE_TEMPLATE/new_resource_request.md +++ b/.github/ISSUE_TEMPLATE/new_resource_request.md @@ -22,3 +22,11 @@ Please let us know the name of the resource you need. Help us for prioritization of the resource support by giving more details about why you need it. --> + +### Would you be willing to contribute it using [Terrajet](https://github.com/crossplane/terrajet)? + + \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07d9ed9..eb1507d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ on: env: # Common versions GO_VERSION: '1.17' - GOLANGCI_VERSION: 'v1.39' + GOLANGCI_VERSION: 'v1.31' DOCKER_BUILDX_VERSION: 'v0.4.2' # Common users. We can't run a step 'if secrets.AWS_USR != ""' but we can run @@ -48,7 +48,7 @@ jobs: - name: Find the Go Build Cache id: go - run: echo "::set-output name=cache::$(go env GOCACHE)" + run: echo "::set-output name=cache::$(make go.cachedir)" - name: Cache the Go Build Cache uses: actions/cache@v2 @@ -78,7 +78,7 @@ jobs: # prefer this action because it leaves 'annotations' (i.e. it comments # on PRs to point out linter violations). - name: Lint - uses: golangci/golangci-lint-action@v2 + uses: golangci/golangci-lint-action@v3 with: version: ${{ env.GOLANGCI_VERSION }} skip-go-installation: true @@ -105,7 +105,7 @@ jobs: - name: Find the Go Build Cache id: go - run: echo "::set-output name=cache::$(go env GOCACHE)" + run: echo "::set-output name=cache::$(make go.cachedir)" - name: Cache the Go Build Cache uses: actions/cache@v2 @@ -148,7 +148,7 @@ jobs: - name: Find the Go Build Cache id: go - run: echo "::set-output name=cache::$(go env GOCACHE)" + run: echo "::set-output name=cache::$(make go.cachedir)" - name: Cache the Go Build Cache uses: actions/cache@v2 @@ -208,7 +208,7 @@ jobs: - name: Find the Go Build Cache id: go - run: echo "::set-output name=cache::$(go env GOCACHE)" + run: echo "::set-output name=cache::$(make go.cachedir)" - name: Cache the Go Build Cache uses: actions/cache@v2 @@ -270,7 +270,7 @@ jobs: - name: Find the Go Build Cache id: go - run: echo "::set-output name=cache::$(go env GOCACHE)" + run: echo "::set-output name=cache::$(make go.cachedir)" - name: Cache the Go Build Cache uses: actions/cache@v2 From 09aa5c1ce6717b02aded8ed0843fcdea502627f4 Mon Sep 17 00:00:00 2001 From: Marques Johansson Date: Fri, 26 Aug 2022 11:49:15 -0400 Subject: [PATCH 2/8] update build to upbound/build@e018ec6 matching provider-jet-template@d938ff2 Signed-off-by: Marques Johansson --- build/.gitignore | 3 + build/cross/Dockerfile | 4 +- build/makelib/common.mk | 3 +- build/makelib/docs.mk | 10 ++- build/makelib/golang.mk | 3 +- build/makelib/image.mk | 14 ++-- build/makelib/imagelight.mk | 126 ++++++++++++++++++++++++++++++++++++ build/makelib/k8s_tools.mk | 25 +++++-- 8 files changed, 171 insertions(+), 17 deletions(-) create mode 100644 build/.gitignore create mode 100644 build/makelib/imagelight.mk diff --git a/build/.gitignore b/build/.gitignore new file mode 100644 index 0000000..f53d9c2 --- /dev/null +++ b/build/.gitignore @@ -0,0 +1,3 @@ +# ignore vscode files (debug config etc...) +/.vscode +/.idea \ No newline at end of file diff --git a/build/cross/Dockerfile b/build/cross/Dockerfile index 60d49e5..1226037 100644 --- a/build/cross/Dockerfile +++ b/build/cross/Dockerfile @@ -45,8 +45,8 @@ RUN curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.1.21.zip" # ------------------------------------------------------------------------------------------------ # Go support -RUN GO_VERSION=1.16.1 && \ - GO_HASH=3edc22f8332231c3ba8be246f184b736b8d28f06ce24f08168d8ecf052549769 && \ +RUN GO_VERSION=1.17.5 && \ + GO_HASH=bd78114b0d441b029c8fe0341f4910370925a4d270a6a590668840675b0c653e && \ curl -fsSL https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz -o golang.tar.gz && \ echo "${GO_HASH} golang.tar.gz" | sha256sum -c - && \ tar -C /usr/local -xzf golang.tar.gz && \ diff --git a/build/makelib/common.mk b/build/makelib/common.mk index 189c897..800bacc 100644 --- a/build/makelib/common.mk +++ b/build/makelib/common.mk @@ -428,8 +428,7 @@ reviewable: # ensure generate target doesn't create a diff check-diff: generate @$(INFO) checking that branch is clean - @test -z "$(shell git status --porcelain)" || $(FAIL) - @$(OK) branch is clean + @if git status --porcelain | grep . ; then $(FAIL); else $(OK) branch is clean; fi .PHONY: publish.init publish.artifacts publish promote.init promote.artifacts promote tag generate reviewable check-diff diff --git a/build/makelib/docs.mk b/build/makelib/docs.mk index 287e057..5b1e349 100644 --- a/build/makelib/docs.mk +++ b/build/makelib/docs.mk @@ -27,6 +27,10 @@ ifndef DOCS_GIT_REPO $(error DOCS_GIT_REPO must be defined) endif +# Optional. If false the publish step will remove this version from the +# documentation repository. +DOCS_VERSION_ACTIVE ?= true + DOCS_VERSION := $(shell echo "$(BRANCH_NAME)" | sed -E "s/^release\-([0-9]+)\.([0-9]+)$$/v\1.\2/g") DOCS_WORK_DIR := $(WORK_DIR)/docs-repo DOCS_VERSION_DIR := $(DOCS_WORK_DIR)/$(DEST_DOCS_DIR)/$(DOCS_VERSION) @@ -39,7 +43,11 @@ docs.publish: mkdir -p $(DOCS_WORK_DIR) git clone --depth=1 -b master $(DOCS_GIT_REPO) $(DOCS_WORK_DIR) rm -rf $(DOCS_VERSION_DIR) - cp -r $(SOURCE_DOCS_DIR)/ $(DOCS_VERSION_DIR) + @if [ "$(DOCS_VERSION_ACTIVE)" == "true" ]; then \ + $(INFO) Including version in documentation ; \ + cp -r $(SOURCE_DOCS_DIR)/ $(DOCS_VERSION_DIR); \ + $(OK) Version included in documentation ; \ + fi cd $(DOCS_WORK_DIR) && DOCS_VERSION=$(DOCS_VERSION) $(MAKE) publish # ==================================================================================== diff --git a/build/makelib/golang.mk b/build/makelib/golang.mk index d8ebaa0..86903f0 100644 --- a/build/makelib/golang.mk +++ b/build/makelib/golang.mk @@ -113,7 +113,7 @@ endif ifeq ($(RUNNING_IN_CI),true) # Output checkstyle XML rather than human readable output. # the timeout is increased to 10m, to accommodate CI machines with low resources. -GO_LINT_ARGS := --timeout 10m0s --out-format=checkstyle > $(GO_LINT_OUTPUT)/checkstyle.xml +GO_LINT_ARGS += --timeout 10m0s --out-format=checkstyle > $(GO_LINT_OUTPUT)/checkstyle.xml endif # NOTE: the install suffixes are matched with the build container to speed up the @@ -281,7 +281,6 @@ go.generate: # Common Targets build.init: go.init -build.check: go.lint build.code.platform: go.build clean: go.clean distclean: go.distclean diff --git a/build/makelib/image.mk b/build/makelib/image.mk index 5b9eec4..19983c2 100644 --- a/build/makelib/image.mk +++ b/build/makelib/image.mk @@ -12,6 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. + +# DEPRECATED: this module has been replaced by imagelight.mk and may be removed +# in the future. + # ==================================================================================== # Options @@ -31,12 +35,12 @@ endif # supported platform. ifeq ($(origin OSBASEIMAGE),undefined) OSBASE ?= alpine:3.13 -ifeq ($(TARGETARCH),$(filter $(TARGETARCH),amd64 ppc64le)) +ifeq ($(ARCH),$(filter $(ARCH),amd64 ppc64le)) OSBASEIMAGE = $(OSBASE) -else ifeq ($(TARGETARCH),arm64) +else ifeq ($(ARCH),arm64) OSBASEIMAGE = arm64v8/$(OSBASE) else -$(error unsupported architecture $(TARGETARCH)) +$(error unsupported architecture $(ARCH)) endif endif @@ -48,7 +52,7 @@ ifeq ($(origin BUILD_REGISTRY), undefined) BUILD_REGISTRY := build-$(shell echo $(HOSTNAME)-$(ROOT_DIR) | shasum -a 256 | cut -c1-8) endif -MANIFEST_TOOL_VERSION=v0.7.0 +MANIFEST_TOOL_VERSION=v1.0.3 MANIFEST_TOOL := $(TOOLS_HOST_DIR)/manifest-tool-$(MANIFEST_TOOL_VERSION) # In order to reduce built time especially on jenkins, we maintain a cache @@ -259,6 +263,8 @@ endif prune: img.prune define IMAGE_HELPTEXT +DEPRECATED: this module has been replaced by imagelight.mk and may be removed in the future. + Image Targets: prune Prune orphaned and cached images. diff --git a/build/makelib/imagelight.mk b/build/makelib/imagelight.mk new file mode 100644 index 0000000..04c5af9 --- /dev/null +++ b/build/makelib/imagelight.mk @@ -0,0 +1,126 @@ +# Copyright 2021 The Upbound Authors. All rights reserved. +# +# 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. + +# ==================================================================================== +# Options + +ifeq ($(origin IMAGE_DIR),undefined) +IMAGE_DIR := $(ROOT_DIR)/cluster/images +endif + +ifeq ($(origin IMAGE_OUTPUT_DIR),undefined) +IMAGE_OUTPUT_DIR := $(OUTPUT_DIR)/images/$(PLATFORM) +endif + +ifeq ($(origin IMAGE_TEMP_DIR),undefined) +IMAGE_TEMP_DIR := $(shell mktemp -d) +endif + +# we don't support darwin os images and instead strictly target linux +PLATFORM := $(subst darwin,linux,$(PLATFORM)) + +# a registry that is scoped to the current build tree on this host. this enables +# us to have isolation between concurrent builds on the same system, as in the case +# of multiple working directories or on a CI system with multiple executors. All images +# tagged with this build registry can safely be untagged/removed at the end of the build. +ifeq ($(origin BUILD_REGISTRY), undefined) +BUILD_REGISTRY := build-$(shell echo $(HOSTNAME)-$(ROOT_DIR) | shasum -a 256 | cut -c1-8) +endif + +REGISTRY_ORGS ?= docker.io +IMAGE_ARCHS := $(subst linux_,,$(filter linux_%,$(PLATFORMS))) +IMAGE_PLATFORMS := $(subst _,/,$(subst $(SPACE),$(COMMA),$(filter linux_%,$(PLATFORMS)))) +IMAGE_PLATFORMS_LIST := $(subst _,/,$(filter linux_%,$(PLATFORMS))) +IMAGE_PLATFORM := $(subst _,/,$(PLATFORM)) + +# if set to 1 docker image caching will not be used. +CACHEBUST ?= 0 +ifeq ($(CACHEBUST),1) +BUILD_ARGS += --no-cache +endif + +ifeq ($(HOSTOS),Linux) +SELF_CID := $(shell cat /proc/self/cgroup | grep docker | grep -o -E '[0-9a-f]{64}' | head -n 1) +endif + +# ===================================================================================== +# Image Targets + +do.img.clean: + @for i in $(CLEAN_IMAGES); do \ + if [ -n "$$(docker images -q $$i)" ]; then \ + for c in $$(docker ps -a -q --no-trunc --filter=ancestor=$$i); do \ + if [ "$$c" != "$(SELF_CID)" ]; then \ + echo stopping and removing container $${c} referencing image $$i; \ + docker stop $${c}; \ + docker rm $${c}; \ + fi; \ + done; \ + echo cleaning image $$i; \ + docker rmi $$i > /dev/null 2>&1 || true; \ + fi; \ + done + +# this will clean everything for this build +img.clean: + @$(INFO) cleaning images for $(BUILD_REGISTRY) + @$(MAKE) do.img.clean CLEAN_IMAGES="$(shell docker images | grep -E '^$(BUILD_REGISTRY)/' | awk '{print $$1":"$$2}')" + @$(OK) cleaning images for $(BUILD_REGISTRY) + +img.done: + @rm -fr $(IMAGE_TEMP_DIR) + +# 1: registry 2: image +define repo.targets +img.release.publish.$(1).$(2): + @$(MAKE) -C $(IMAGE_DIR)/$(2) IMAGE_PLATFORMS=$(IMAGE_PLATFORMS) IMAGE=$(1)/$(2):$(VERSION) img.publish +img.release.publish: img.release.publish.$(1).$(2) + +img.release.promote.$(1).$(2): + @$(MAKE) -C $(IMAGE_DIR)/$(2) TO_IMAGE=$(1)/$(2):$(CHANNEL) FROM_IMAGE=$(1)/$(2):$(VERSION) img.promote + @[ "$(CHANNEL)" = "master" ] || $(MAKE) -C $(IMAGE_DIR)/$(2) TO_IMAGE=$(1)/$(2):$(VERSION)-$(CHANNEL) FROM_IMAGE=$(1)/$(2):$(VERSION) img.promote +img.release.promote: img.release.promote.$(1).$(2) + +img.release.clean.$(1).$(2): + @[ -z "$$$$(docker images -q $(1)/$(2):$(VERSION))" ] || docker rmi $(1)/$(2):$(VERSION) + @[ -z "$$$$(docker images -q $(1)/$(2):$(VERSION)-$(CHANNEL))" ] || docker rmi $(1)/$(2):$(VERSION)-$(CHANNEL) + @[ -z "$$$$(docker images -q $(1)/$(2):$(CHANNEL))" ] || docker rmi $(1)/$(2):$(CHANNEL) +img.release.clean: img.release.clean.$(1).$(2) +endef +$(foreach r,$(REGISTRY_ORGS), $(foreach i,$(IMAGES),$(eval $(call repo.targets,$(r),$(i))))) + +# ==================================================================================== +# Common Targets + +do.build.image.%: + @$(MAKE) -C $(IMAGE_DIR)/$* IMAGE_PLATFORMS=$(IMAGE_PLATFORM) IMAGE=$(BUILD_REGISTRY)/$*-$(ARCH) img.build +do.build.images: $(foreach i,$(IMAGES), do.build.image.$(i)) +do.skip.images: + @$(OK) Skipping image build for unsupported platform $(IMAGE_PLATFORM) + +ifneq ($(filter $(IMAGE_PLATFORM),$(IMAGE_PLATFORMS_LIST)),) +build.artifacts.platform: do.build.images +else +build.artifacts.platform: do.skip.images +endif +build.done: img.done +clean: img.clean img.release.clean + +# only publish images for main / master and release branches +# TODO(hasheddan): remove master and support overriding +ifneq ($(filter main master release-%,$(BRANCH_NAME)),) +publish.artifacts: $(foreach r,$(REGISTRY_ORGS), $(foreach i,$(IMAGES),img.release.publish.$(r).$(i))) +endif + +promote.artifacts: $(foreach r,$(REGISTRY_ORGS), $(foreach i,$(IMAGES),img.release.promote.$(r).$(i))) diff --git a/build/makelib/k8s_tools.mk b/build/makelib/k8s_tools.mk index ec03069..4dda4db 100644 --- a/build/makelib/k8s_tools.mk +++ b/build/makelib/k8s_tools.mk @@ -29,7 +29,7 @@ KIND_VERSION ?= v0.11.1 KIND := $(TOOLS_HOST_DIR)/kind-$(KIND_VERSION) # the version of kubectl to use -KUBECTL_VERSION ?= v1.17.11 +KUBECTL_VERSION ?= v1.22.2 KUBECTL := $(TOOLS_HOST_DIR)/kubectl-$(KUBECTL_VERSION) # the version of kustomize to use @@ -40,9 +40,13 @@ KUSTOMIZE := $(TOOLS_HOST_DIR)/kustomize-$(KUSTOMIZE_VERSION) OLMBUNDLE_VERSION ?= v0.4.0 OLMBUNDLE := $(TOOLS_HOST_DIR)/olm-bundle-$(OLMBUNDLE_VERSION) +# the version of up to use +UP_VERSION ?= v0.10.0 +UP := $(TOOLS_HOST_DIR)/up-$(UP_VERSION) + # the version of helm 3 to use USE_HELM3 ?= false -HELM3_VERSION ?= v3.5.3 +HELM3_VERSION ?= v3.7.1 HELM3 := $(TOOLS_HOST_DIR)/helm-$(HELM3_VERSION) # If we enable HELM3 we alias HELM to be HELM3 @@ -50,7 +54,7 @@ ifeq ($(USE_HELM3),true) HELM_VERSION ?= $(HELM3_VERSION) HELM := $(HELM3) else -HELM_VERSION ?= v2.16.7 +HELM_VERSION ?= v2.17.0 HELM := $(TOOLS_HOST_DIR)/helm-$(HELM_VERSION) endif @@ -61,6 +65,8 @@ k8s_tools.buildvars: @echo KIND=$(KIND) @echo KUBECTL=$(KUBECTL) @echo KUSTOMIZE=$(KUSTOMIZE) + @echo OLM_BUNDLE=$(OLM_BUNDLE) + @echo UP=$(UP) @echo HELM=$(HELM) @echo HELM3=$(HELM3) @@ -89,7 +95,7 @@ $(KIND): # kubectl download and install $(KUBECTL): @$(INFO) installing kubectl $(KUBECTL_VERSION) - @curl -fsSLo $(KUBECTL) https://storage.googleapis.com/kubernetes-release/release/$(KUBECTL_VERSION)/bin/$(HOSTOS)/$(SAFEHOSTARCH)/kubectl || $(FAIL) + @curl -fsSLo $(KUBECTL) --create-dirs https://storage.googleapis.com/kubernetes-release/release/$(KUBECTL_VERSION)/bin/$(HOSTOS)/$(SAFEHOSTARCH)/kubectl || $(FAIL) @chmod +x $(KUBECTL) @$(OK) installing kubectl $(KUBECTL_VERSION) @@ -109,12 +115,19 @@ $(OLMBUNDLE): @chmod +x $(OLMBUNDLE) @$(OK) installing olm-bundle $(OLMBUNDLE_VERSION) +# up download and install +$(UP): + @$(INFO) installing up $(UP_VERSION) + @curl -fsSLo $(UP) --create-dirs https://cli.upbound.io/stable/$(UP_VERSION)/bin/$(SAFEHOST_PLATFORM)/up?source=build || $(FAIL) + @chmod +x $(UP) + @$(OK) installing up $(UP_VERSION) + # helm download and install only if helm3 not enabled ifeq ($(USE_HELM3),false) $(HELM): @$(INFO) installing helm $(HELM_VERSION) @mkdir -p $(TOOLS_HOST_DIR)/tmp-helm - @curl -fsSL https://storage.googleapis.com/kubernetes-helm/helm-$(HELM_VERSION)-$(SAFEHOSTPLATFORM).tar.gz | tar -xz -C $(TOOLS_HOST_DIR)/tmp-helm + @curl -fsSL https://get.helm.sh/helm-$(HELM_VERSION)-$(SAFEHOSTPLATFORM).tar.gz | tar -xz -C $(TOOLS_HOST_DIR)/tmp-helm @mv $(TOOLS_HOST_DIR)/tmp-helm/$(SAFEHOSTPLATFORM)/helm $(HELM) @rm -fr $(TOOLS_HOST_DIR)/tmp-helm @$(OK) installing helm $(HELM_VERSION) @@ -127,4 +140,4 @@ $(HELM3): @curl -fsSL https://get.helm.sh/helm-$(HELM3_VERSION)-$(SAFEHOSTPLATFORM).tar.gz | tar -xz -C $(TOOLS_HOST_DIR)/tmp-helm3 @mv $(TOOLS_HOST_DIR)/tmp-helm3/$(SAFEHOSTPLATFORM)/helm $(HELM3) @rm -fr $(TOOLS_HOST_DIR)/tmp-helm3 - @$(OK) installing helm3 $(HELM_VERSION) \ No newline at end of file + @$(OK) installing helm3 $(HELM_VERSION) From 0062e688518e454720957e931e8affe9d03d0631 Mon Sep 17 00:00:00 2001 From: Marques Johansson Date: Fri, 26 Aug 2022 11:54:16 -0400 Subject: [PATCH 3/8] update to TF 1.8.0 and renaming -tf to -jet sync with provider-jet-template@d938ff2 updated golangci-lint to 1.48.0 for compat with newer go Signed-off-by: Marques Johansson --- Makefile | 65 +++++++++++++++++++++++++++++++++++++++++-------------- README.md | 41 +++++++++++++++-------------------- 2 files changed, 67 insertions(+), 39 deletions(-) diff --git a/Makefile b/Makefile index 70b4b6c..caaa380 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,17 @@ # ==================================================================================== # Setup Project -PROJECT_NAME := provider-tf-equinix +PROJECT_NAME := provider-jet-equinix PROJECT_REPO := github.com/crossplane-contrib/$(PROJECT_NAME) +GOLANGCILINT_VERSION ?= 1.48.0 + +export TERRAFORM_VERSION := 1.1.6 -export TERRAFORM_VERSION := 1.0.11 export TERRAFORM_PROVIDER_SOURCE := equinix/equinix -export TERRAFORM_PROVIDER_VERSION := 1.3.0 +export TERRAFORM_PROVIDER_VERSION := 1.8.0 export TERRAFORM_PROVIDER_DOWNLOAD_NAME := terraform-provider-equinix -export TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX := https://releases.hashicorp.com/terraform-provider-equinix/1.3.0 +export TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX := https://releases.hashicorp.com/terraform-provider-equinix/1.8.0 +#export TERRAFORM_NATIVE_PROVIDER_BINARY := terraform-provider-null_v3.1.0_x5 PLATFORMS ?= linux_amd64 linux_arm64 @@ -35,7 +38,7 @@ NPROCS ?= 1 # to half the number of CPU cores. GO_TEST_PARALLEL := $(shell echo $$(( $(NPROCS) / 2 ))) -GO_STATIC_PACKAGES = $(GO_PROJECT)/cmd/provider $(GO_PROJECT)/cmd/generator +GO_STATIC_PACKAGES = $(GO_PROJECT)/cmd/provider GO_LDFLAGS += -X $(GO_PROJECT)/internal/version.Version=$(VERSION) GO_SUBDIRS += cmd internal apis GO111MODULE = on @@ -49,12 +52,12 @@ GO111MODULE = on # ==================================================================================== # Setup Images -DOCKER_REGISTRY := crossplane -IMAGES = provider-tf-equinix provider-tf-equinix-controller +DOCKER_REGISTRY ?= crossplane +IMAGES = provider-jet-equinix provider-jet-equinix-controller -include build/makelib/image.mk # ==================================================================================== -# Targets +# Fallthrough # run `make help` to see the targets and options @@ -67,6 +70,44 @@ fallthrough: submodules @echo Initial setup complete. Running make again . . . @make +# ==================================================================================== +# Setup Terraform for fetching provider schema +TERRAFORM := $(TOOLS_HOST_DIR)/terraform-$(TERRAFORM_VERSION) +TERRAFORM_WORKDIR := $(WORK_DIR)/terraform +TERRAFORM_PROVIDER_SCHEMA := config/schema.json + +$(TERRAFORM): + @$(INFO) installing terraform $(HOSTOS)-$(HOSTARCH) + @mkdir -p $(TOOLS_HOST_DIR)/tmp-terraform + @curl -fsSL https://releases.hashicorp.com/terraform/$(TERRAFORM_VERSION)/terraform_$(TERRAFORM_VERSION)_$(SAFEHOST_PLATFORM).zip -o $(TOOLS_HOST_DIR)/tmp-terraform/terraform.zip + @unzip $(TOOLS_HOST_DIR)/tmp-terraform/terraform.zip -d $(TOOLS_HOST_DIR)/tmp-terraform + @mv $(TOOLS_HOST_DIR)/tmp-terraform/terraform $(TERRAFORM) + @rm -fr $(TOOLS_HOST_DIR)/tmp-terraform + @$(OK) installing terraform $(HOSTOS)-$(HOSTARCH) + +$(TERRAFORM_PROVIDER_SCHEMA): $(TERRAFORM) + @$(INFO) generating provider schema for $(TERRAFORM_PROVIDER_SOURCE) $(TERRAFORM_PROVIDER_VERSION) + @mkdir -p $(TERRAFORM_WORKDIR) + @echo '{"terraform":[{"required_providers":[{"provider":{"source":"'"$(TERRAFORM_PROVIDER_SOURCE)"'","version":"'"$(TERRAFORM_PROVIDER_VERSION)"'"}}],"required_version":"'"$(TERRAFORM_VERSION)"'"}]}' > $(TERRAFORM_WORKDIR)/main.tf.json + @$(TERRAFORM) -chdir=$(TERRAFORM_WORKDIR) init > $(TERRAFORM_WORKDIR)/terraform-logs.txt 2>&1 + @$(TERRAFORM) -chdir=$(TERRAFORM_WORKDIR) providers schema -json=true > $(TERRAFORM_PROVIDER_SCHEMA) 2>> $(TERRAFORM_WORKDIR)/terraform-logs.txt + @$(OK) generating provider schema for $(TERRAFORM_PROVIDER_SOURCE) $(TERRAFORM_PROVIDER_VERSION) + +generate.init: $(TERRAFORM_PROVIDER_SCHEMA) + +.PHONY: $(TERRAFORM_PROVIDER_SCHEMA) +# ==================================================================================== +# Targets + +# NOTE: the build submodule currently overrides XDG_CACHE_HOME in order to +# force the Helm 3 to use the .work/helm directory. This causes Go on Linux +# machines to use that directory as the build cache as well. We should adjust +# this behavior in the build submodule because it is also causing Linux users +# to duplicate their build cache, but for now we just make it easier to identify +# its location in CI so that we cache between builds. +go.cachedir: + @go env GOCACHE + # Generate a coverage report for cobertura applying exclusions on # - generated file cobertura: @@ -74,14 +115,6 @@ cobertura: grep -v zz_ | \ $(GOCOVER_COBERTURA) > $(GO_TEST_OUTPUT)/cobertura-coverage.xml -crds.clean: - @$(INFO) cleaning generated CRDs - @find package/crds -name '*.yaml' -exec sed -i.sed -e '1,2d' {} \; || $(FAIL) - @find package/crds -name '*.yaml.sed' -delete || $(FAIL) - @$(OK) cleaned generated CRDs - -generate.done: crds.clean - # Update the submodules, such as the common build scripts. submodules: @git submodule sync diff --git a/README.md b/README.md index 33ce7b5..551dbf9 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,32 @@ # Terrajet Equinix Provider -`provider-tf-equinix` is a [Crossplane](https://crossplane.io/) provider that -is built using [Terrajet](https://github.com/crossplane-contrib/terrajet) code -generation tools and exposes XRM-conformant managed resources for the +`provider-jet-equinix` is a [Crossplane](https://crossplane.io/) provider that +is built using [Terrajet](https://github.com/crossplane/terrajet) code +generation tools and exposes XRM-conformant managed resources for the Equinix API. ## Getting Started Install the provider by using the following command after changing the image tag -to the [latest release](https://github.com/crossplane-contrib/provider-tf-equinix/releases): +to the [latest release](https://github.com/crossplane-contrib/provider-jet-equinix/releases): ``` -kubectl crossplane install provider crossplane/provider-tf-equinix:v0.1.0 +kubectl crossplane install provider crossplane/provider-jet-equinix:v0.1.0 ``` -You can see the API reference [here](https://doc.crds.dev/github.com/crossplane-contrib/provider-tf-equinix). +Alternatively, you can use declarative installation: +``` +kubectl apply -f examples/install.yaml +``` + +Notice that in this example Provider resource is referencing ControllerConfig with debug enabled. + +You can see the API reference [here](https://doc.crds.dev/github.com/crossplane-contrib/provider-jet-equinix). ## Developing Run code-generation pipeline: ```console -go run cmd/generator/main.go +go run cmd/generator/main.go "$PWD" ``` Run against a Kubernetes cluster: @@ -34,18 +41,6 @@ Build, push, and install: make all ``` -Build image: - -```console -make image -``` - -Push image: - -```console -make push -``` - Build binary: ```console @@ -55,7 +50,7 @@ make build ## Report a Bug For filing bugs, suggesting improvements, or requesting new features, please -open an [issue](https://github.com/crossplane-contrib/provider-tf-equinix/issues). +open an [issue](https://github.com/crossplane-contrib/provider-jet-equinix/issues). ## Contact @@ -69,17 +64,17 @@ Please use the following to reach members of the community: ## Governance and Owners -provider-tf-equinix is run according to the same +provider-jet-equinix is run according to the same [Governance](https://github.com/crossplane/crossplane/blob/master/GOVERNANCE.md) and [Ownership](https://github.com/crossplane/crossplane/blob/master/OWNERS.md) structure as the core Crossplane project. ## Code of Conduct -provider-tf-equinix adheres to the same [Code of +provider-jet-equinix adheres to the same [Code of Conduct](https://github.com/crossplane/crossplane/blob/master/CODE_OF_CONDUCT.md) as the core Crossplane project. ## Licensing -provider-tf-equinix is under the Apache 2.0 license. +provider-jet-equinix is under the Apache 2.0 license. From 1b2f3abfb5a000e382533d6f776d7ec48d83ff19 Mon Sep 17 00:00:00 2001 From: Marques Johansson Date: Fri, 26 Aug 2022 12:03:10 -0400 Subject: [PATCH 4/8] update package and generated files with jet name and TF 1.8.0, sync with provider-jet-template@d938ff2 Signed-off-by: Marques Johansson --- .golangci.yml | 2 +- apis/ecx/v1alpha1/zz_generated.deepcopy.go | 311 +- apis/ecx/v1alpha1/zz_generated.managed.go | 30 + apis/ecx/v1alpha1/zz_generated_terraformed.go | 248 + .../v1alpha1/zz_l2connection_terraformed.go | 92 - apis/ecx/v1alpha1/zz_l2connection_types.go | 114 +- .../zz_l2connectionaccepter_terraformed.go | 92 - .../v1alpha1/zz_l2connectionaccepter_types.go | 2 + .../zz_l2serviceprofile_terraformed.go | 92 - .../ecx/v1alpha1/zz_l2serviceprofile_types.go | 8 +- apis/generate.go | 4 +- apis/metal/v1alpha1/zz_bgpsession_types.go | 96 + apis/metal/v1alpha1/zz_connection_types.go | 192 + apis/metal/v1alpha1/zz_device_types.go | 268 ++ .../v1alpha1/zz_devicenetworktype_types.go | 90 + apis/metal/v1alpha1/zz_gateway_types.go | 102 + apis/metal/v1alpha1/zz_generated.deepcopy.go | 4135 +++++++++++++++++ apis/metal/v1alpha1/zz_generated.managed.go | 1274 +++++ .../v1alpha1/zz_generated.managedlist.go | 191 + apis/metal/v1alpha1/zz_generated.resolvers.go | 119 + .../v1alpha1/zz_generated_terraformed.go | 1432 ++++++ apis/metal/v1alpha1/zz_groupversion_info.go | 44 + apis/metal/v1alpha1/zz_ipattachment_types.go | 110 + apis/metal/v1alpha1/zz_organization_types.go | 136 + apis/metal/v1alpha1/zz_port_types.go | 124 + .../v1alpha1/zz_portvlanattachment_types.go | 106 + apis/metal/v1alpha1/zz_project_types.go | 136 + apis/metal/v1alpha1/zz_projectapikey_types.go | 94 + apis/metal/v1alpha1/zz_projectsshkey_types.go | 102 + .../v1alpha1/zz_reservedipblock_types.go | 148 + .../v1alpha1/zz_spotmarketrequest_types.go | 165 + apis/metal/v1alpha1/zz_sshkey_types.go | 98 + apis/metal/v1alpha1/zz_userapikey_types.go | 92 + .../metal/v1alpha1/zz_virtualcircuit_types.go | 150 + apis/metal/v1alpha1/zz_vlan_types.go | 101 + apis/metal/v1alpha1/zz_vrf_types.go | 106 + .../v1alpha1/zz_acltemplate_terraformed.go | 92 - apis/network/v1alpha1/zz_acltemplate_types.go | 77 +- apis/network/v1alpha1/zz_bgp_terraformed.go | 92 - apis/network/v1alpha1/zz_bgp_types.go | 46 +- .../network/v1alpha1/zz_device_terraformed.go | 92 - apis/network/v1alpha1/zz_device_types.go | 169 +- .../v1alpha1/zz_devicelink_terraformed.go | 92 - apis/network/v1alpha1/zz_devicelink_types.go | 22 +- .../network/v1alpha1/zz_generated.deepcopy.go | 1082 +++-- apis/network/v1alpha1/zz_generated.managed.go | 220 +- .../v1alpha1/zz_generated.managedlist.go | 16 +- .../v1alpha1/zz_generated_terraformed.go | 470 ++ .../network/v1alpha1/zz_sshkey_terraformed.go | 92 - apis/network/v1alpha1/zz_sshkey_types.go | 42 +- .../v1alpha1/zz_sshuser_terraformed.go | 92 - apis/network/v1alpha1/zz_sshuser_types.go | 42 +- apis/v1alpha1/doc.go | 2 +- apis/v1alpha1/register.go | 6 + apis/v1alpha1/types.go | 52 + apis/v1alpha1/zz_generated.deepcopy.go | 91 + apis/zz_register.go | 8 +- .../Dockerfile | 9 +- .../Makefile | 3 +- .../terraformrc.hcl | 0 .../Dockerfile | 0 .../Makefile | 2 +- cmd/generator/main.go | 10 +- cmd/provider/main.go | 76 +- .../{l2connection.go => config.go} | 6 +- config/metal/connection/config.go | 32 + config/metal/device/config.go | 28 + config/metal/project/config.go | 28 + config/provider.go | 29 +- config/schema.json | 1 + examples/ecx/l2connection.yaml | 18 - examples/install.yaml | 19 + examples/providerconfig/secret.yaml.tmpl | 7 +- examples/storeconfig/vault.yaml | 19 + go.mod | 140 +- go.sum | 602 +-- hack/prepare.sh | 40 + internal/clients/equinix.go | 40 +- .../ecx/l2connection/zz_controller.go | 36 +- .../ecx/l2connectionaccepter/zz_controller.go | 36 +- .../ecx/l2serviceprofile/zz_controller.go | 36 +- .../metal/bgpsession/zz_controller.go | 60 + .../metal/connection/zz_controller.go | 60 + .../controller/metal/device/zz_controller.go | 60 + .../metal/devicenetworktype/zz_controller.go | 60 + .../controller/metal/gateway/zz_controller.go | 60 + .../metal/ipattachment/zz_controller.go | 60 + .../metal/organization/zz_controller.go | 60 + .../controller/metal/port/zz_controller.go | 60 + .../metal/portvlanattachment/zz_controller.go | 60 + .../controller/metal/project/zz_controller.go | 60 + .../metal/projectapikey/zz_controller.go | 60 + .../metal/projectsshkey/zz_controller.go | 60 + .../metal/reservedipblock/zz_controller.go | 60 + .../metal/spotmarketrequest/zz_controller.go | 60 + .../controller/metal/sshkey/zz_controller.go | 60 + .../metal/userapikey/zz_controller.go | 60 + .../metal/virtualcircuit/zz_controller.go | 60 + .../controller/metal/vlan/zz_controller.go | 60 + .../controller/metal/vrf/zz_controller.go | 60 + .../network/acltemplate/zz_controller.go | 44 +- .../controller/network/bgp/zz_controller.go | 44 +- .../network/device/zz_controller.go | 36 +- .../network/devicelink/zz_controller.go | 36 +- .../network/sshkey/zz_controller.go | 44 +- .../network/sshuser/zz_controller.go | 44 +- internal/controller/providerconfig/config.go | 25 +- internal/controller/zz_setup.go | 76 +- internal/features/features.go | 24 + ...t.crossplane.io_l2connectionaccepters.yaml | 59 +- ...uinix.jet.crossplane.io_l2connections.yaml | 193 +- ...x.jet.crossplane.io_l2serviceprofiles.yaml | 63 +- ...nix.jet.crossplane.io_providerconfigs.yaml | 3 +- ...et.crossplane.io_providerconfigusages.yaml | 3 +- ...quinix.jet.crossplane.io_storeconfigs.yaml | 318 ++ ...equinix.jet.crossplane.io_bgpsessions.yaml | 232 + ...equinix.jet.crossplane.io_connections.yaml | 360 ++ ....jet.crossplane.io_devicenetworktypes.yaml | 228 + ...tal.equinix.jet.crossplane.io_devices.yaml | 464 ++ ...al.equinix.jet.crossplane.io_gateways.yaml | 238 + ...uinix.jet.crossplane.io_ipattachments.yaml | 246 + ...uinix.jet.crossplane.io_organizations.yaml | 266 ++ ...metal.equinix.jet.crossplane.io_ports.yaml | 263 ++ ...jet.crossplane.io_portvlanattachments.yaml | 246 + ...inix.jet.crossplane.io_projectapikeys.yaml | 230 + ...al.equinix.jet.crossplane.io_projects.yaml | 308 ++ ...inix.jet.crossplane.io_projectsshkeys.yaml | 238 + ...ix.jet.crossplane.io_reservedipblocks.yaml | 292 ++ ....jet.crossplane.io_spotmarketrequests.yaml | 305 ++ ...tal.equinix.jet.crossplane.io_sshkeys.yaml | 234 + ...equinix.jet.crossplane.io_userapikeys.yaml | 228 + ...nix.jet.crossplane.io_virtualcircuits.yaml | 303 ++ ...metal.equinix.jet.crossplane.io_vlans.yaml | 233 + ...metal.equinix.jet.crossplane.io_vrves.yaml | 244 + ...quinix.jet.crossplane.io_acltemplates.yaml | 99 +- ...etwork.equinix.jet.crossplane.io_bgps.yaml | 75 +- ...equinix.jet.crossplane.io_devicelinks.yaml | 78 +- ...ork.equinix.jet.crossplane.io_devices.yaml | 421 +- ...ork.equinix.jet.crossplane.io_sshkeys.yaml | 69 +- ...rk.equinix.jet.crossplane.io_sshusers.yaml | 69 +- package/crossplane.yaml | 4 +- 141 files changed, 20642 insertions(+), 2203 deletions(-) create mode 100755 apis/ecx/v1alpha1/zz_generated_terraformed.go delete mode 100755 apis/ecx/v1alpha1/zz_l2connection_terraformed.go delete mode 100755 apis/ecx/v1alpha1/zz_l2connectionaccepter_terraformed.go delete mode 100755 apis/ecx/v1alpha1/zz_l2serviceprofile_terraformed.go create mode 100755 apis/metal/v1alpha1/zz_bgpsession_types.go create mode 100755 apis/metal/v1alpha1/zz_connection_types.go create mode 100755 apis/metal/v1alpha1/zz_device_types.go create mode 100755 apis/metal/v1alpha1/zz_devicenetworktype_types.go create mode 100755 apis/metal/v1alpha1/zz_gateway_types.go create mode 100644 apis/metal/v1alpha1/zz_generated.deepcopy.go create mode 100644 apis/metal/v1alpha1/zz_generated.managed.go create mode 100644 apis/metal/v1alpha1/zz_generated.managedlist.go create mode 100644 apis/metal/v1alpha1/zz_generated.resolvers.go create mode 100755 apis/metal/v1alpha1/zz_generated_terraformed.go create mode 100755 apis/metal/v1alpha1/zz_groupversion_info.go create mode 100755 apis/metal/v1alpha1/zz_ipattachment_types.go create mode 100755 apis/metal/v1alpha1/zz_organization_types.go create mode 100755 apis/metal/v1alpha1/zz_port_types.go create mode 100755 apis/metal/v1alpha1/zz_portvlanattachment_types.go create mode 100755 apis/metal/v1alpha1/zz_project_types.go create mode 100755 apis/metal/v1alpha1/zz_projectapikey_types.go create mode 100755 apis/metal/v1alpha1/zz_projectsshkey_types.go create mode 100755 apis/metal/v1alpha1/zz_reservedipblock_types.go create mode 100755 apis/metal/v1alpha1/zz_spotmarketrequest_types.go create mode 100755 apis/metal/v1alpha1/zz_sshkey_types.go create mode 100755 apis/metal/v1alpha1/zz_userapikey_types.go create mode 100755 apis/metal/v1alpha1/zz_virtualcircuit_types.go create mode 100755 apis/metal/v1alpha1/zz_vlan_types.go create mode 100755 apis/metal/v1alpha1/zz_vrf_types.go delete mode 100755 apis/network/v1alpha1/zz_acltemplate_terraformed.go delete mode 100755 apis/network/v1alpha1/zz_bgp_terraformed.go delete mode 100755 apis/network/v1alpha1/zz_device_terraformed.go delete mode 100755 apis/network/v1alpha1/zz_devicelink_terraformed.go create mode 100755 apis/network/v1alpha1/zz_generated_terraformed.go delete mode 100755 apis/network/v1alpha1/zz_sshkey_terraformed.go delete mode 100755 apis/network/v1alpha1/zz_sshuser_terraformed.go rename cluster/images/{provider-tf-equinix-controller => provider-jet-equinix-controller}/Dockerfile (79%) rename cluster/images/{provider-tf-equinix-controller => provider-jet-equinix-controller}/Makefile (89%) rename cluster/images/{provider-tf-equinix-controller => provider-jet-equinix-controller}/terraformrc.hcl (100%) rename cluster/images/{provider-tf-equinix => provider-jet-equinix}/Dockerfile (100%) rename cluster/images/{provider-tf-equinix => provider-jet-equinix}/Makefile (95%) rename config/ecx/l2connection/{l2connection.go => config.go} (83%) create mode 100644 config/metal/connection/config.go create mode 100644 config/metal/device/config.go create mode 100644 config/metal/project/config.go create mode 100644 config/schema.json delete mode 100644 examples/ecx/l2connection.yaml create mode 100644 examples/install.yaml create mode 100644 examples/storeconfig/vault.yaml create mode 100755 hack/prepare.sh create mode 100755 internal/controller/metal/bgpsession/zz_controller.go create mode 100755 internal/controller/metal/connection/zz_controller.go create mode 100755 internal/controller/metal/device/zz_controller.go create mode 100755 internal/controller/metal/devicenetworktype/zz_controller.go create mode 100755 internal/controller/metal/gateway/zz_controller.go create mode 100755 internal/controller/metal/ipattachment/zz_controller.go create mode 100755 internal/controller/metal/organization/zz_controller.go create mode 100755 internal/controller/metal/port/zz_controller.go create mode 100755 internal/controller/metal/portvlanattachment/zz_controller.go create mode 100755 internal/controller/metal/project/zz_controller.go create mode 100755 internal/controller/metal/projectapikey/zz_controller.go create mode 100755 internal/controller/metal/projectsshkey/zz_controller.go create mode 100755 internal/controller/metal/reservedipblock/zz_controller.go create mode 100755 internal/controller/metal/spotmarketrequest/zz_controller.go create mode 100755 internal/controller/metal/sshkey/zz_controller.go create mode 100755 internal/controller/metal/userapikey/zz_controller.go create mode 100755 internal/controller/metal/virtualcircuit/zz_controller.go create mode 100755 internal/controller/metal/vlan/zz_controller.go create mode 100755 internal/controller/metal/vrf/zz_controller.go create mode 100644 internal/features/features.go create mode 100644 package/crds/equinix.jet.crossplane.io_storeconfigs.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_bgpsessions.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_connections.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_devicenetworktypes.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_devices.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_gateways.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_ipattachments.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_organizations.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_ports.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_portvlanattachments.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_projectapikeys.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_projects.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_projectsshkeys.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_reservedipblocks.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_spotmarketrequests.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_sshkeys.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_userapikeys.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_virtualcircuits.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_vlans.yaml create mode 100644 package/crds/metal.equinix.jet.crossplane.io_vrves.yaml diff --git a/.golangci.yml b/.golangci.yml index 1a0fa8a..71c9575 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -38,7 +38,7 @@ linters-settings: goimports: # put imports beginning with prefix after 3rd-party packages; # it's a comma-separated list of prefixes - local-prefixes: github.com/crossplane-contrib/provider-tf-equinix + local-prefixes: github.com/crossplane-contrib/provider-jet-template gocyclo: # minimal code complexity to report, 30 by default (but we recommend 10-20) diff --git a/apis/ecx/v1alpha1/zz_generated.deepcopy.go b/apis/ecx/v1alpha1/zz_generated.deepcopy.go index 85fd867..71122d1 100644 --- a/apis/ecx/v1alpha1/zz_generated.deepcopy.go +++ b/apis/ecx/v1alpha1/zz_generated.deepcopy.go @@ -26,6 +26,113 @@ import ( runtime "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ActionsObservation) DeepCopyInto(out *ActionsObservation) { + *out = *in + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.OperationID != nil { + in, out := &in.OperationID, &out.OperationID + *out = new(string) + **out = **in + } + if in.RequiredData != nil { + in, out := &in.RequiredData, &out.RequiredData + *out = make([]RequiredDataObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionsObservation. +func (in *ActionsObservation) DeepCopy() *ActionsObservation { + if in == nil { + return nil + } + out := new(ActionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ActionsParameters) DeepCopyInto(out *ActionsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionsParameters. +func (in *ActionsParameters) DeepCopy() *ActionsParameters { + if in == nil { + return nil + } + out := new(ActionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ActionsRequiredDataObservation) DeepCopyInto(out *ActionsRequiredDataObservation) { + *out = *in + if in.Editable != nil { + in, out := &in.Editable, &out.Editable + *out = new(bool) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } + if in.ValidationPattern != nil { + in, out := &in.ValidationPattern, &out.ValidationPattern + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionsRequiredDataObservation. +func (in *ActionsRequiredDataObservation) DeepCopy() *ActionsRequiredDataObservation { + if in == nil { + return nil + } + out := new(ActionsRequiredDataObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ActionsRequiredDataParameters) DeepCopyInto(out *ActionsRequiredDataParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionsRequiredDataParameters. +func (in *ActionsRequiredDataParameters) DeepCopy() *ActionsRequiredDataParameters { + if in == nil { + return nil + } + out := new(ActionsRequiredDataParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AdditionalInfoObservation) DeepCopyInto(out *AdditionalInfoObservation) { *out = *in @@ -200,6 +307,11 @@ func (in *L2ConnectionAccepterObservation) DeepCopyInto(out *L2ConnectionAccepte *out = new(string) **out = **in } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new L2ConnectionAccepterObservation. @@ -316,11 +428,28 @@ func (in *L2ConnectionList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *L2ConnectionObservation) DeepCopyInto(out *L2ConnectionObservation) { *out = *in + if in.Actions != nil { + in, out := &in.Actions, &out.Actions + *out = make([]ActionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } if in.ProviderStatus != nil { in, out := &in.ProviderStatus, &out.ProviderStatus *out = new(string) **out = **in } + if in.RedundancyGroup != nil { + in, out := &in.RedundancyGroup, &out.RedundancyGroup + *out = new(string) + **out = **in + } if in.RedundancyType != nil { in, out := &in.RedundancyType, &out.RedundancyType *out = new(string) @@ -331,6 +460,13 @@ func (in *L2ConnectionObservation) DeepCopyInto(out *L2ConnectionObservation) { *out = new(string) **out = **in } + if in.SecondaryConnection != nil { + in, out := &in.SecondaryConnection, &out.SecondaryConnection + *out = make([]SecondaryConnectionObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Status != nil { in, out := &in.Status, &out.Status *out = new(string) @@ -341,6 +477,11 @@ func (in *L2ConnectionObservation) DeepCopyInto(out *L2ConnectionObservation) { *out = new(string) **out = **in } + if in.VendorToken != nil { + in, out := &in.VendorToken, &out.VendorToken + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new L2ConnectionObservation. @@ -370,7 +511,7 @@ func (in *L2ConnectionParameters) DeepCopyInto(out *L2ConnectionParameters) { } if in.DeviceInterfaceID != nil { in, out := &in.DeviceInterfaceID, &out.DeviceInterfaceID - *out = new(int64) + *out = new(float64) **out = **in } if in.DeviceUUID != nil { @@ -441,9 +582,14 @@ func (in *L2ConnectionParameters) DeepCopyInto(out *L2ConnectionParameters) { *out = new(string) **out = **in } + if in.ServiceToken != nil { + in, out := &in.ServiceToken, &out.ServiceToken + *out = new(string) + **out = **in + } if in.Speed != nil { in, out := &in.Speed, &out.Speed - *out = new(int64) + *out = new(float64) **out = **in } if in.SpeedUnit != nil { @@ -453,12 +599,12 @@ func (in *L2ConnectionParameters) DeepCopyInto(out *L2ConnectionParameters) { } if in.VlanCtag != nil { in, out := &in.VlanCtag, &out.VlanCtag - *out = new(int64) + *out = new(float64) **out = **in } if in.VlanStag != nil { in, out := &in.VlanStag, &out.VlanStag - *out = new(int64) + *out = new(float64) **out = **in } if in.ZsidePortUUID != nil { @@ -466,14 +612,19 @@ func (in *L2ConnectionParameters) DeepCopyInto(out *L2ConnectionParameters) { *out = new(string) **out = **in } + if in.ZsideServiceToken != nil { + in, out := &in.ZsideServiceToken, &out.ZsideServiceToken + *out = new(string) + **out = **in + } if in.ZsideVlanCtag != nil { in, out := &in.ZsideVlanCtag, &out.ZsideVlanCtag - *out = new(int64) + *out = new(float64) **out = **in } if in.ZsideVlanStag != nil { in, out := &in.ZsideVlanStag, &out.ZsideVlanStag - *out = new(int64) + *out = new(float64) **out = **in } } @@ -584,6 +735,11 @@ func (in *L2ServiceprofileList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *L2ServiceprofileObservation) DeepCopyInto(out *L2ServiceprofileObservation) { *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } if in.State != nil { in, out := &in.State, &out.State *out = new(string) @@ -850,14 +1006,133 @@ func (in *PortParameters) DeepCopy() *PortParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RequiredDataObservation) DeepCopyInto(out *RequiredDataObservation) { + *out = *in + if in.Editable != nil { + in, out := &in.Editable, &out.Editable + *out = new(bool) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } + if in.ValidationPattern != nil { + in, out := &in.ValidationPattern, &out.ValidationPattern + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequiredDataObservation. +func (in *RequiredDataObservation) DeepCopy() *RequiredDataObservation { + if in == nil { + return nil + } + out := new(RequiredDataObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RequiredDataParameters) DeepCopyInto(out *RequiredDataParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequiredDataParameters. +func (in *RequiredDataParameters) DeepCopy() *RequiredDataParameters { + if in == nil { + return nil + } + out := new(RequiredDataParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecondaryConnectionActionsObservation) DeepCopyInto(out *SecondaryConnectionActionsObservation) { + *out = *in + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.OperationID != nil { + in, out := &in.OperationID, &out.OperationID + *out = new(string) + **out = **in + } + if in.RequiredData != nil { + in, out := &in.RequiredData, &out.RequiredData + *out = make([]ActionsRequiredDataObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryConnectionActionsObservation. +func (in *SecondaryConnectionActionsObservation) DeepCopy() *SecondaryConnectionActionsObservation { + if in == nil { + return nil + } + out := new(SecondaryConnectionActionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecondaryConnectionActionsParameters) DeepCopyInto(out *SecondaryConnectionActionsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryConnectionActionsParameters. +func (in *SecondaryConnectionActionsParameters) DeepCopy() *SecondaryConnectionActionsParameters { + if in == nil { + return nil + } + out := new(SecondaryConnectionActionsParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SecondaryConnectionObservation) DeepCopyInto(out *SecondaryConnectionObservation) { *out = *in + if in.Actions != nil { + in, out := &in.Actions, &out.Actions + *out = make([]SecondaryConnectionActionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ProviderStatus != nil { in, out := &in.ProviderStatus, &out.ProviderStatus *out = new(string) **out = **in } + if in.RedundancyGroup != nil { + in, out := &in.RedundancyGroup, &out.RedundancyGroup + *out = new(string) + **out = **in + } if in.RedundancyType != nil { in, out := &in.RedundancyType, &out.RedundancyType *out = new(string) @@ -878,6 +1153,11 @@ func (in *SecondaryConnectionObservation) DeepCopyInto(out *SecondaryConnectionO *out = new(string) **out = **in } + if in.VendorToken != nil { + in, out := &in.VendorToken, &out.VendorToken + *out = new(string) + **out = **in + } if in.ZsidePortUUID != nil { in, out := &in.ZsidePortUUID, &out.ZsidePortUUID *out = new(string) @@ -885,12 +1165,12 @@ func (in *SecondaryConnectionObservation) DeepCopyInto(out *SecondaryConnectionO } if in.ZsideVlanCtag != nil { in, out := &in.ZsideVlanCtag, &out.ZsideVlanCtag - *out = new(int64) + *out = new(float64) **out = **in } if in.ZsideVlanStag != nil { in, out := &in.ZsideVlanStag, &out.ZsideVlanStag - *out = new(int64) + *out = new(float64) **out = **in } } @@ -915,7 +1195,7 @@ func (in *SecondaryConnectionParameters) DeepCopyInto(out *SecondaryConnectionPa } if in.DeviceInterfaceID != nil { in, out := &in.DeviceInterfaceID, &out.DeviceInterfaceID - *out = new(int64) + *out = new(float64) **out = **in } if in.DeviceUUID != nil { @@ -948,9 +1228,14 @@ func (in *SecondaryConnectionParameters) DeepCopyInto(out *SecondaryConnectionPa *out = new(string) **out = **in } + if in.ServiceToken != nil { + in, out := &in.ServiceToken, &out.ServiceToken + *out = new(string) + **out = **in + } if in.Speed != nil { in, out := &in.Speed, &out.Speed - *out = new(int64) + *out = new(float64) **out = **in } if in.SpeedUnit != nil { @@ -960,12 +1245,12 @@ func (in *SecondaryConnectionParameters) DeepCopyInto(out *SecondaryConnectionPa } if in.VlanCtag != nil { in, out := &in.VlanCtag, &out.VlanCtag - *out = new(int64) + *out = new(float64) **out = **in } if in.VlanStag != nil { in, out := &in.VlanStag, &out.VlanStag - *out = new(int64) + *out = new(float64) **out = **in } } @@ -1000,7 +1285,7 @@ func (in *SpeedBandParameters) DeepCopyInto(out *SpeedBandParameters) { *out = *in if in.Speed != nil { in, out := &in.Speed, &out.Speed - *out = new(int64) + *out = new(float64) **out = **in } if in.SpeedUnit != nil { diff --git a/apis/ecx/v1alpha1/zz_generated.managed.go b/apis/ecx/v1alpha1/zz_generated.managed.go index 7a348e0..d200936 100644 --- a/apis/ecx/v1alpha1/zz_generated.managed.go +++ b/apis/ecx/v1alpha1/zz_generated.managed.go @@ -42,6 +42,11 @@ func (mg *L2Connection) GetProviderReference() *xpv1.Reference { return mg.Spec.ProviderReference } +// GetPublishConnectionDetailsTo of this L2Connection. +func (mg *L2Connection) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + // GetWriteConnectionSecretToReference of this L2Connection. func (mg *L2Connection) GetWriteConnectionSecretToReference() *xpv1.SecretReference { return mg.Spec.WriteConnectionSecretToReference @@ -70,6 +75,11 @@ func (mg *L2Connection) SetProviderReference(r *xpv1.Reference) { mg.Spec.ProviderReference = r } +// SetPublishConnectionDetailsTo of this L2Connection. +func (mg *L2Connection) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + // SetWriteConnectionSecretToReference of this L2Connection. func (mg *L2Connection) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r @@ -98,6 +108,11 @@ func (mg *L2ConnectionAccepter) GetProviderReference() *xpv1.Reference { return mg.Spec.ProviderReference } +// GetPublishConnectionDetailsTo of this L2ConnectionAccepter. +func (mg *L2ConnectionAccepter) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + // GetWriteConnectionSecretToReference of this L2ConnectionAccepter. func (mg *L2ConnectionAccepter) GetWriteConnectionSecretToReference() *xpv1.SecretReference { return mg.Spec.WriteConnectionSecretToReference @@ -126,6 +141,11 @@ func (mg *L2ConnectionAccepter) SetProviderReference(r *xpv1.Reference) { mg.Spec.ProviderReference = r } +// SetPublishConnectionDetailsTo of this L2ConnectionAccepter. +func (mg *L2ConnectionAccepter) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + // SetWriteConnectionSecretToReference of this L2ConnectionAccepter. func (mg *L2ConnectionAccepter) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r @@ -154,6 +174,11 @@ func (mg *L2Serviceprofile) GetProviderReference() *xpv1.Reference { return mg.Spec.ProviderReference } +// GetPublishConnectionDetailsTo of this L2Serviceprofile. +func (mg *L2Serviceprofile) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + // GetWriteConnectionSecretToReference of this L2Serviceprofile. func (mg *L2Serviceprofile) GetWriteConnectionSecretToReference() *xpv1.SecretReference { return mg.Spec.WriteConnectionSecretToReference @@ -182,6 +207,11 @@ func (mg *L2Serviceprofile) SetProviderReference(r *xpv1.Reference) { mg.Spec.ProviderReference = r } +// SetPublishConnectionDetailsTo of this L2Serviceprofile. +func (mg *L2Serviceprofile) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + // SetWriteConnectionSecretToReference of this L2Serviceprofile. func (mg *L2Serviceprofile) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r diff --git a/apis/ecx/v1alpha1/zz_generated_terraformed.go b/apis/ecx/v1alpha1/zz_generated_terraformed.go new file mode 100755 index 0000000..8268226 --- /dev/null +++ b/apis/ecx/v1alpha1/zz_generated_terraformed.go @@ -0,0 +1,248 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + "github.com/pkg/errors" + + "github.com/crossplane/terrajet/pkg/resource" + "github.com/crossplane/terrajet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this L2Connection +func (mg *L2Connection) GetTerraformResourceType() string { + return "equinix_ecx_l2_connection" +} + +// GetConnectionDetailsMapping for this L2Connection +func (tr *L2Connection) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this L2Connection +func (tr *L2Connection) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this L2Connection +func (tr *L2Connection) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this L2Connection +func (tr *L2Connection) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this L2Connection +func (tr *L2Connection) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this L2Connection +func (tr *L2Connection) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this L2Connection using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *L2Connection) LateInitialize(attrs []byte) (bool, error) { + params := &L2ConnectionParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *L2Connection) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this L2ConnectionAccepter +func (mg *L2ConnectionAccepter) GetTerraformResourceType() string { + return "equinix_ecx_l2_connection_accepter" +} + +// GetConnectionDetailsMapping for this L2ConnectionAccepter +func (tr *L2ConnectionAccepter) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"access_key": "spec.forProvider.accessKeySecretRef", "secret_key": "spec.forProvider.secretKeySecretRef"} +} + +// GetObservation of this L2ConnectionAccepter +func (tr *L2ConnectionAccepter) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this L2ConnectionAccepter +func (tr *L2ConnectionAccepter) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this L2ConnectionAccepter +func (tr *L2ConnectionAccepter) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this L2ConnectionAccepter +func (tr *L2ConnectionAccepter) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this L2ConnectionAccepter +func (tr *L2ConnectionAccepter) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this L2ConnectionAccepter using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *L2ConnectionAccepter) LateInitialize(attrs []byte) (bool, error) { + params := &L2ConnectionAccepterParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *L2ConnectionAccepter) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this L2Serviceprofile +func (mg *L2Serviceprofile) GetTerraformResourceType() string { + return "equinix_ecx_l2_serviceprofile" +} + +// GetConnectionDetailsMapping for this L2Serviceprofile +func (tr *L2Serviceprofile) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this L2Serviceprofile +func (tr *L2Serviceprofile) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this L2Serviceprofile +func (tr *L2Serviceprofile) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this L2Serviceprofile +func (tr *L2Serviceprofile) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this L2Serviceprofile +func (tr *L2Serviceprofile) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this L2Serviceprofile +func (tr *L2Serviceprofile) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this L2Serviceprofile using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *L2Serviceprofile) LateInitialize(attrs []byte) (bool, error) { + params := &L2ServiceprofileParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *L2Serviceprofile) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/ecx/v1alpha1/zz_l2connection_terraformed.go b/apis/ecx/v1alpha1/zz_l2connection_terraformed.go deleted file mode 100755 index b3e6f50..0000000 --- a/apis/ecx/v1alpha1/zz_l2connection_terraformed.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright 2021 The Crossplane 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. -*/ - -// Code generated by terrajet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane-contrib/terrajet/pkg/resource" - "github.com/crossplane-contrib/terrajet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this L2Connection -func (mg *L2Connection) GetTerraformResourceType() string { - return "equinix_ecx_l2_connection" -} - -// GetConnectionDetailsMapping for this L2Connection -func (tr *L2Connection) GetConnectionDetailsMapping() map[string]string { - return nil -} - -// GetObservation of this L2Connection -func (tr *L2Connection) GetObservation() (map[string]interface{}, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this L2Connection -func (tr *L2Connection) SetObservation(obs map[string]interface{}) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetParameters of this L2Connection -func (tr *L2Connection) GetParameters() (map[string]interface{}, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this L2Connection -func (tr *L2Connection) SetParameters(params map[string]interface{}) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// LateInitialize this L2Connection using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *L2Connection) LateInitialize(attrs []byte) (bool, error) { - params := &L2ConnectionParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *L2Connection) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/ecx/v1alpha1/zz_l2connection_types.go b/apis/ecx/v1alpha1/zz_l2connection_types.go index 94856a7..27dc725 100755 --- a/apis/ecx/v1alpha1/zz_l2connection_types.go +++ b/apis/ecx/v1alpha1/zz_l2connection_types.go @@ -25,6 +25,34 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type ActionsObservation struct { + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + OperationID *string `json:"operationId,omitempty" tf:"operation_id,omitempty"` + + RequiredData []RequiredDataObservation `json:"requiredData,omitempty" tf:"required_data,omitempty"` + + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type ActionsParameters struct { +} + +type ActionsRequiredDataObservation struct { + Editable *bool `json:"editable,omitempty" tf:"editable,omitempty"` + + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + Label *string `json:"label,omitempty" tf:"label,omitempty"` + + ValidationPattern *string `json:"validationPattern,omitempty" tf:"validation_pattern,omitempty"` + + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type ActionsRequiredDataParameters struct { +} + type AdditionalInfoObservation struct { } @@ -40,15 +68,25 @@ type AdditionalInfoParameters struct { } type L2ConnectionObservation struct { + Actions []ActionsObservation `json:"actions,omitempty" tf:"actions,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + ProviderStatus *string `json:"providerStatus,omitempty" tf:"provider_status,omitempty"` + RedundancyGroup *string `json:"redundancyGroup,omitempty" tf:"redundancy_group,omitempty"` + RedundancyType *string `json:"redundancyType,omitempty" tf:"redundancy_type,omitempty"` RedundantUUID *string `json:"redundantUuid,omitempty" tf:"redundant_uuid,omitempty"` + SecondaryConnection []SecondaryConnectionObservation `json:"secondaryConnection,omitempty" tf:"secondary_connection,omitempty"` + Status *string `json:"status,omitempty" tf:"status,omitempty"` UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` + + VendorToken *string `json:"vendorToken,omitempty" tf:"vendor_token,omitempty"` } type L2ConnectionParameters struct { @@ -63,7 +101,7 @@ type L2ConnectionParameters struct { // Identifier of network interface on a given device, used for a connection. If not specified then first available interface will be selected // +kubebuilder:validation:Optional - DeviceInterfaceID *int64 `json:"deviceInterfaceId,omitempty" tf:"device_interface_id,omitempty"` + DeviceInterfaceID *float64 `json:"deviceInterfaceId,omitempty" tf:"device_interface_id,omitempty"` // Unique identifier of the Network Edge virtual device from which the connection would originate // +kubebuilder:validation:Optional @@ -73,7 +111,7 @@ type L2ConnectionParameters struct { // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` - // The type of peering to set up in case when connecting to Azure Express Route. One of Public, Private, Microsoft, Manual + // The type of peering to set up in case when connecting to Azure Express Route. One of PRIVATE, MICROSOFT, MANUAL, PUBLIC (MANUAL and PUBLIC are deprecated and not available for new connections) // +kubebuilder:validation:Optional NamedTag *string `json:"namedTag,omitempty" tf:"named_tag,omitempty"` @@ -104,7 +142,7 @@ type L2ConnectionParameters struct { // +kubebuilder:validation:Optional SecondaryConnection []SecondaryConnectionParameters `json:"secondaryConnection,omitempty" tf:"secondary_connection,omitempty"` - // The metro code that denotes the connection’s remote side (z-side) + // The metro code that denotes the connection's remote side (z-side) // +kubebuilder:validation:Optional SellerMetroCode *string `json:"sellerMetroCode,omitempty" tf:"seller_metro_code,omitempty"` @@ -112,9 +150,13 @@ type L2ConnectionParameters struct { // +kubebuilder:validation:Optional SellerRegion *string `json:"sellerRegion,omitempty" tf:"seller_region,omitempty"` + // Unique Equinix Fabric key given by a provider that grants you authorization to enable connectivity from a shared multi-tenant port (a-side) + // +kubebuilder:validation:Optional + ServiceToken *string `json:"serviceToken,omitempty" tf:"service_token,omitempty"` + // Speed/Bandwidth to be allocated to the connection // +kubebuilder:validation:Required - Speed *int64 `json:"speed" tf:"speed,omitempty"` + Speed *float64 `json:"speed" tf:"speed,omitempty"` // Unit of the speed/bandwidth to be allocated to the connection // +kubebuilder:validation:Required @@ -122,28 +164,64 @@ type L2ConnectionParameters struct { // C-Tag/Inner-Tag of the connection, a numeric character ranging from 2 - 4094 // +kubebuilder:validation:Optional - VlanCtag *int64 `json:"vlanCtag,omitempty" tf:"vlan_ctag,omitempty"` + VlanCtag *float64 `json:"vlanCtag,omitempty" tf:"vlan_ctag,omitempty"` // S-Tag/Outer-Tag of the connection, a numeric character ranging from 2 - 4094 // +kubebuilder:validation:Optional - VlanStag *int64 `json:"vlanStag,omitempty" tf:"vlan_stag,omitempty"` + VlanStag *float64 `json:"vlanStag,omitempty" tf:"vlan_stag,omitempty"` // Unique identifier of the port on the remote side (z-side) // +kubebuilder:validation:Optional ZsidePortUUID *string `json:"zsidePortUuid,omitempty" tf:"zside_port_uuid,omitempty"` + // Unique Equinix Fabric key given by a provider that grants you authorization to enable connectivity to a shared multi-tenant port (z-side) + // +kubebuilder:validation:Optional + ZsideServiceToken *string `json:"zsideServiceToken,omitempty" tf:"zside_service_token,omitempty"` + // C-Tag/Inner-Tag of the connection on the remote side (z-side) // +kubebuilder:validation:Optional - ZsideVlanCtag *int64 `json:"zsideVlanCtag,omitempty" tf:"zside_vlan_ctag,omitempty"` + ZsideVlanCtag *float64 `json:"zsideVlanCtag,omitempty" tf:"zside_vlan_ctag,omitempty"` // S-Tag/Outer-Tag of the connection on the remote side (z-side) // +kubebuilder:validation:Optional - ZsideVlanStag *int64 `json:"zsideVlanStag,omitempty" tf:"zside_vlan_stag,omitempty"` + ZsideVlanStag *float64 `json:"zsideVlanStag,omitempty" tf:"zside_vlan_stag,omitempty"` +} + +type RequiredDataObservation struct { + Editable *bool `json:"editable,omitempty" tf:"editable,omitempty"` + + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + Label *string `json:"label,omitempty" tf:"label,omitempty"` + + ValidationPattern *string `json:"validationPattern,omitempty" tf:"validation_pattern,omitempty"` + + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type RequiredDataParameters struct { +} + +type SecondaryConnectionActionsObservation struct { + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + OperationID *string `json:"operationId,omitempty" tf:"operation_id,omitempty"` + + RequiredData []ActionsRequiredDataObservation `json:"requiredData,omitempty" tf:"required_data,omitempty"` + + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type SecondaryConnectionActionsParameters struct { } type SecondaryConnectionObservation struct { + Actions []SecondaryConnectionActionsObservation `json:"actions,omitempty" tf:"actions,omitempty"` + ProviderStatus *string `json:"providerStatus,omitempty" tf:"provider_status,omitempty"` + RedundancyGroup *string `json:"redundancyGroup,omitempty" tf:"redundancy_group,omitempty"` + RedundancyType *string `json:"redundancyType,omitempty" tf:"redundancy_type,omitempty"` RedundantUUID *string `json:"redundantUuid,omitempty" tf:"redundant_uuid,omitempty"` @@ -152,11 +230,13 @@ type SecondaryConnectionObservation struct { UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` + VendorToken *string `json:"vendorToken,omitempty" tf:"vendor_token,omitempty"` + ZsidePortUUID *string `json:"zsidePortUuid,omitempty" tf:"zside_port_uuid,omitempty"` - ZsideVlanCtag *int64 `json:"zsideVlanCtag,omitempty" tf:"zside_vlan_ctag,omitempty"` + ZsideVlanCtag *float64 `json:"zsideVlanCtag,omitempty" tf:"zside_vlan_ctag,omitempty"` - ZsideVlanStag *int64 `json:"zsideVlanStag,omitempty" tf:"zside_vlan_stag,omitempty"` + ZsideVlanStag *float64 `json:"zsideVlanStag,omitempty" tf:"zside_vlan_stag,omitempty"` } type SecondaryConnectionParameters struct { @@ -167,7 +247,7 @@ type SecondaryConnectionParameters struct { // Identifier of network interface on a given device, used for a connection. If not specified then first available interface will be selected // +kubebuilder:validation:Optional - DeviceInterfaceID *int64 `json:"deviceInterfaceId,omitempty" tf:"device_interface_id,omitempty"` + DeviceInterfaceID *float64 `json:"deviceInterfaceId,omitempty" tf:"device_interface_id,omitempty"` // Unique identifier of the Network Edge virtual device from which the connection would originate // +kubebuilder:validation:Optional @@ -185,7 +265,7 @@ type SecondaryConnectionParameters struct { // +kubebuilder:validation:Optional ProfileUUID *string `json:"profileUuid,omitempty" tf:"profile_uuid,omitempty"` - // The metro code that denotes the connection’s remote side (z-side) + // The metro code that denotes the connection's remote side (z-side) // +kubebuilder:validation:Optional SellerMetroCode *string `json:"sellerMetroCode,omitempty" tf:"seller_metro_code,omitempty"` @@ -193,9 +273,13 @@ type SecondaryConnectionParameters struct { // +kubebuilder:validation:Optional SellerRegion *string `json:"sellerRegion,omitempty" tf:"seller_region,omitempty"` + // Unique Equinix Fabric key given by a provider that grants you authorization to enable connectivity from a shared multi-tenant port (a-side) + // +kubebuilder:validation:Optional + ServiceToken *string `json:"serviceToken,omitempty" tf:"service_token,omitempty"` + // Speed/Bandwidth to be allocated to the connection // +kubebuilder:validation:Optional - Speed *int64 `json:"speed,omitempty" tf:"speed,omitempty"` + Speed *float64 `json:"speed,omitempty" tf:"speed,omitempty"` // Unit of the speed/bandwidth to be allocated to the connection // +kubebuilder:validation:Optional @@ -203,11 +287,11 @@ type SecondaryConnectionParameters struct { // C-Tag/Inner-Tag of the connection, a numeric character ranging from 2 - 4094 // +kubebuilder:validation:Optional - VlanCtag *int64 `json:"vlanCtag,omitempty" tf:"vlan_ctag,omitempty"` + VlanCtag *float64 `json:"vlanCtag,omitempty" tf:"vlan_ctag,omitempty"` // S-Tag/Outer-Tag of the connection, a numeric character ranging from 2 - 4094 // +kubebuilder:validation:Optional - VlanStag *int64 `json:"vlanStag,omitempty" tf:"vlan_stag,omitempty"` + VlanStag *float64 `json:"vlanStag,omitempty" tf:"vlan_stag,omitempty"` } // L2ConnectionSpec defines the desired state of L2Connection diff --git a/apis/ecx/v1alpha1/zz_l2connectionaccepter_terraformed.go b/apis/ecx/v1alpha1/zz_l2connectionaccepter_terraformed.go deleted file mode 100755 index 2819dd4..0000000 --- a/apis/ecx/v1alpha1/zz_l2connectionaccepter_terraformed.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright 2021 The Crossplane 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. -*/ - -// Code generated by terrajet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane-contrib/terrajet/pkg/resource" - "github.com/crossplane-contrib/terrajet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this L2ConnectionAccepter -func (mg *L2ConnectionAccepter) GetTerraformResourceType() string { - return "equinix_ecx_l2_connection_accepter" -} - -// GetConnectionDetailsMapping for this L2ConnectionAccepter -func (tr *L2ConnectionAccepter) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"access_key": "spec.forProvider.accessKeySecretRef", "secret_key": "spec.forProvider.secretKeySecretRef"} -} - -// GetObservation of this L2ConnectionAccepter -func (tr *L2ConnectionAccepter) GetObservation() (map[string]interface{}, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this L2ConnectionAccepter -func (tr *L2ConnectionAccepter) SetObservation(obs map[string]interface{}) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetParameters of this L2ConnectionAccepter -func (tr *L2ConnectionAccepter) GetParameters() (map[string]interface{}, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this L2ConnectionAccepter -func (tr *L2ConnectionAccepter) SetParameters(params map[string]interface{}) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// LateInitialize this L2ConnectionAccepter using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *L2ConnectionAccepter) LateInitialize(attrs []byte) (bool, error) { - params := &L2ConnectionAccepterParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *L2ConnectionAccepter) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/ecx/v1alpha1/zz_l2connectionaccepter_types.go b/apis/ecx/v1alpha1/zz_l2connectionaccepter_types.go index 6913b5e..ea83191 100755 --- a/apis/ecx/v1alpha1/zz_l2connectionaccepter_types.go +++ b/apis/ecx/v1alpha1/zz_l2connectionaccepter_types.go @@ -27,6 +27,8 @@ import ( type L2ConnectionAccepterObservation struct { AwsConnectionID *string `json:"awsConnectionId,omitempty" tf:"aws_connection_id,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` } type L2ConnectionAccepterParameters struct { diff --git a/apis/ecx/v1alpha1/zz_l2serviceprofile_terraformed.go b/apis/ecx/v1alpha1/zz_l2serviceprofile_terraformed.go deleted file mode 100755 index 29e0845..0000000 --- a/apis/ecx/v1alpha1/zz_l2serviceprofile_terraformed.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright 2021 The Crossplane 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. -*/ - -// Code generated by terrajet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane-contrib/terrajet/pkg/resource" - "github.com/crossplane-contrib/terrajet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this L2Serviceprofile -func (mg *L2Serviceprofile) GetTerraformResourceType() string { - return "equinix_ecx_l2_serviceprofile" -} - -// GetConnectionDetailsMapping for this L2Serviceprofile -func (tr *L2Serviceprofile) GetConnectionDetailsMapping() map[string]string { - return nil -} - -// GetObservation of this L2Serviceprofile -func (tr *L2Serviceprofile) GetObservation() (map[string]interface{}, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this L2Serviceprofile -func (tr *L2Serviceprofile) SetObservation(obs map[string]interface{}) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetParameters of this L2Serviceprofile -func (tr *L2Serviceprofile) GetParameters() (map[string]interface{}, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this L2Serviceprofile -func (tr *L2Serviceprofile) SetParameters(params map[string]interface{}) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// LateInitialize this L2Serviceprofile using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *L2Serviceprofile) LateInitialize(attrs []byte) (bool, error) { - params := &L2ServiceprofileParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *L2Serviceprofile) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/ecx/v1alpha1/zz_l2serviceprofile_types.go b/apis/ecx/v1alpha1/zz_l2serviceprofile_types.go index 0356e0d..bb2489b 100755 --- a/apis/ecx/v1alpha1/zz_l2serviceprofile_types.go +++ b/apis/ecx/v1alpha1/zz_l2serviceprofile_types.go @@ -35,11 +35,13 @@ type FeaturesParameters struct { AllowRemoteConnections *bool `json:"allowRemoteConnections" tf:"allow_remote_connections,omitempty"` // Indicates whether or not this profile can be used for test connections - // +kubebuilder:validation:Required - TestProfile *bool `json:"testProfile" tf:"test_profile,omitempty"` + // +kubebuilder:validation:Optional + TestProfile *bool `json:"testProfile,omitempty" tf:"test_profile,omitempty"` } type L2ServiceprofileObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + State *string `json:"state,omitempty" tf:"state,omitempty"` UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` @@ -169,7 +171,7 @@ type SpeedBandParameters struct { // Speed/bandwidth supported by given service profile // +kubebuilder:validation:Required - Speed *int64 `json:"speed" tf:"speed,omitempty"` + Speed *float64 `json:"speed" tf:"speed,omitempty"` // Unit of the speed/bandwidth supported by given service profile // +kubebuilder:validation:Required diff --git a/apis/generate.go b/apis/generate.go index f698ea5..558a770 100644 --- a/apis/generate.go +++ b/apis/generate.go @@ -30,10 +30,10 @@ limitations under the License. //go:generate bash -c "find ../internal/controller -type d -empty -delete" // Run Terrajet generator -//go:generate go run -tags generate ../cmd/generator/main.go .. +//go:generate go run -tags generate ../cmd/generator/main.go .. "${TERRAFORM_PROVIDER_SOURCE}" // Generate deepcopy methodsets and CRD manifests -//go:generate go run -tags generate sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile=../hack/boilerplate.go.txt paths=./... crd:trivialVersions=true,allowDangerousTypes=true,crdVersions=v1 output:artifacts:config=../package/crds +//go:generate go run -tags generate sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile=../hack/boilerplate.go.txt paths=./... crd:allowDangerousTypes=true,crdVersions=v1 output:artifacts:config=../package/crds // Generate crossplane-runtime methodsets (resource.Claim, etc) //go:generate go run -tags generate github.com/crossplane/crossplane-tools/cmd/angryjet generate-methodsets --header-file=../hack/boilerplate.go.txt ./... diff --git a/apis/metal/v1alpha1/zz_bgpsession_types.go b/apis/metal/v1alpha1/zz_bgpsession_types.go new file mode 100755 index 0000000..679ad35 --- /dev/null +++ b/apis/metal/v1alpha1/zz_bgpsession_types.go @@ -0,0 +1,96 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type BGPSessionObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + Status *string `json:"status,omitempty" tf:"status,omitempty"` +} + +type BGPSessionParameters struct { + + // ipv4 or ipv6 + // +kubebuilder:validation:Required + AddressFamily *string `json:"addressFamily" tf:"address_family,omitempty"` + + // Boolean flag to set the default route policy. False by default + // +kubebuilder:validation:Optional + DefaultRoute *bool `json:"defaultRoute,omitempty" tf:"default_route,omitempty"` + + // ID of device + // +kubebuilder:validation:Required + DeviceID *string `json:"deviceId" tf:"device_id,omitempty"` +} + +// BGPSessionSpec defines the desired state of BGPSession +type BGPSessionSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider BGPSessionParameters `json:"forProvider"` +} + +// BGPSessionStatus defines the observed state of BGPSession. +type BGPSessionStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider BGPSessionObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// BGPSession is the Schema for the BGPSessions API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type BGPSession struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec BGPSessionSpec `json:"spec"` + Status BGPSessionStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// BGPSessionList contains a list of BGPSessions +type BGPSessionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []BGPSession `json:"items"` +} + +// Repository type metadata. +var ( + BGPSession_Kind = "BGPSession" + BGPSession_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: BGPSession_Kind}.String() + BGPSession_KindAPIVersion = BGPSession_Kind + "." + CRDGroupVersion.String() + BGPSession_GroupVersionKind = CRDGroupVersion.WithKind(BGPSession_Kind) +) + +func init() { + SchemeBuilder.Register(&BGPSession{}, &BGPSessionList{}) +} diff --git a/apis/metal/v1alpha1/zz_connection_types.go b/apis/metal/v1alpha1/zz_connection_types.go new file mode 100755 index 0000000..5bcbc90 --- /dev/null +++ b/apis/metal/v1alpha1/zz_connection_types.go @@ -0,0 +1,192 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ConnectionObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + Ports []PortsObservation `json:"ports,omitempty" tf:"ports,omitempty"` + + ServiceTokens []ServiceTokensObservation `json:"serviceTokens,omitempty" tf:"service_tokens,omitempty"` + + Status *string `json:"status,omitempty" tf:"status,omitempty"` + + Token *string `json:"token,omitempty" tf:"token,omitempty"` +} + +type ConnectionParameters struct { + + // Description of the connection resource + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // Facility where the connection will be created + // +kubebuilder:validation:Optional + Facility *string `json:"facility,omitempty" tf:"facility,omitempty"` + + // Metro where the connection will be created + // +kubebuilder:validation:Optional + Metro *string `json:"metro,omitempty" tf:"metro,omitempty"` + + // Mode for connections in IBX facilities with the dedicated type - standard or tunnel + // +kubebuilder:validation:Optional + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` + + // Name of the connection resource + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` + + // ID of the organization responsible for the connection. Applicable with type "dedicated" + // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Organization + // +kubebuilder:validation:Optional + OrganizationID *string `json:"organizationId,omitempty" tf:"organization_id,omitempty"` + + // +kubebuilder:validation:Optional + OrganizationIDRef *v1.Reference `json:"organizationIdRef,omitempty" tf:"-"` + + // +kubebuilder:validation:Optional + OrganizationIDSelector *v1.Selector `json:"organizationIdSelector,omitempty" tf:"-"` + + // ID of the project where the connection is scoped to. Required with type "shared" + // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Project + // +kubebuilder:validation:Optional + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` + + // +kubebuilder:validation:Optional + ProjectIDRef *v1.Reference `json:"projectIdRef,omitempty" tf:"-"` + + // +kubebuilder:validation:Optional + ProjectIDSelector *v1.Selector `json:"projectIdSelector,omitempty" tf:"-"` + + // Connection redundancy - redundant or primary + // +kubebuilder:validation:Required + Redundancy *string `json:"redundancy" tf:"redundancy,omitempty"` + + // Only used with shared connection. Type of service token to use for the connection, a_side or z_side + // +kubebuilder:validation:Optional + ServiceTokenType *string `json:"serviceTokenType,omitempty" tf:"service_token_type,omitempty"` + + // Port speed. Allowed values are 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps + // +kubebuilder:validation:Required + Speed *string `json:"speed" tf:"speed,omitempty"` + + // Tags attached to the connection + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // Connection type - dedicated or shared + // +kubebuilder:validation:Required + Type *string `json:"type" tf:"type,omitempty"` + + // Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection + // +kubebuilder:validation:Optional + Vlans []*float64 `json:"vlans,omitempty" tf:"vlans,omitempty"` +} + +type PortsObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + LinkStatus *string `json:"linkStatus,omitempty" tf:"link_status,omitempty"` + + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + Role *string `json:"role,omitempty" tf:"role,omitempty"` + + Speed *float64 `json:"speed,omitempty" tf:"speed,omitempty"` + + Status *string `json:"status,omitempty" tf:"status,omitempty"` + + VirtualCircuitIds []*string `json:"virtualCircuitIds,omitempty" tf:"virtual_circuit_ids,omitempty"` +} + +type PortsParameters struct { +} + +type ServiceTokensObservation struct { + ExpiresAt *string `json:"expiresAt,omitempty" tf:"expires_at,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + MaxAllowedSpeed *string `json:"maxAllowedSpeed,omitempty" tf:"max_allowed_speed,omitempty"` + + Role *string `json:"role,omitempty" tf:"role,omitempty"` + + State *string `json:"state,omitempty" tf:"state,omitempty"` + + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type ServiceTokensParameters struct { +} + +// ConnectionSpec defines the desired state of Connection +type ConnectionSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ConnectionParameters `json:"forProvider"` +} + +// ConnectionStatus defines the observed state of Connection. +type ConnectionStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ConnectionObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Connection is the Schema for the Connections API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type Connection struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec ConnectionSpec `json:"spec"` + Status ConnectionStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ConnectionList contains a list of Connections +type ConnectionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Connection `json:"items"` +} + +// Repository type metadata. +var ( + Connection_Kind = "Connection" + Connection_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Connection_Kind}.String() + Connection_KindAPIVersion = Connection_Kind + "." + CRDGroupVersion.String() + Connection_GroupVersionKind = CRDGroupVersion.WithKind(Connection_Kind) +) + +func init() { + SchemeBuilder.Register(&Connection{}, &ConnectionList{}) +} diff --git a/apis/metal/v1alpha1/zz_device_types.go b/apis/metal/v1alpha1/zz_device_types.go new file mode 100755 index 0000000..869d39c --- /dev/null +++ b/apis/metal/v1alpha1/zz_device_types.go @@ -0,0 +1,268 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type DeviceObservation struct { + AccessPrivateIPv4 *string `json:"accessPrivateIpv4,omitempty" tf:"access_private_ipv4,omitempty"` + + AccessPublicIPv4 *string `json:"accessPublicIpv4,omitempty" tf:"access_public_ipv4,omitempty"` + + AccessPublicIPv6 *string `json:"accessPublicIpv6,omitempty" tf:"access_public_ipv6,omitempty"` + + Created *string `json:"created,omitempty" tf:"created,omitempty"` + + DeployedFacility *string `json:"deployedFacility,omitempty" tf:"deployed_facility,omitempty"` + + DeployedHardwareReservationID *string `json:"deployedHardwareReservationId,omitempty" tf:"deployed_hardware_reservation_id,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + Locked *bool `json:"locked,omitempty" tf:"locked,omitempty"` + + Network []NetworkObservation `json:"network,omitempty" tf:"network,omitempty"` + + NetworkType *string `json:"networkType,omitempty" tf:"network_type,omitempty"` + + Ports []DevicePortsObservation `json:"ports,omitempty" tf:"ports,omitempty"` + + SSHKeyIds []*string `json:"sshKeyIds,omitempty" tf:"ssh_key_ids,omitempty"` + + State *string `json:"state,omitempty" tf:"state,omitempty"` + + Updated *string `json:"updated,omitempty" tf:"updated,omitempty"` +} + +type DeviceParameters struct { + + // If true, a device with OS custom_ipxe will + // +kubebuilder:validation:Optional + AlwaysPxe *bool `json:"alwaysPxe,omitempty" tf:"always_pxe,omitempty"` + + // monthly or hourly + // +kubebuilder:validation:Optional + BillingCycle *string `json:"billingCycle,omitempty" tf:"billing_cycle,omitempty"` + + // A string of the desired Custom Data for the device + // +kubebuilder:validation:Optional + CustomDataSecretRef *v1.SecretKeySelector `json:"customDataSecretRef,omitempty" tf:"-"` + + // Description string for the device + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // List of facility codes with deployment preferences. Equinix Metal API will go through the list and will deploy your device to first facility with free capacity. List items must be facility codes or any (a wildcard). To find the facility code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), set your API auth token in the top of the page and see JSON from the API response. Conflicts with metro + // +kubebuilder:validation:Optional + Facilities []*string `json:"facilities,omitempty" tf:"facilities,omitempty"` + + // Delete device even if it has volumes attached. Only applies for destroy action + // +kubebuilder:validation:Optional + ForceDetachVolumes *bool `json:"forceDetachVolumes,omitempty" tf:"force_detach_volumes,omitempty"` + + // The UUID of the hardware reservation where you want this device deployed, or next-available if you want to pick your next available reservation automatically + // +kubebuilder:validation:Optional + HardwareReservationID *string `json:"hardwareReservationId,omitempty" tf:"hardware_reservation_id,omitempty"` + + // The device hostname used in deployments taking advantage of Layer3 DHCP or metadata service configuration. + // +kubebuilder:validation:Optional + Hostname *string `json:"hostname,omitempty" tf:"hostname,omitempty"` + + // A list of IP address types for the device (structure is documented below) + // +kubebuilder:validation:Optional + IPAddress []IPAddressParameters `json:"ipAddress,omitempty" tf:"ip_address,omitempty"` + + // URL pointing to a hosted iPXE script. More + // +kubebuilder:validation:Optional + IpxeScriptURL *string `json:"ipxeScriptUrl,omitempty" tf:"ipxe_script_url,omitempty"` + + // Metro area for the new device. Conflicts with facilities + // +kubebuilder:validation:Optional + Metro *string `json:"metro,omitempty" tf:"metro,omitempty"` + + // The operating system slug. To find the slug, or visit [Operating Systems API docs](https://metal.equinix.com/developers/api/operatingsystems), set your API auth token in the top of the page and see JSON from the API response + // +kubebuilder:validation:Required + OperatingSystem *string `json:"operatingSystem" tf:"operating_system,omitempty"` + + // The device plan slug. To find the plan slug, visit [Device plans API docs](https://metal.equinix.com/developers/api/plans), set your auth token in the top of the page and see JSON from the API response + // +kubebuilder:validation:Required + Plan *string `json:"plan" tf:"plan,omitempty"` + + // The ID of the project in which to create the device + // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Project + // +kubebuilder:validation:Optional + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` + + // +kubebuilder:validation:Optional + ProjectIDRef *v1.Reference `json:"projectIdRef,omitempty" tf:"-"` + + // +kubebuilder:validation:Optional + ProjectIDSelector *v1.Selector `json:"projectIdSelector,omitempty" tf:"-"` + + // Array of IDs of the project SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed project SSH keys (and any user_ssh_key_ids) will be added. Project SSH keys can be created with the [equinix_metal_project_ssh_key](equinix_metal_project_ssh_key.md) resource + // +kubebuilder:validation:Optional + ProjectSSHKeyIds []*string `json:"projectSshKeyIds,omitempty" tf:"project_ssh_key_ids,omitempty"` + + // +kubebuilder:validation:Optional + Reinstall []ReinstallParameters `json:"reinstall,omitempty" tf:"reinstall,omitempty"` + + // JSON for custom partitioning. Only usable on reserved hardware. More information in in the [Custom Partitioning and RAID](https://metal.equinix.com/developers/docs/servers/custom-partitioning-raid/) doc + // +kubebuilder:validation:Optional + Storage *string `json:"storage,omitempty" tf:"storage,omitempty"` + + // Tags attached to the device + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // Timestamp for device termination. For example "2021-09-03T16:32:00+03:00". If you don't supply timezone info, timestamp is assumed to be in UTC. + // +kubebuilder:validation:Optional + TerminationTime *string `json:"terminationTime,omitempty" tf:"termination_time,omitempty"` + + // A string of the desired User Data for the device + // +kubebuilder:validation:Optional + UserDataSecretRef *v1.SecretKeySelector `json:"userDataSecretRef,omitempty" tf:"-"` + + // Array of IDs of the user SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed user SSH keys (and any project_ssh_key_ids) will be added. User SSH keys can be created with the [equinix_metal_ssh_key](equinix_metal_ssh_key.md) resource + // +kubebuilder:validation:Optional + UserSSHKeyIds []*string `json:"userSshKeyIds,omitempty" tf:"user_ssh_key_ids,omitempty"` + + // Only used for devices in reserved hardware. If set, the deletion of this device will block until the hardware reservation is marked provisionable (about 4 minutes in August 2019) + // +kubebuilder:validation:Optional + WaitForReservationDeprovision *bool `json:"waitForReservationDeprovision,omitempty" tf:"wait_for_reservation_deprovision,omitempty"` +} + +type DevicePortsObservation struct { + Bonded *bool `json:"bonded,omitempty" tf:"bonded,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + Mac *string `json:"mac,omitempty" tf:"mac,omitempty"` + + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type DevicePortsParameters struct { +} + +type IPAddressObservation struct { +} + +type IPAddressParameters struct { + + // CIDR suffix for IP block assigned to this device + // +kubebuilder:validation:Optional + Cidr *float64 `json:"cidr,omitempty" tf:"cidr,omitempty"` + + // IDs of reservations to pick the blocks from + // +kubebuilder:validation:Optional + ReservationIds []*string `json:"reservationIds,omitempty" tf:"reservation_ids,omitempty"` + + // one of public_ipv4,private_ipv4,public_ipv6 + // +kubebuilder:validation:Required + Type *string `json:"type" tf:"type,omitempty"` +} + +type NetworkObservation struct { + Address *string `json:"address,omitempty" tf:"address,omitempty"` + + Cidr *float64 `json:"cidr,omitempty" tf:"cidr,omitempty"` + + Family *float64 `json:"family,omitempty" tf:"family,omitempty"` + + Gateway *string `json:"gateway,omitempty" tf:"gateway,omitempty"` + + Public *bool `json:"public,omitempty" tf:"public,omitempty"` +} + +type NetworkParameters struct { +} + +type ReinstallObservation struct { +} + +type ReinstallParameters struct { + + // Whether the OS disk should be filled with `00h` bytes before reinstall + // +kubebuilder:validation:Optional + DeprovisionFast *bool `json:"deprovisionFast,omitempty" tf:"deprovision_fast,omitempty"` + + // Whether the device should be reinstalled instead of destroyed + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Whether the non-OS disks should be kept or wiped during reinstall + // +kubebuilder:validation:Optional + PreserveData *bool `json:"preserveData,omitempty" tf:"preserve_data,omitempty"` +} + +// DeviceSpec defines the desired state of Device +type DeviceSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider DeviceParameters `json:"forProvider"` +} + +// DeviceStatus defines the observed state of Device. +type DeviceStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider DeviceObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Device is the Schema for the Devices API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type Device struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec DeviceSpec `json:"spec"` + Status DeviceStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// DeviceList contains a list of Devices +type DeviceList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Device `json:"items"` +} + +// Repository type metadata. +var ( + Device_Kind = "Device" + Device_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Device_Kind}.String() + Device_KindAPIVersion = Device_Kind + "." + CRDGroupVersion.String() + Device_GroupVersionKind = CRDGroupVersion.WithKind(Device_Kind) +) + +func init() { + SchemeBuilder.Register(&Device{}, &DeviceList{}) +} diff --git a/apis/metal/v1alpha1/zz_devicenetworktype_types.go b/apis/metal/v1alpha1/zz_devicenetworktype_types.go new file mode 100755 index 0000000..fe88ef8 --- /dev/null +++ b/apis/metal/v1alpha1/zz_devicenetworktype_types.go @@ -0,0 +1,90 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type DeviceNetworkTypeObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type DeviceNetworkTypeParameters struct { + + // The ID of the device on which the network type should be set + // +kubebuilder:validation:Required + DeviceID *string `json:"deviceId" tf:"device_id,omitempty"` + + // Network type to set. Must be one of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded + // +kubebuilder:validation:Required + Type *string `json:"type" tf:"type,omitempty"` +} + +// DeviceNetworkTypeSpec defines the desired state of DeviceNetworkType +type DeviceNetworkTypeSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider DeviceNetworkTypeParameters `json:"forProvider"` +} + +// DeviceNetworkTypeStatus defines the observed state of DeviceNetworkType. +type DeviceNetworkTypeStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider DeviceNetworkTypeObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// DeviceNetworkType is the Schema for the DeviceNetworkTypes API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type DeviceNetworkType struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec DeviceNetworkTypeSpec `json:"spec"` + Status DeviceNetworkTypeStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// DeviceNetworkTypeList contains a list of DeviceNetworkTypes +type DeviceNetworkTypeList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []DeviceNetworkType `json:"items"` +} + +// Repository type metadata. +var ( + DeviceNetworkType_Kind = "DeviceNetworkType" + DeviceNetworkType_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: DeviceNetworkType_Kind}.String() + DeviceNetworkType_KindAPIVersion = DeviceNetworkType_Kind + "." + CRDGroupVersion.String() + DeviceNetworkType_GroupVersionKind = CRDGroupVersion.WithKind(DeviceNetworkType_Kind) +) + +func init() { + SchemeBuilder.Register(&DeviceNetworkType{}, &DeviceNetworkTypeList{}) +} diff --git a/apis/metal/v1alpha1/zz_gateway_types.go b/apis/metal/v1alpha1/zz_gateway_types.go new file mode 100755 index 0000000..7136cd7 --- /dev/null +++ b/apis/metal/v1alpha1/zz_gateway_types.go @@ -0,0 +1,102 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type GatewayObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + State *string `json:"state,omitempty" tf:"state,omitempty"` + + VrfID *string `json:"vrfId,omitempty" tf:"vrf_id,omitempty"` +} + +type GatewayParameters struct { + + // UUID of the Public or VRF IP Reservation to associate, must be in the same metro as the VLAN + // +kubebuilder:validation:Optional + IPReservationID *string `json:"ipReservationId,omitempty" tf:"ip_reservation_id,omitempty"` + + // Size of the private IPv4 subnet to create for this gateway, one of [8 16 32 64 128] + // +kubebuilder:validation:Optional + PrivateIPv4SubnetSize *float64 `json:"privateIpv4SubnetSize,omitempty" tf:"private_ipv4_subnet_size,omitempty"` + + // UUID of the Project where the Gateway is scoped to + // +kubebuilder:validation:Required + ProjectID *string `json:"projectId" tf:"project_id,omitempty"` + + // UUID of the VLAN to associate + // +kubebuilder:validation:Required + VlanID *string `json:"vlanId" tf:"vlan_id,omitempty"` +} + +// GatewaySpec defines the desired state of Gateway +type GatewaySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider GatewayParameters `json:"forProvider"` +} + +// GatewayStatus defines the observed state of Gateway. +type GatewayStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider GatewayObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Gateway is the Schema for the Gateways API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type Gateway struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec GatewaySpec `json:"spec"` + Status GatewayStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// GatewayList contains a list of Gateways +type GatewayList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Gateway `json:"items"` +} + +// Repository type metadata. +var ( + Gateway_Kind = "Gateway" + Gateway_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Gateway_Kind}.String() + Gateway_KindAPIVersion = Gateway_Kind + "." + CRDGroupVersion.String() + Gateway_GroupVersionKind = CRDGroupVersion.WithKind(Gateway_Kind) +) + +func init() { + SchemeBuilder.Register(&Gateway{}, &GatewayList{}) +} diff --git a/apis/metal/v1alpha1/zz_generated.deepcopy.go b/apis/metal/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..d89377c --- /dev/null +++ b/apis/metal/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,4135 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "github.com/crossplane/crossplane-runtime/apis/common/v1" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AddressObservation) DeepCopyInto(out *AddressObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressObservation. +func (in *AddressObservation) DeepCopy() *AddressObservation { + if in == nil { + return nil + } + out := new(AddressObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AddressParameters) DeepCopyInto(out *AddressParameters) { + *out = *in + if in.Address != nil { + in, out := &in.Address, &out.Address + *out = new(string) + **out = **in + } + if in.City != nil { + in, out := &in.City, &out.City + *out = new(string) + **out = **in + } + if in.Country != nil { + in, out := &in.Country, &out.Country + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } + if in.ZipCode != nil { + in, out := &in.ZipCode, &out.ZipCode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressParameters. +func (in *AddressParameters) DeepCopy() *AddressParameters { + if in == nil { + return nil + } + out := new(AddressParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPConfigObservation) DeepCopyInto(out *BGPConfigObservation) { + *out = *in + if in.MaxPrefix != nil { + in, out := &in.MaxPrefix, &out.MaxPrefix + *out = new(float64) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPConfigObservation. +func (in *BGPConfigObservation) DeepCopy() *BGPConfigObservation { + if in == nil { + return nil + } + out := new(BGPConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPConfigParameters) DeepCopyInto(out *BGPConfigParameters) { + *out = *in + if in.Asn != nil { + in, out := &in.Asn, &out.Asn + *out = new(float64) + **out = **in + } + if in.DeploymentType != nil { + in, out := &in.DeploymentType, &out.DeploymentType + *out = new(string) + **out = **in + } + if in.Md5SecretRef != nil { + in, out := &in.Md5SecretRef, &out.Md5SecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPConfigParameters. +func (in *BGPConfigParameters) DeepCopy() *BGPConfigParameters { + if in == nil { + return nil + } + out := new(BGPConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPSession) DeepCopyInto(out *BGPSession) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPSession. +func (in *BGPSession) DeepCopy() *BGPSession { + if in == nil { + return nil + } + out := new(BGPSession) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *BGPSession) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPSessionList) DeepCopyInto(out *BGPSessionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]BGPSession, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPSessionList. +func (in *BGPSessionList) DeepCopy() *BGPSessionList { + if in == nil { + return nil + } + out := new(BGPSessionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *BGPSessionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPSessionObservation) DeepCopyInto(out *BGPSessionObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPSessionObservation. +func (in *BGPSessionObservation) DeepCopy() *BGPSessionObservation { + if in == nil { + return nil + } + out := new(BGPSessionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPSessionParameters) DeepCopyInto(out *BGPSessionParameters) { + *out = *in + if in.AddressFamily != nil { + in, out := &in.AddressFamily, &out.AddressFamily + *out = new(string) + **out = **in + } + if in.DefaultRoute != nil { + in, out := &in.DefaultRoute, &out.DefaultRoute + *out = new(bool) + **out = **in + } + if in.DeviceID != nil { + in, out := &in.DeviceID, &out.DeviceID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPSessionParameters. +func (in *BGPSessionParameters) DeepCopy() *BGPSessionParameters { + if in == nil { + return nil + } + out := new(BGPSessionParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPSessionSpec) DeepCopyInto(out *BGPSessionSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPSessionSpec. +func (in *BGPSessionSpec) DeepCopy() *BGPSessionSpec { + if in == nil { + return nil + } + out := new(BGPSessionSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPSessionStatus) DeepCopyInto(out *BGPSessionStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPSessionStatus. +func (in *BGPSessionStatus) DeepCopy() *BGPSessionStatus { + if in == nil { + return nil + } + out := new(BGPSessionStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Connection) DeepCopyInto(out *Connection) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Connection. +func (in *Connection) DeepCopy() *Connection { + if in == nil { + return nil + } + out := new(Connection) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Connection) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionList) DeepCopyInto(out *ConnectionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Connection, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionList. +func (in *ConnectionList) DeepCopy() *ConnectionList { + if in == nil { + return nil + } + out := new(ConnectionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConnectionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionObservation) DeepCopyInto(out *ConnectionObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]PortsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceTokens != nil { + in, out := &in.ServiceTokens, &out.ServiceTokens + *out = make([]ServiceTokensObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } + if in.Token != nil { + in, out := &in.Token, &out.Token + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionObservation. +func (in *ConnectionObservation) DeepCopy() *ConnectionObservation { + if in == nil { + return nil + } + out := new(ConnectionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionParameters) DeepCopyInto(out *ConnectionParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Facility != nil { + in, out := &in.Facility, &out.Facility + *out = new(string) + **out = **in + } + if in.Metro != nil { + in, out := &in.Metro, &out.Metro + *out = new(string) + **out = **in + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OrganizationID != nil { + in, out := &in.OrganizationID, &out.OrganizationID + *out = new(string) + **out = **in + } + if in.OrganizationIDRef != nil { + in, out := &in.OrganizationIDRef, &out.OrganizationIDRef + *out = new(v1.Reference) + **out = **in + } + if in.OrganizationIDSelector != nil { + in, out := &in.OrganizationIDSelector, &out.OrganizationIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.ProjectIDRef != nil { + in, out := &in.ProjectIDRef, &out.ProjectIDRef + *out = new(v1.Reference) + **out = **in + } + if in.ProjectIDSelector != nil { + in, out := &in.ProjectIDSelector, &out.ProjectIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + if in.Redundancy != nil { + in, out := &in.Redundancy, &out.Redundancy + *out = new(string) + **out = **in + } + if in.ServiceTokenType != nil { + in, out := &in.ServiceTokenType, &out.ServiceTokenType + *out = new(string) + **out = **in + } + if in.Speed != nil { + in, out := &in.Speed, &out.Speed + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Vlans != nil { + in, out := &in.Vlans, &out.Vlans + *out = make([]*float64, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(float64) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionParameters. +func (in *ConnectionParameters) DeepCopy() *ConnectionParameters { + if in == nil { + return nil + } + out := new(ConnectionParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionSpec) DeepCopyInto(out *ConnectionSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionSpec. +func (in *ConnectionSpec) DeepCopy() *ConnectionSpec { + if in == nil { + return nil + } + out := new(ConnectionSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionStatus) DeepCopyInto(out *ConnectionStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionStatus. +func (in *ConnectionStatus) DeepCopy() *ConnectionStatus { + if in == nil { + return nil + } + out := new(ConnectionStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Device) DeepCopyInto(out *Device) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Device. +func (in *Device) DeepCopy() *Device { + if in == nil { + return nil + } + out := new(Device) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Device) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceList) DeepCopyInto(out *DeviceList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Device, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceList. +func (in *DeviceList) DeepCopy() *DeviceList { + if in == nil { + return nil + } + out := new(DeviceList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeviceList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceNetworkType) DeepCopyInto(out *DeviceNetworkType) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceNetworkType. +func (in *DeviceNetworkType) DeepCopy() *DeviceNetworkType { + if in == nil { + return nil + } + out := new(DeviceNetworkType) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeviceNetworkType) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceNetworkTypeList) DeepCopyInto(out *DeviceNetworkTypeList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DeviceNetworkType, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceNetworkTypeList. +func (in *DeviceNetworkTypeList) DeepCopy() *DeviceNetworkTypeList { + if in == nil { + return nil + } + out := new(DeviceNetworkTypeList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeviceNetworkTypeList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceNetworkTypeObservation) DeepCopyInto(out *DeviceNetworkTypeObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceNetworkTypeObservation. +func (in *DeviceNetworkTypeObservation) DeepCopy() *DeviceNetworkTypeObservation { + if in == nil { + return nil + } + out := new(DeviceNetworkTypeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceNetworkTypeParameters) DeepCopyInto(out *DeviceNetworkTypeParameters) { + *out = *in + if in.DeviceID != nil { + in, out := &in.DeviceID, &out.DeviceID + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceNetworkTypeParameters. +func (in *DeviceNetworkTypeParameters) DeepCopy() *DeviceNetworkTypeParameters { + if in == nil { + return nil + } + out := new(DeviceNetworkTypeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceNetworkTypeSpec) DeepCopyInto(out *DeviceNetworkTypeSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceNetworkTypeSpec. +func (in *DeviceNetworkTypeSpec) DeepCopy() *DeviceNetworkTypeSpec { + if in == nil { + return nil + } + out := new(DeviceNetworkTypeSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceNetworkTypeStatus) DeepCopyInto(out *DeviceNetworkTypeStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceNetworkTypeStatus. +func (in *DeviceNetworkTypeStatus) DeepCopy() *DeviceNetworkTypeStatus { + if in == nil { + return nil + } + out := new(DeviceNetworkTypeStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceObservation) DeepCopyInto(out *DeviceObservation) { + *out = *in + if in.AccessPrivateIPv4 != nil { + in, out := &in.AccessPrivateIPv4, &out.AccessPrivateIPv4 + *out = new(string) + **out = **in + } + if in.AccessPublicIPv4 != nil { + in, out := &in.AccessPublicIPv4, &out.AccessPublicIPv4 + *out = new(string) + **out = **in + } + if in.AccessPublicIPv6 != nil { + in, out := &in.AccessPublicIPv6, &out.AccessPublicIPv6 + *out = new(string) + **out = **in + } + if in.Created != nil { + in, out := &in.Created, &out.Created + *out = new(string) + **out = **in + } + if in.DeployedFacility != nil { + in, out := &in.DeployedFacility, &out.DeployedFacility + *out = new(string) + **out = **in + } + if in.DeployedHardwareReservationID != nil { + in, out := &in.DeployedHardwareReservationID, &out.DeployedHardwareReservationID + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Locked != nil { + in, out := &in.Locked, &out.Locked + *out = new(bool) + **out = **in + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = make([]NetworkObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NetworkType != nil { + in, out := &in.NetworkType, &out.NetworkType + *out = new(string) + **out = **in + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]DevicePortsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SSHKeyIds != nil { + in, out := &in.SSHKeyIds, &out.SSHKeyIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } + if in.Updated != nil { + in, out := &in.Updated, &out.Updated + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceObservation. +func (in *DeviceObservation) DeepCopy() *DeviceObservation { + if in == nil { + return nil + } + out := new(DeviceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceParameters) DeepCopyInto(out *DeviceParameters) { + *out = *in + if in.AlwaysPxe != nil { + in, out := &in.AlwaysPxe, &out.AlwaysPxe + *out = new(bool) + **out = **in + } + if in.BillingCycle != nil { + in, out := &in.BillingCycle, &out.BillingCycle + *out = new(string) + **out = **in + } + if in.CustomDataSecretRef != nil { + in, out := &in.CustomDataSecretRef, &out.CustomDataSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Facilities != nil { + in, out := &in.Facilities, &out.Facilities + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ForceDetachVolumes != nil { + in, out := &in.ForceDetachVolumes, &out.ForceDetachVolumes + *out = new(bool) + **out = **in + } + if in.HardwareReservationID != nil { + in, out := &in.HardwareReservationID, &out.HardwareReservationID + *out = new(string) + **out = **in + } + if in.Hostname != nil { + in, out := &in.Hostname, &out.Hostname + *out = new(string) + **out = **in + } + if in.IPAddress != nil { + in, out := &in.IPAddress, &out.IPAddress + *out = make([]IPAddressParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IpxeScriptURL != nil { + in, out := &in.IpxeScriptURL, &out.IpxeScriptURL + *out = new(string) + **out = **in + } + if in.Metro != nil { + in, out := &in.Metro, &out.Metro + *out = new(string) + **out = **in + } + if in.OperatingSystem != nil { + in, out := &in.OperatingSystem, &out.OperatingSystem + *out = new(string) + **out = **in + } + if in.Plan != nil { + in, out := &in.Plan, &out.Plan + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.ProjectIDRef != nil { + in, out := &in.ProjectIDRef, &out.ProjectIDRef + *out = new(v1.Reference) + **out = **in + } + if in.ProjectIDSelector != nil { + in, out := &in.ProjectIDSelector, &out.ProjectIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + if in.ProjectSSHKeyIds != nil { + in, out := &in.ProjectSSHKeyIds, &out.ProjectSSHKeyIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Reinstall != nil { + in, out := &in.Reinstall, &out.Reinstall + *out = make([]ReinstallParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Storage != nil { + in, out := &in.Storage, &out.Storage + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TerminationTime != nil { + in, out := &in.TerminationTime, &out.TerminationTime + *out = new(string) + **out = **in + } + if in.UserDataSecretRef != nil { + in, out := &in.UserDataSecretRef, &out.UserDataSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } + if in.UserSSHKeyIds != nil { + in, out := &in.UserSSHKeyIds, &out.UserSSHKeyIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.WaitForReservationDeprovision != nil { + in, out := &in.WaitForReservationDeprovision, &out.WaitForReservationDeprovision + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceParameters. +func (in *DeviceParameters) DeepCopy() *DeviceParameters { + if in == nil { + return nil + } + out := new(DeviceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DevicePortsObservation) DeepCopyInto(out *DevicePortsObservation) { + *out = *in + if in.Bonded != nil { + in, out := &in.Bonded, &out.Bonded + *out = new(bool) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Mac != nil { + in, out := &in.Mac, &out.Mac + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DevicePortsObservation. +func (in *DevicePortsObservation) DeepCopy() *DevicePortsObservation { + if in == nil { + return nil + } + out := new(DevicePortsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DevicePortsParameters) DeepCopyInto(out *DevicePortsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DevicePortsParameters. +func (in *DevicePortsParameters) DeepCopy() *DevicePortsParameters { + if in == nil { + return nil + } + out := new(DevicePortsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceSpec) DeepCopyInto(out *DeviceSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceSpec. +func (in *DeviceSpec) DeepCopy() *DeviceSpec { + if in == nil { + return nil + } + out := new(DeviceSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceStatus) DeepCopyInto(out *DeviceStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceStatus. +func (in *DeviceStatus) DeepCopy() *DeviceStatus { + if in == nil { + return nil + } + out := new(DeviceStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Gateway) DeepCopyInto(out *Gateway) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Gateway. +func (in *Gateway) DeepCopy() *Gateway { + if in == nil { + return nil + } + out := new(Gateway) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Gateway) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayList) DeepCopyInto(out *GatewayList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Gateway, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayList. +func (in *GatewayList) DeepCopy() *GatewayList { + if in == nil { + return nil + } + out := new(GatewayList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GatewayList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayObservation) DeepCopyInto(out *GatewayObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } + if in.VrfID != nil { + in, out := &in.VrfID, &out.VrfID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayObservation. +func (in *GatewayObservation) DeepCopy() *GatewayObservation { + if in == nil { + return nil + } + out := new(GatewayObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayParameters) DeepCopyInto(out *GatewayParameters) { + *out = *in + if in.IPReservationID != nil { + in, out := &in.IPReservationID, &out.IPReservationID + *out = new(string) + **out = **in + } + if in.PrivateIPv4SubnetSize != nil { + in, out := &in.PrivateIPv4SubnetSize, &out.PrivateIPv4SubnetSize + *out = new(float64) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.VlanID != nil { + in, out := &in.VlanID, &out.VlanID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayParameters. +func (in *GatewayParameters) DeepCopy() *GatewayParameters { + if in == nil { + return nil + } + out := new(GatewayParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewaySpec) DeepCopyInto(out *GatewaySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewaySpec. +func (in *GatewaySpec) DeepCopy() *GatewaySpec { + if in == nil { + return nil + } + out := new(GatewaySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayStatus) DeepCopyInto(out *GatewayStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayStatus. +func (in *GatewayStatus) DeepCopy() *GatewayStatus { + if in == nil { + return nil + } + out := new(GatewayStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAddressObservation) DeepCopyInto(out *IPAddressObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAddressObservation. +func (in *IPAddressObservation) DeepCopy() *IPAddressObservation { + if in == nil { + return nil + } + out := new(IPAddressObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAddressParameters) DeepCopyInto(out *IPAddressParameters) { + *out = *in + if in.Cidr != nil { + in, out := &in.Cidr, &out.Cidr + *out = new(float64) + **out = **in + } + if in.ReservationIds != nil { + in, out := &in.ReservationIds, &out.ReservationIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAddressParameters. +func (in *IPAddressParameters) DeepCopy() *IPAddressParameters { + if in == nil { + return nil + } + out := new(IPAddressParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAttachment) DeepCopyInto(out *IPAttachment) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAttachment. +func (in *IPAttachment) DeepCopy() *IPAttachment { + if in == nil { + return nil + } + out := new(IPAttachment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IPAttachment) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAttachmentList) DeepCopyInto(out *IPAttachmentList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]IPAttachment, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAttachmentList. +func (in *IPAttachmentList) DeepCopy() *IPAttachmentList { + if in == nil { + return nil + } + out := new(IPAttachmentList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IPAttachmentList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAttachmentObservation) DeepCopyInto(out *IPAttachmentObservation) { + *out = *in + if in.Address != nil { + in, out := &in.Address, &out.Address + *out = new(string) + **out = **in + } + if in.AddressFamily != nil { + in, out := &in.AddressFamily, &out.AddressFamily + *out = new(float64) + **out = **in + } + if in.Cidr != nil { + in, out := &in.Cidr, &out.Cidr + *out = new(float64) + **out = **in + } + if in.Gateway != nil { + in, out := &in.Gateway, &out.Gateway + *out = new(string) + **out = **in + } + if in.Global != nil { + in, out := &in.Global, &out.Global + *out = new(bool) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Manageable != nil { + in, out := &in.Manageable, &out.Manageable + *out = new(bool) + **out = **in + } + if in.Management != nil { + in, out := &in.Management, &out.Management + *out = new(bool) + **out = **in + } + if in.Netmask != nil { + in, out := &in.Netmask, &out.Netmask + *out = new(string) + **out = **in + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.Public != nil { + in, out := &in.Public, &out.Public + *out = new(bool) + **out = **in + } + if in.VrfID != nil { + in, out := &in.VrfID, &out.VrfID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAttachmentObservation. +func (in *IPAttachmentObservation) DeepCopy() *IPAttachmentObservation { + if in == nil { + return nil + } + out := new(IPAttachmentObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAttachmentParameters) DeepCopyInto(out *IPAttachmentParameters) { + *out = *in + if in.CidrNotation != nil { + in, out := &in.CidrNotation, &out.CidrNotation + *out = new(string) + **out = **in + } + if in.DeviceID != nil { + in, out := &in.DeviceID, &out.DeviceID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAttachmentParameters. +func (in *IPAttachmentParameters) DeepCopy() *IPAttachmentParameters { + if in == nil { + return nil + } + out := new(IPAttachmentParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAttachmentSpec) DeepCopyInto(out *IPAttachmentSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAttachmentSpec. +func (in *IPAttachmentSpec) DeepCopy() *IPAttachmentSpec { + if in == nil { + return nil + } + out := new(IPAttachmentSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAttachmentStatus) DeepCopyInto(out *IPAttachmentStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAttachmentStatus. +func (in *IPAttachmentStatus) DeepCopy() *IPAttachmentStatus { + if in == nil { + return nil + } + out := new(IPAttachmentStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InstanceParametersObservation) DeepCopyInto(out *InstanceParametersObservation) { + *out = *in + if in.TermintationTime != nil { + in, out := &in.TermintationTime, &out.TermintationTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstanceParametersObservation. +func (in *InstanceParametersObservation) DeepCopy() *InstanceParametersObservation { + if in == nil { + return nil + } + out := new(InstanceParametersObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InstanceParametersParameters) DeepCopyInto(out *InstanceParametersParameters) { + *out = *in + if in.AlwaysPxe != nil { + in, out := &in.AlwaysPxe, &out.AlwaysPxe + *out = new(bool) + **out = **in + } + if in.BillingCycle != nil { + in, out := &in.BillingCycle, &out.BillingCycle + *out = new(string) + **out = **in + } + if in.Customdata != nil { + in, out := &in.Customdata, &out.Customdata + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Features != nil { + in, out := &in.Features, &out.Features + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Hostname != nil { + in, out := &in.Hostname, &out.Hostname + *out = new(string) + **out = **in + } + if in.IpxeScriptURL != nil { + in, out := &in.IpxeScriptURL, &out.IpxeScriptURL + *out = new(string) + **out = **in + } + if in.Locked != nil { + in, out := &in.Locked, &out.Locked + *out = new(bool) + **out = **in + } + if in.OperatingSystem != nil { + in, out := &in.OperatingSystem, &out.OperatingSystem + *out = new(string) + **out = **in + } + if in.Plan != nil { + in, out := &in.Plan, &out.Plan + *out = new(string) + **out = **in + } + if in.ProjectSSHKeys != nil { + in, out := &in.ProjectSSHKeys, &out.ProjectSSHKeys + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.UserSSHKeys != nil { + in, out := &in.UserSSHKeys, &out.UserSSHKeys + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Userdata != nil { + in, out := &in.Userdata, &out.Userdata + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstanceParametersParameters. +func (in *InstanceParametersParameters) DeepCopy() *InstanceParametersParameters { + if in == nil { + return nil + } + out := new(InstanceParametersParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkObservation) DeepCopyInto(out *NetworkObservation) { + *out = *in + if in.Address != nil { + in, out := &in.Address, &out.Address + *out = new(string) + **out = **in + } + if in.Cidr != nil { + in, out := &in.Cidr, &out.Cidr + *out = new(float64) + **out = **in + } + if in.Family != nil { + in, out := &in.Family, &out.Family + *out = new(float64) + **out = **in + } + if in.Gateway != nil { + in, out := &in.Gateway, &out.Gateway + *out = new(string) + **out = **in + } + if in.Public != nil { + in, out := &in.Public, &out.Public + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkObservation. +func (in *NetworkObservation) DeepCopy() *NetworkObservation { + if in == nil { + return nil + } + out := new(NetworkObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkParameters) DeepCopyInto(out *NetworkParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkParameters. +func (in *NetworkParameters) DeepCopy() *NetworkParameters { + if in == nil { + return nil + } + out := new(NetworkParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Organization) DeepCopyInto(out *Organization) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Organization. +func (in *Organization) DeepCopy() *Organization { + if in == nil { + return nil + } + out := new(Organization) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Organization) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationList) DeepCopyInto(out *OrganizationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Organization, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationList. +func (in *OrganizationList) DeepCopy() *OrganizationList { + if in == nil { + return nil + } + out := new(OrganizationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OrganizationList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationObservation) DeepCopyInto(out *OrganizationObservation) { + *out = *in + if in.Created != nil { + in, out := &in.Created, &out.Created + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Updated != nil { + in, out := &in.Updated, &out.Updated + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationObservation. +func (in *OrganizationObservation) DeepCopy() *OrganizationObservation { + if in == nil { + return nil + } + out := new(OrganizationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationParameters) DeepCopyInto(out *OrganizationParameters) { + *out = *in + if in.Address != nil { + in, out := &in.Address, &out.Address + *out = make([]AddressParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Logo != nil { + in, out := &in.Logo, &out.Logo + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Twitter != nil { + in, out := &in.Twitter, &out.Twitter + *out = new(string) + **out = **in + } + if in.Website != nil { + in, out := &in.Website, &out.Website + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationParameters. +func (in *OrganizationParameters) DeepCopy() *OrganizationParameters { + if in == nil { + return nil + } + out := new(OrganizationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSpec) DeepCopyInto(out *OrganizationSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSpec. +func (in *OrganizationSpec) DeepCopy() *OrganizationSpec { + if in == nil { + return nil + } + out := new(OrganizationSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationStatus) DeepCopyInto(out *OrganizationStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationStatus. +func (in *OrganizationStatus) DeepCopy() *OrganizationStatus { + if in == nil { + return nil + } + out := new(OrganizationStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Port) DeepCopyInto(out *Port) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Port. +func (in *Port) DeepCopy() *Port { + if in == nil { + return nil + } + out := new(Port) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Port) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortList) DeepCopyInto(out *PortList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Port, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortList. +func (in *PortList) DeepCopy() *PortList { + if in == nil { + return nil + } + out := new(PortList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PortList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortObservation) DeepCopyInto(out *PortObservation) { + *out = *in + if in.BondID != nil { + in, out := &in.BondID, &out.BondID + *out = new(string) + **out = **in + } + if in.BondName != nil { + in, out := &in.BondName, &out.BondName + *out = new(string) + **out = **in + } + if in.DisbondSupported != nil { + in, out := &in.DisbondSupported, &out.DisbondSupported + *out = new(bool) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Mac != nil { + in, out := &in.Mac, &out.Mac + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NetworkType != nil { + in, out := &in.NetworkType, &out.NetworkType + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortObservation. +func (in *PortObservation) DeepCopy() *PortObservation { + if in == nil { + return nil + } + out := new(PortObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortParameters) DeepCopyInto(out *PortParameters) { + *out = *in + if in.Bonded != nil { + in, out := &in.Bonded, &out.Bonded + *out = new(bool) + **out = **in + } + if in.Layer2 != nil { + in, out := &in.Layer2, &out.Layer2 + *out = new(bool) + **out = **in + } + if in.NativeVlanID != nil { + in, out := &in.NativeVlanID, &out.NativeVlanID + *out = new(string) + **out = **in + } + if in.PortID != nil { + in, out := &in.PortID, &out.PortID + *out = new(string) + **out = **in + } + if in.ResetOnDelete != nil { + in, out := &in.ResetOnDelete, &out.ResetOnDelete + *out = new(bool) + **out = **in + } + if in.VlanIds != nil { + in, out := &in.VlanIds, &out.VlanIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.VxlanIds != nil { + in, out := &in.VxlanIds, &out.VxlanIds + *out = make([]*float64, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(float64) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortParameters. +func (in *PortParameters) DeepCopy() *PortParameters { + if in == nil { + return nil + } + out := new(PortParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortSpec) DeepCopyInto(out *PortSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortSpec. +func (in *PortSpec) DeepCopy() *PortSpec { + if in == nil { + return nil + } + out := new(PortSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortStatus) DeepCopyInto(out *PortStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortStatus. +func (in *PortStatus) DeepCopy() *PortStatus { + if in == nil { + return nil + } + out := new(PortStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortVlanAttachment) DeepCopyInto(out *PortVlanAttachment) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortVlanAttachment. +func (in *PortVlanAttachment) DeepCopy() *PortVlanAttachment { + if in == nil { + return nil + } + out := new(PortVlanAttachment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PortVlanAttachment) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortVlanAttachmentList) DeepCopyInto(out *PortVlanAttachmentList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PortVlanAttachment, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortVlanAttachmentList. +func (in *PortVlanAttachmentList) DeepCopy() *PortVlanAttachmentList { + if in == nil { + return nil + } + out := new(PortVlanAttachmentList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PortVlanAttachmentList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortVlanAttachmentObservation) DeepCopyInto(out *PortVlanAttachmentObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.PortID != nil { + in, out := &in.PortID, &out.PortID + *out = new(string) + **out = **in + } + if in.VlanID != nil { + in, out := &in.VlanID, &out.VlanID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortVlanAttachmentObservation. +func (in *PortVlanAttachmentObservation) DeepCopy() *PortVlanAttachmentObservation { + if in == nil { + return nil + } + out := new(PortVlanAttachmentObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortVlanAttachmentParameters) DeepCopyInto(out *PortVlanAttachmentParameters) { + *out = *in + if in.DeviceID != nil { + in, out := &in.DeviceID, &out.DeviceID + *out = new(string) + **out = **in + } + if in.ForceBond != nil { + in, out := &in.ForceBond, &out.ForceBond + *out = new(bool) + **out = **in + } + if in.Native != nil { + in, out := &in.Native, &out.Native + *out = new(bool) + **out = **in + } + if in.PortName != nil { + in, out := &in.PortName, &out.PortName + *out = new(string) + **out = **in + } + if in.VlanVnid != nil { + in, out := &in.VlanVnid, &out.VlanVnid + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortVlanAttachmentParameters. +func (in *PortVlanAttachmentParameters) DeepCopy() *PortVlanAttachmentParameters { + if in == nil { + return nil + } + out := new(PortVlanAttachmentParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortVlanAttachmentSpec) DeepCopyInto(out *PortVlanAttachmentSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortVlanAttachmentSpec. +func (in *PortVlanAttachmentSpec) DeepCopy() *PortVlanAttachmentSpec { + if in == nil { + return nil + } + out := new(PortVlanAttachmentSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortVlanAttachmentStatus) DeepCopyInto(out *PortVlanAttachmentStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortVlanAttachmentStatus. +func (in *PortVlanAttachmentStatus) DeepCopy() *PortVlanAttachmentStatus { + if in == nil { + return nil + } + out := new(PortVlanAttachmentStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortsObservation) DeepCopyInto(out *PortsObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.LinkStatus != nil { + in, out := &in.LinkStatus, &out.LinkStatus + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Role != nil { + in, out := &in.Role, &out.Role + *out = new(string) + **out = **in + } + if in.Speed != nil { + in, out := &in.Speed, &out.Speed + *out = new(float64) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } + if in.VirtualCircuitIds != nil { + in, out := &in.VirtualCircuitIds, &out.VirtualCircuitIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsObservation. +func (in *PortsObservation) DeepCopy() *PortsObservation { + if in == nil { + return nil + } + out := new(PortsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortsParameters) DeepCopyInto(out *PortsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsParameters. +func (in *PortsParameters) DeepCopy() *PortsParameters { + if in == nil { + return nil + } + out := new(PortsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Project) DeepCopyInto(out *Project) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Project. +func (in *Project) DeepCopy() *Project { + if in == nil { + return nil + } + out := new(Project) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Project) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectAPIKey) DeepCopyInto(out *ProjectAPIKey) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectAPIKey. +func (in *ProjectAPIKey) DeepCopy() *ProjectAPIKey { + if in == nil { + return nil + } + out := new(ProjectAPIKey) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ProjectAPIKey) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectAPIKeyList) DeepCopyInto(out *ProjectAPIKeyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ProjectAPIKey, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectAPIKeyList. +func (in *ProjectAPIKeyList) DeepCopy() *ProjectAPIKeyList { + if in == nil { + return nil + } + out := new(ProjectAPIKeyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ProjectAPIKeyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectAPIKeyObservation) DeepCopyInto(out *ProjectAPIKeyObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectAPIKeyObservation. +func (in *ProjectAPIKeyObservation) DeepCopy() *ProjectAPIKeyObservation { + if in == nil { + return nil + } + out := new(ProjectAPIKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectAPIKeyParameters) DeepCopyInto(out *ProjectAPIKeyParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.ReadOnly != nil { + in, out := &in.ReadOnly, &out.ReadOnly + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectAPIKeyParameters. +func (in *ProjectAPIKeyParameters) DeepCopy() *ProjectAPIKeyParameters { + if in == nil { + return nil + } + out := new(ProjectAPIKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectAPIKeySpec) DeepCopyInto(out *ProjectAPIKeySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectAPIKeySpec. +func (in *ProjectAPIKeySpec) DeepCopy() *ProjectAPIKeySpec { + if in == nil { + return nil + } + out := new(ProjectAPIKeySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectAPIKeyStatus) DeepCopyInto(out *ProjectAPIKeyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectAPIKeyStatus. +func (in *ProjectAPIKeyStatus) DeepCopy() *ProjectAPIKeyStatus { + if in == nil { + return nil + } + out := new(ProjectAPIKeyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectList) DeepCopyInto(out *ProjectList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Project, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectList. +func (in *ProjectList) DeepCopy() *ProjectList { + if in == nil { + return nil + } + out := new(ProjectList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ProjectList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectObservation) DeepCopyInto(out *ProjectObservation) { + *out = *in + if in.BGPConfig != nil { + in, out := &in.BGPConfig, &out.BGPConfig + *out = make([]BGPConfigObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Created != nil { + in, out := &in.Created, &out.Created + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Updated != nil { + in, out := &in.Updated, &out.Updated + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectObservation. +func (in *ProjectObservation) DeepCopy() *ProjectObservation { + if in == nil { + return nil + } + out := new(ProjectObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectParameters) DeepCopyInto(out *ProjectParameters) { + *out = *in + if in.BGPConfig != nil { + in, out := &in.BGPConfig, &out.BGPConfig + *out = make([]BGPConfigParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.BackendTransfer != nil { + in, out := &in.BackendTransfer, &out.BackendTransfer + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OrganizationID != nil { + in, out := &in.OrganizationID, &out.OrganizationID + *out = new(string) + **out = **in + } + if in.OrganizationIDRef != nil { + in, out := &in.OrganizationIDRef, &out.OrganizationIDRef + *out = new(v1.Reference) + **out = **in + } + if in.OrganizationIDSelector != nil { + in, out := &in.OrganizationIDSelector, &out.OrganizationIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + if in.PaymentMethodID != nil { + in, out := &in.PaymentMethodID, &out.PaymentMethodID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectParameters. +func (in *ProjectParameters) DeepCopy() *ProjectParameters { + if in == nil { + return nil + } + out := new(ProjectParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectSSHKey) DeepCopyInto(out *ProjectSSHKey) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectSSHKey. +func (in *ProjectSSHKey) DeepCopy() *ProjectSSHKey { + if in == nil { + return nil + } + out := new(ProjectSSHKey) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ProjectSSHKey) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectSSHKeyList) DeepCopyInto(out *ProjectSSHKeyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ProjectSSHKey, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectSSHKeyList. +func (in *ProjectSSHKeyList) DeepCopy() *ProjectSSHKeyList { + if in == nil { + return nil + } + out := new(ProjectSSHKeyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ProjectSSHKeyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectSSHKeyObservation) DeepCopyInto(out *ProjectSSHKeyObservation) { + *out = *in + if in.Created != nil { + in, out := &in.Created, &out.Created + *out = new(string) + **out = **in + } + if in.Fingerprint != nil { + in, out := &in.Fingerprint, &out.Fingerprint + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.OwnerID != nil { + in, out := &in.OwnerID, &out.OwnerID + *out = new(string) + **out = **in + } + if in.Updated != nil { + in, out := &in.Updated, &out.Updated + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectSSHKeyObservation. +func (in *ProjectSSHKeyObservation) DeepCopy() *ProjectSSHKeyObservation { + if in == nil { + return nil + } + out := new(ProjectSSHKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectSSHKeyParameters) DeepCopyInto(out *ProjectSSHKeyParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.PublicKey != nil { + in, out := &in.PublicKey, &out.PublicKey + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectSSHKeyParameters. +func (in *ProjectSSHKeyParameters) DeepCopy() *ProjectSSHKeyParameters { + if in == nil { + return nil + } + out := new(ProjectSSHKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectSSHKeySpec) DeepCopyInto(out *ProjectSSHKeySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectSSHKeySpec. +func (in *ProjectSSHKeySpec) DeepCopy() *ProjectSSHKeySpec { + if in == nil { + return nil + } + out := new(ProjectSSHKeySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectSSHKeyStatus) DeepCopyInto(out *ProjectSSHKeyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectSSHKeyStatus. +func (in *ProjectSSHKeyStatus) DeepCopy() *ProjectSSHKeyStatus { + if in == nil { + return nil + } + out := new(ProjectSSHKeyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectSpec) DeepCopyInto(out *ProjectSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectSpec. +func (in *ProjectSpec) DeepCopy() *ProjectSpec { + if in == nil { + return nil + } + out := new(ProjectSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectStatus) DeepCopyInto(out *ProjectStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectStatus. +func (in *ProjectStatus) DeepCopy() *ProjectStatus { + if in == nil { + return nil + } + out := new(ProjectStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReinstallObservation) DeepCopyInto(out *ReinstallObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReinstallObservation. +func (in *ReinstallObservation) DeepCopy() *ReinstallObservation { + if in == nil { + return nil + } + out := new(ReinstallObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReinstallParameters) DeepCopyInto(out *ReinstallParameters) { + *out = *in + if in.DeprovisionFast != nil { + in, out := &in.DeprovisionFast, &out.DeprovisionFast + *out = new(bool) + **out = **in + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.PreserveData != nil { + in, out := &in.PreserveData, &out.PreserveData + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReinstallParameters. +func (in *ReinstallParameters) DeepCopy() *ReinstallParameters { + if in == nil { + return nil + } + out := new(ReinstallParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservedIPBlock) DeepCopyInto(out *ReservedIPBlock) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservedIPBlock. +func (in *ReservedIPBlock) DeepCopy() *ReservedIPBlock { + if in == nil { + return nil + } + out := new(ReservedIPBlock) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReservedIPBlock) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservedIPBlockList) DeepCopyInto(out *ReservedIPBlockList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReservedIPBlock, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservedIPBlockList. +func (in *ReservedIPBlockList) DeepCopy() *ReservedIPBlockList { + if in == nil { + return nil + } + out := new(ReservedIPBlockList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReservedIPBlockList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservedIPBlockObservation) DeepCopyInto(out *ReservedIPBlockObservation) { + *out = *in + if in.Address != nil { + in, out := &in.Address, &out.Address + *out = new(string) + **out = **in + } + if in.AddressFamily != nil { + in, out := &in.AddressFamily, &out.AddressFamily + *out = new(float64) + **out = **in + } + if in.CidrNotation != nil { + in, out := &in.CidrNotation, &out.CidrNotation + *out = new(string) + **out = **in + } + if in.Gateway != nil { + in, out := &in.Gateway, &out.Gateway + *out = new(string) + **out = **in + } + if in.Global != nil { + in, out := &in.Global, &out.Global + *out = new(bool) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Manageable != nil { + in, out := &in.Manageable, &out.Manageable + *out = new(bool) + **out = **in + } + if in.Management != nil { + in, out := &in.Management, &out.Management + *out = new(bool) + **out = **in + } + if in.Netmask != nil { + in, out := &in.Netmask, &out.Netmask + *out = new(string) + **out = **in + } + if in.Public != nil { + in, out := &in.Public, &out.Public + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservedIPBlockObservation. +func (in *ReservedIPBlockObservation) DeepCopy() *ReservedIPBlockObservation { + if in == nil { + return nil + } + out := new(ReservedIPBlockObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservedIPBlockParameters) DeepCopyInto(out *ReservedIPBlockParameters) { + *out = *in + if in.Cidr != nil { + in, out := &in.Cidr, &out.Cidr + *out = new(float64) + **out = **in + } + if in.CustomData != nil { + in, out := &in.CustomData, &out.CustomData + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Facility != nil { + in, out := &in.Facility, &out.Facility + *out = new(string) + **out = **in + } + if in.Metro != nil { + in, out := &in.Metro, &out.Metro + *out = new(string) + **out = **in + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.Quantity != nil { + in, out := &in.Quantity, &out.Quantity + *out = new(float64) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.VrfID != nil { + in, out := &in.VrfID, &out.VrfID + *out = new(string) + **out = **in + } + if in.WaitForState != nil { + in, out := &in.WaitForState, &out.WaitForState + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservedIPBlockParameters. +func (in *ReservedIPBlockParameters) DeepCopy() *ReservedIPBlockParameters { + if in == nil { + return nil + } + out := new(ReservedIPBlockParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservedIPBlockSpec) DeepCopyInto(out *ReservedIPBlockSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservedIPBlockSpec. +func (in *ReservedIPBlockSpec) DeepCopy() *ReservedIPBlockSpec { + if in == nil { + return nil + } + out := new(ReservedIPBlockSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservedIPBlockStatus) DeepCopyInto(out *ReservedIPBlockStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservedIPBlockStatus. +func (in *ReservedIPBlockStatus) DeepCopy() *ReservedIPBlockStatus { + if in == nil { + return nil + } + out := new(ReservedIPBlockStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SSHKey) DeepCopyInto(out *SSHKey) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKey. +func (in *SSHKey) DeepCopy() *SSHKey { + if in == nil { + return nil + } + out := new(SSHKey) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SSHKey) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SSHKeyList) DeepCopyInto(out *SSHKeyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]SSHKey, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyList. +func (in *SSHKeyList) DeepCopy() *SSHKeyList { + if in == nil { + return nil + } + out := new(SSHKeyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SSHKeyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SSHKeyObservation) DeepCopyInto(out *SSHKeyObservation) { + *out = *in + if in.Created != nil { + in, out := &in.Created, &out.Created + *out = new(string) + **out = **in + } + if in.Fingerprint != nil { + in, out := &in.Fingerprint, &out.Fingerprint + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.OwnerID != nil { + in, out := &in.OwnerID, &out.OwnerID + *out = new(string) + **out = **in + } + if in.Updated != nil { + in, out := &in.Updated, &out.Updated + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyObservation. +func (in *SSHKeyObservation) DeepCopy() *SSHKeyObservation { + if in == nil { + return nil + } + out := new(SSHKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SSHKeyParameters) DeepCopyInto(out *SSHKeyParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PublicKey != nil { + in, out := &in.PublicKey, &out.PublicKey + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyParameters. +func (in *SSHKeyParameters) DeepCopy() *SSHKeyParameters { + if in == nil { + return nil + } + out := new(SSHKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SSHKeySpec) DeepCopyInto(out *SSHKeySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeySpec. +func (in *SSHKeySpec) DeepCopy() *SSHKeySpec { + if in == nil { + return nil + } + out := new(SSHKeySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SSHKeyStatus) DeepCopyInto(out *SSHKeyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyStatus. +func (in *SSHKeyStatus) DeepCopy() *SSHKeyStatus { + if in == nil { + return nil + } + out := new(SSHKeyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceTokensObservation) DeepCopyInto(out *ServiceTokensObservation) { + *out = *in + if in.ExpiresAt != nil { + in, out := &in.ExpiresAt, &out.ExpiresAt + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.MaxAllowedSpeed != nil { + in, out := &in.MaxAllowedSpeed, &out.MaxAllowedSpeed + *out = new(string) + **out = **in + } + if in.Role != nil { + in, out := &in.Role, &out.Role + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTokensObservation. +func (in *ServiceTokensObservation) DeepCopy() *ServiceTokensObservation { + if in == nil { + return nil + } + out := new(ServiceTokensObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceTokensParameters) DeepCopyInto(out *ServiceTokensParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTokensParameters. +func (in *ServiceTokensParameters) DeepCopy() *ServiceTokensParameters { + if in == nil { + return nil + } + out := new(ServiceTokensParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpotMarketRequest) DeepCopyInto(out *SpotMarketRequest) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpotMarketRequest. +func (in *SpotMarketRequest) DeepCopy() *SpotMarketRequest { + if in == nil { + return nil + } + out := new(SpotMarketRequest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SpotMarketRequest) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpotMarketRequestList) DeepCopyInto(out *SpotMarketRequestList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]SpotMarketRequest, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpotMarketRequestList. +func (in *SpotMarketRequestList) DeepCopy() *SpotMarketRequestList { + if in == nil { + return nil + } + out := new(SpotMarketRequestList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SpotMarketRequestList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpotMarketRequestObservation) DeepCopyInto(out *SpotMarketRequestObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.InstanceParameters != nil { + in, out := &in.InstanceParameters, &out.InstanceParameters + *out = make([]InstanceParametersObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpotMarketRequestObservation. +func (in *SpotMarketRequestObservation) DeepCopy() *SpotMarketRequestObservation { + if in == nil { + return nil + } + out := new(SpotMarketRequestObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpotMarketRequestParameters) DeepCopyInto(out *SpotMarketRequestParameters) { + *out = *in + if in.DevicesMax != nil { + in, out := &in.DevicesMax, &out.DevicesMax + *out = new(float64) + **out = **in + } + if in.DevicesMin != nil { + in, out := &in.DevicesMin, &out.DevicesMin + *out = new(float64) + **out = **in + } + if in.Facilities != nil { + in, out := &in.Facilities, &out.Facilities + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.InstanceParameters != nil { + in, out := &in.InstanceParameters, &out.InstanceParameters + *out = make([]InstanceParametersParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MaxBidPrice != nil { + in, out := &in.MaxBidPrice, &out.MaxBidPrice + *out = new(float64) + **out = **in + } + if in.Metro != nil { + in, out := &in.Metro, &out.Metro + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.WaitForDevices != nil { + in, out := &in.WaitForDevices, &out.WaitForDevices + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpotMarketRequestParameters. +func (in *SpotMarketRequestParameters) DeepCopy() *SpotMarketRequestParameters { + if in == nil { + return nil + } + out := new(SpotMarketRequestParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpotMarketRequestSpec) DeepCopyInto(out *SpotMarketRequestSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpotMarketRequestSpec. +func (in *SpotMarketRequestSpec) DeepCopy() *SpotMarketRequestSpec { + if in == nil { + return nil + } + out := new(SpotMarketRequestSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpotMarketRequestStatus) DeepCopyInto(out *SpotMarketRequestStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpotMarketRequestStatus. +func (in *SpotMarketRequestStatus) DeepCopy() *SpotMarketRequestStatus { + if in == nil { + return nil + } + out := new(SpotMarketRequestStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAPIKey) DeepCopyInto(out *UserAPIKey) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAPIKey. +func (in *UserAPIKey) DeepCopy() *UserAPIKey { + if in == nil { + return nil + } + out := new(UserAPIKey) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *UserAPIKey) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAPIKeyList) DeepCopyInto(out *UserAPIKeyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]UserAPIKey, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAPIKeyList. +func (in *UserAPIKeyList) DeepCopy() *UserAPIKeyList { + if in == nil { + return nil + } + out := new(UserAPIKeyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *UserAPIKeyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAPIKeyObservation) DeepCopyInto(out *UserAPIKeyObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.UserID != nil { + in, out := &in.UserID, &out.UserID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAPIKeyObservation. +func (in *UserAPIKeyObservation) DeepCopy() *UserAPIKeyObservation { + if in == nil { + return nil + } + out := new(UserAPIKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAPIKeyParameters) DeepCopyInto(out *UserAPIKeyParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ReadOnly != nil { + in, out := &in.ReadOnly, &out.ReadOnly + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAPIKeyParameters. +func (in *UserAPIKeyParameters) DeepCopy() *UserAPIKeyParameters { + if in == nil { + return nil + } + out := new(UserAPIKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAPIKeySpec) DeepCopyInto(out *UserAPIKeySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAPIKeySpec. +func (in *UserAPIKeySpec) DeepCopy() *UserAPIKeySpec { + if in == nil { + return nil + } + out := new(UserAPIKeySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAPIKeyStatus) DeepCopyInto(out *UserAPIKeyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAPIKeyStatus. +func (in *UserAPIKeyStatus) DeepCopy() *UserAPIKeyStatus { + if in == nil { + return nil + } + out := new(UserAPIKeyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VirtualCircuit) DeepCopyInto(out *VirtualCircuit) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualCircuit. +func (in *VirtualCircuit) DeepCopy() *VirtualCircuit { + if in == nil { + return nil + } + out := new(VirtualCircuit) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *VirtualCircuit) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VirtualCircuitList) DeepCopyInto(out *VirtualCircuitList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]VirtualCircuit, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualCircuitList. +func (in *VirtualCircuitList) DeepCopy() *VirtualCircuitList { + if in == nil { + return nil + } + out := new(VirtualCircuitList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *VirtualCircuitList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VirtualCircuitObservation) DeepCopyInto(out *VirtualCircuitObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.NniVnid != nil { + in, out := &in.NniVnid, &out.NniVnid + *out = new(float64) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } + if in.Vnid != nil { + in, out := &in.Vnid, &out.Vnid + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualCircuitObservation. +func (in *VirtualCircuitObservation) DeepCopy() *VirtualCircuitObservation { + if in == nil { + return nil + } + out := new(VirtualCircuitObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VirtualCircuitParameters) DeepCopyInto(out *VirtualCircuitParameters) { + *out = *in + if in.ConnectionID != nil { + in, out := &in.ConnectionID, &out.ConnectionID + *out = new(string) + **out = **in + } + if in.CustomerIP != nil { + in, out := &in.CustomerIP, &out.CustomerIP + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Md5SecretRef != nil { + in, out := &in.Md5SecretRef, &out.Md5SecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } + if in.MetalIP != nil { + in, out := &in.MetalIP, &out.MetalIP + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NniVlan != nil { + in, out := &in.NniVlan, &out.NniVlan + *out = new(float64) + **out = **in + } + if in.PeerAsn != nil { + in, out := &in.PeerAsn, &out.PeerAsn + *out = new(float64) + **out = **in + } + if in.PortID != nil { + in, out := &in.PortID, &out.PortID + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.Speed != nil { + in, out := &in.Speed, &out.Speed + *out = new(string) + **out = **in + } + if in.Subnet != nil { + in, out := &in.Subnet, &out.Subnet + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.VlanID != nil { + in, out := &in.VlanID, &out.VlanID + *out = new(string) + **out = **in + } + if in.VrfID != nil { + in, out := &in.VrfID, &out.VrfID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualCircuitParameters. +func (in *VirtualCircuitParameters) DeepCopy() *VirtualCircuitParameters { + if in == nil { + return nil + } + out := new(VirtualCircuitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VirtualCircuitSpec) DeepCopyInto(out *VirtualCircuitSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualCircuitSpec. +func (in *VirtualCircuitSpec) DeepCopy() *VirtualCircuitSpec { + if in == nil { + return nil + } + out := new(VirtualCircuitSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VirtualCircuitStatus) DeepCopyInto(out *VirtualCircuitStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualCircuitStatus. +func (in *VirtualCircuitStatus) DeepCopy() *VirtualCircuitStatus { + if in == nil { + return nil + } + out := new(VirtualCircuitStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Vlan) DeepCopyInto(out *Vlan) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Vlan. +func (in *Vlan) DeepCopy() *Vlan { + if in == nil { + return nil + } + out := new(Vlan) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Vlan) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VlanList) DeepCopyInto(out *VlanList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Vlan, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VlanList. +func (in *VlanList) DeepCopy() *VlanList { + if in == nil { + return nil + } + out := new(VlanList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *VlanList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VlanObservation) DeepCopyInto(out *VlanObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VlanObservation. +func (in *VlanObservation) DeepCopy() *VlanObservation { + if in == nil { + return nil + } + out := new(VlanObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VlanParameters) DeepCopyInto(out *VlanParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Facility != nil { + in, out := &in.Facility, &out.Facility + *out = new(string) + **out = **in + } + if in.Metro != nil { + in, out := &in.Metro, &out.Metro + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.Vxlan != nil { + in, out := &in.Vxlan, &out.Vxlan + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VlanParameters. +func (in *VlanParameters) DeepCopy() *VlanParameters { + if in == nil { + return nil + } + out := new(VlanParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VlanSpec) DeepCopyInto(out *VlanSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VlanSpec. +func (in *VlanSpec) DeepCopy() *VlanSpec { + if in == nil { + return nil + } + out := new(VlanSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VlanStatus) DeepCopyInto(out *VlanStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VlanStatus. +func (in *VlanStatus) DeepCopy() *VlanStatus { + if in == nil { + return nil + } + out := new(VlanStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Vrf) DeepCopyInto(out *Vrf) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Vrf. +func (in *Vrf) DeepCopy() *Vrf { + if in == nil { + return nil + } + out := new(Vrf) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Vrf) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VrfList) DeepCopyInto(out *VrfList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Vrf, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VrfList. +func (in *VrfList) DeepCopy() *VrfList { + if in == nil { + return nil + } + out := new(VrfList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *VrfList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VrfObservation) DeepCopyInto(out *VrfObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VrfObservation. +func (in *VrfObservation) DeepCopy() *VrfObservation { + if in == nil { + return nil + } + out := new(VrfObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VrfParameters) DeepCopyInto(out *VrfParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.IPRanges != nil { + in, out := &in.IPRanges, &out.IPRanges + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.LocalAsn != nil { + in, out := &in.LocalAsn, &out.LocalAsn + *out = new(float64) + **out = **in + } + if in.Metro != nil { + in, out := &in.Metro, &out.Metro + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VrfParameters. +func (in *VrfParameters) DeepCopy() *VrfParameters { + if in == nil { + return nil + } + out := new(VrfParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VrfSpec) DeepCopyInto(out *VrfSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VrfSpec. +func (in *VrfSpec) DeepCopy() *VrfSpec { + if in == nil { + return nil + } + out := new(VrfSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VrfStatus) DeepCopyInto(out *VrfStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VrfStatus. +func (in *VrfStatus) DeepCopy() *VrfStatus { + if in == nil { + return nil + } + out := new(VrfStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/metal/v1alpha1/zz_generated.managed.go b/apis/metal/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..02e3148 --- /dev/null +++ b/apis/metal/v1alpha1/zz_generated.managed.go @@ -0,0 +1,1274 @@ +/* +Copyright 2021 The Crossplane 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. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this BGPSession. +func (mg *BGPSession) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this BGPSession. +func (mg *BGPSession) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this BGPSession. +func (mg *BGPSession) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this BGPSession. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *BGPSession) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this BGPSession. +func (mg *BGPSession) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this BGPSession. +func (mg *BGPSession) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this BGPSession. +func (mg *BGPSession) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this BGPSession. +func (mg *BGPSession) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this BGPSession. +func (mg *BGPSession) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this BGPSession. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *BGPSession) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this BGPSession. +func (mg *BGPSession) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this BGPSession. +func (mg *BGPSession) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Connection. +func (mg *Connection) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Connection. +func (mg *Connection) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Connection. +func (mg *Connection) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Connection. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Connection) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Connection. +func (mg *Connection) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Connection. +func (mg *Connection) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Connection. +func (mg *Connection) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Connection. +func (mg *Connection) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Connection. +func (mg *Connection) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Connection. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Connection) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Connection. +func (mg *Connection) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Connection. +func (mg *Connection) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Device. +func (mg *Device) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Device. +func (mg *Device) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Device. +func (mg *Device) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Device. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Device) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Device. +func (mg *Device) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Device. +func (mg *Device) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Device. +func (mg *Device) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Device. +func (mg *Device) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Device. +func (mg *Device) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Device. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Device) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Device. +func (mg *Device) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Device. +func (mg *Device) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this DeviceNetworkType. +func (mg *DeviceNetworkType) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this DeviceNetworkType. +func (mg *DeviceNetworkType) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this DeviceNetworkType. +func (mg *DeviceNetworkType) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this DeviceNetworkType. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *DeviceNetworkType) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this DeviceNetworkType. +func (mg *DeviceNetworkType) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this DeviceNetworkType. +func (mg *DeviceNetworkType) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this DeviceNetworkType. +func (mg *DeviceNetworkType) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this DeviceNetworkType. +func (mg *DeviceNetworkType) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this DeviceNetworkType. +func (mg *DeviceNetworkType) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this DeviceNetworkType. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *DeviceNetworkType) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this DeviceNetworkType. +func (mg *DeviceNetworkType) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this DeviceNetworkType. +func (mg *DeviceNetworkType) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Gateway. +func (mg *Gateway) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Gateway. +func (mg *Gateway) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Gateway. +func (mg *Gateway) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Gateway. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Gateway) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Gateway. +func (mg *Gateway) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Gateway. +func (mg *Gateway) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Gateway. +func (mg *Gateway) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Gateway. +func (mg *Gateway) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Gateway. +func (mg *Gateway) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Gateway. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Gateway) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Gateway. +func (mg *Gateway) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Gateway. +func (mg *Gateway) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this IPAttachment. +func (mg *IPAttachment) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this IPAttachment. +func (mg *IPAttachment) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this IPAttachment. +func (mg *IPAttachment) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this IPAttachment. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *IPAttachment) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this IPAttachment. +func (mg *IPAttachment) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this IPAttachment. +func (mg *IPAttachment) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this IPAttachment. +func (mg *IPAttachment) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this IPAttachment. +func (mg *IPAttachment) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this IPAttachment. +func (mg *IPAttachment) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this IPAttachment. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *IPAttachment) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this IPAttachment. +func (mg *IPAttachment) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this IPAttachment. +func (mg *IPAttachment) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Organization. +func (mg *Organization) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Organization. +func (mg *Organization) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Organization. +func (mg *Organization) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Organization. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Organization) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Organization. +func (mg *Organization) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Organization. +func (mg *Organization) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Organization. +func (mg *Organization) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Organization. +func (mg *Organization) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Organization. +func (mg *Organization) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Organization. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Organization) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Organization. +func (mg *Organization) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Organization. +func (mg *Organization) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Port. +func (mg *Port) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Port. +func (mg *Port) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Port. +func (mg *Port) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Port. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Port) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Port. +func (mg *Port) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Port. +func (mg *Port) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Port. +func (mg *Port) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Port. +func (mg *Port) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Port. +func (mg *Port) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Port. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Port) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Port. +func (mg *Port) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Port. +func (mg *Port) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this PortVlanAttachment. +func (mg *PortVlanAttachment) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this PortVlanAttachment. +func (mg *PortVlanAttachment) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this PortVlanAttachment. +func (mg *PortVlanAttachment) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this PortVlanAttachment. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *PortVlanAttachment) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this PortVlanAttachment. +func (mg *PortVlanAttachment) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this PortVlanAttachment. +func (mg *PortVlanAttachment) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this PortVlanAttachment. +func (mg *PortVlanAttachment) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this PortVlanAttachment. +func (mg *PortVlanAttachment) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this PortVlanAttachment. +func (mg *PortVlanAttachment) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this PortVlanAttachment. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *PortVlanAttachment) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this PortVlanAttachment. +func (mg *PortVlanAttachment) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this PortVlanAttachment. +func (mg *PortVlanAttachment) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Project. +func (mg *Project) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Project. +func (mg *Project) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Project. +func (mg *Project) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Project. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Project) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Project. +func (mg *Project) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Project. +func (mg *Project) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Project. +func (mg *Project) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Project. +func (mg *Project) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Project. +func (mg *Project) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Project. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Project) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Project. +func (mg *Project) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Project. +func (mg *Project) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ProjectAPIKey. +func (mg *ProjectAPIKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ProjectAPIKey. +func (mg *ProjectAPIKey) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this ProjectAPIKey. +func (mg *ProjectAPIKey) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this ProjectAPIKey. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *ProjectAPIKey) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this ProjectAPIKey. +func (mg *ProjectAPIKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ProjectAPIKey. +func (mg *ProjectAPIKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ProjectAPIKey. +func (mg *ProjectAPIKey) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ProjectAPIKey. +func (mg *ProjectAPIKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this ProjectAPIKey. +func (mg *ProjectAPIKey) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this ProjectAPIKey. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *ProjectAPIKey) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this ProjectAPIKey. +func (mg *ProjectAPIKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ProjectAPIKey. +func (mg *ProjectAPIKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ProjectSSHKey. +func (mg *ProjectSSHKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ProjectSSHKey. +func (mg *ProjectSSHKey) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this ProjectSSHKey. +func (mg *ProjectSSHKey) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this ProjectSSHKey. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *ProjectSSHKey) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this ProjectSSHKey. +func (mg *ProjectSSHKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ProjectSSHKey. +func (mg *ProjectSSHKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ProjectSSHKey. +func (mg *ProjectSSHKey) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ProjectSSHKey. +func (mg *ProjectSSHKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this ProjectSSHKey. +func (mg *ProjectSSHKey) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this ProjectSSHKey. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *ProjectSSHKey) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this ProjectSSHKey. +func (mg *ProjectSSHKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ProjectSSHKey. +func (mg *ProjectSSHKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ReservedIPBlock. +func (mg *ReservedIPBlock) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ReservedIPBlock. +func (mg *ReservedIPBlock) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this ReservedIPBlock. +func (mg *ReservedIPBlock) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this ReservedIPBlock. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *ReservedIPBlock) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this ReservedIPBlock. +func (mg *ReservedIPBlock) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ReservedIPBlock. +func (mg *ReservedIPBlock) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ReservedIPBlock. +func (mg *ReservedIPBlock) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ReservedIPBlock. +func (mg *ReservedIPBlock) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this ReservedIPBlock. +func (mg *ReservedIPBlock) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this ReservedIPBlock. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *ReservedIPBlock) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this ReservedIPBlock. +func (mg *ReservedIPBlock) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ReservedIPBlock. +func (mg *ReservedIPBlock) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this SSHKey. +func (mg *SSHKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this SSHKey. +func (mg *SSHKey) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this SSHKey. +func (mg *SSHKey) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this SSHKey. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *SSHKey) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this SSHKey. +func (mg *SSHKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this SSHKey. +func (mg *SSHKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this SSHKey. +func (mg *SSHKey) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this SSHKey. +func (mg *SSHKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this SSHKey. +func (mg *SSHKey) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this SSHKey. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *SSHKey) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this SSHKey. +func (mg *SSHKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this SSHKey. +func (mg *SSHKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this SpotMarketRequest. +func (mg *SpotMarketRequest) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this SpotMarketRequest. +func (mg *SpotMarketRequest) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this SpotMarketRequest. +func (mg *SpotMarketRequest) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this SpotMarketRequest. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *SpotMarketRequest) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this SpotMarketRequest. +func (mg *SpotMarketRequest) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this SpotMarketRequest. +func (mg *SpotMarketRequest) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this SpotMarketRequest. +func (mg *SpotMarketRequest) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this SpotMarketRequest. +func (mg *SpotMarketRequest) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this SpotMarketRequest. +func (mg *SpotMarketRequest) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this SpotMarketRequest. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *SpotMarketRequest) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this SpotMarketRequest. +func (mg *SpotMarketRequest) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this SpotMarketRequest. +func (mg *SpotMarketRequest) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this UserAPIKey. +func (mg *UserAPIKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this UserAPIKey. +func (mg *UserAPIKey) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this UserAPIKey. +func (mg *UserAPIKey) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this UserAPIKey. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *UserAPIKey) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this UserAPIKey. +func (mg *UserAPIKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this UserAPIKey. +func (mg *UserAPIKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this UserAPIKey. +func (mg *UserAPIKey) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this UserAPIKey. +func (mg *UserAPIKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this UserAPIKey. +func (mg *UserAPIKey) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this UserAPIKey. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *UserAPIKey) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this UserAPIKey. +func (mg *UserAPIKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this UserAPIKey. +func (mg *UserAPIKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this VirtualCircuit. +func (mg *VirtualCircuit) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this VirtualCircuit. +func (mg *VirtualCircuit) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this VirtualCircuit. +func (mg *VirtualCircuit) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this VirtualCircuit. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *VirtualCircuit) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this VirtualCircuit. +func (mg *VirtualCircuit) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this VirtualCircuit. +func (mg *VirtualCircuit) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this VirtualCircuit. +func (mg *VirtualCircuit) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this VirtualCircuit. +func (mg *VirtualCircuit) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this VirtualCircuit. +func (mg *VirtualCircuit) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this VirtualCircuit. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *VirtualCircuit) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this VirtualCircuit. +func (mg *VirtualCircuit) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this VirtualCircuit. +func (mg *VirtualCircuit) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Vlan. +func (mg *Vlan) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Vlan. +func (mg *Vlan) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Vlan. +func (mg *Vlan) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Vlan. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Vlan) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Vlan. +func (mg *Vlan) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Vlan. +func (mg *Vlan) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Vlan. +func (mg *Vlan) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Vlan. +func (mg *Vlan) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Vlan. +func (mg *Vlan) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Vlan. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Vlan) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Vlan. +func (mg *Vlan) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Vlan. +func (mg *Vlan) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Vrf. +func (mg *Vrf) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Vrf. +func (mg *Vrf) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Vrf. +func (mg *Vrf) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Vrf. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Vrf) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Vrf. +func (mg *Vrf) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Vrf. +func (mg *Vrf) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Vrf. +func (mg *Vrf) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Vrf. +func (mg *Vrf) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Vrf. +func (mg *Vrf) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Vrf. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Vrf) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Vrf. +func (mg *Vrf) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Vrf. +func (mg *Vrf) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/metal/v1alpha1/zz_generated.managedlist.go b/apis/metal/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..4e45507 --- /dev/null +++ b/apis/metal/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,191 @@ +/* +Copyright 2021 The Crossplane 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. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this BGPSessionList. +func (l *BGPSessionList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ConnectionList. +func (l *ConnectionList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this DeviceList. +func (l *DeviceList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this DeviceNetworkTypeList. +func (l *DeviceNetworkTypeList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this GatewayList. +func (l *GatewayList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this IPAttachmentList. +func (l *IPAttachmentList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this OrganizationList. +func (l *OrganizationList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this PortList. +func (l *PortList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this PortVlanAttachmentList. +func (l *PortVlanAttachmentList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ProjectAPIKeyList. +func (l *ProjectAPIKeyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ProjectList. +func (l *ProjectList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ProjectSSHKeyList. +func (l *ProjectSSHKeyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ReservedIPBlockList. +func (l *ReservedIPBlockList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this SSHKeyList. +func (l *SSHKeyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this SpotMarketRequestList. +func (l *SpotMarketRequestList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this UserAPIKeyList. +func (l *UserAPIKeyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this VirtualCircuitList. +func (l *VirtualCircuitList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this VlanList. +func (l *VlanList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this VrfList. +func (l *VrfList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/metal/v1alpha1/zz_generated.resolvers.go b/apis/metal/v1alpha1/zz_generated.resolvers.go new file mode 100644 index 0000000..5b8d9ce --- /dev/null +++ b/apis/metal/v1alpha1/zz_generated.resolvers.go @@ -0,0 +1,119 @@ +/* +Copyright 2021 The Crossplane 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. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this Connection. +func (mg *Connection) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.OrganizationID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.OrganizationIDRef, + Selector: mg.Spec.ForProvider.OrganizationIDSelector, + To: reference.To{ + List: &OrganizationList{}, + Managed: &Organization{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.OrganizationID") + } + mg.Spec.ForProvider.OrganizationID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.OrganizationIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.ProjectID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.ProjectIDRef, + Selector: mg.Spec.ForProvider.ProjectIDSelector, + To: reference.To{ + List: &ProjectList{}, + Managed: &Project{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.ProjectID") + } + mg.Spec.ForProvider.ProjectID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.ProjectIDRef = rsp.ResolvedReference + + return nil +} + +// ResolveReferences of this Device. +func (mg *Device) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.ProjectID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.ProjectIDRef, + Selector: mg.Spec.ForProvider.ProjectIDSelector, + To: reference.To{ + List: &ProjectList{}, + Managed: &Project{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.ProjectID") + } + mg.Spec.ForProvider.ProjectID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.ProjectIDRef = rsp.ResolvedReference + + return nil +} + +// ResolveReferences of this Project. +func (mg *Project) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.OrganizationID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.OrganizationIDRef, + Selector: mg.Spec.ForProvider.OrganizationIDSelector, + To: reference.To{ + List: &OrganizationList{}, + Managed: &Organization{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.OrganizationID") + } + mg.Spec.ForProvider.OrganizationID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.OrganizationIDRef = rsp.ResolvedReference + + return nil +} diff --git a/apis/metal/v1alpha1/zz_generated_terraformed.go b/apis/metal/v1alpha1/zz_generated_terraformed.go new file mode 100755 index 0000000..5380049 --- /dev/null +++ b/apis/metal/v1alpha1/zz_generated_terraformed.go @@ -0,0 +1,1432 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + "github.com/pkg/errors" + + "github.com/crossplane/terrajet/pkg/resource" + "github.com/crossplane/terrajet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this BGPSession +func (mg *BGPSession) GetTerraformResourceType() string { + return "equinix_metal_bgp_session" +} + +// GetConnectionDetailsMapping for this BGPSession +func (tr *BGPSession) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this BGPSession +func (tr *BGPSession) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this BGPSession +func (tr *BGPSession) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this BGPSession +func (tr *BGPSession) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this BGPSession +func (tr *BGPSession) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this BGPSession +func (tr *BGPSession) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this BGPSession using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *BGPSession) LateInitialize(attrs []byte) (bool, error) { + params := &BGPSessionParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *BGPSession) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this Connection +func (mg *Connection) GetTerraformResourceType() string { + return "equinix_metal_connection" +} + +// GetConnectionDetailsMapping for this Connection +func (tr *Connection) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Connection +func (tr *Connection) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Connection +func (tr *Connection) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Connection +func (tr *Connection) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Connection +func (tr *Connection) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Connection +func (tr *Connection) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this Connection using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Connection) LateInitialize(attrs []byte) (bool, error) { + params := &ConnectionParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Connection) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this Device +func (mg *Device) GetTerraformResourceType() string { + return "equinix_metal_device" +} + +// GetConnectionDetailsMapping for this Device +func (tr *Device) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"custom_data": "spec.forProvider.customDataSecretRef", "root_password": "status.atProvider.rootPassword", "user_data": "spec.forProvider.userDataSecretRef"} +} + +// GetObservation of this Device +func (tr *Device) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Device +func (tr *Device) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Device +func (tr *Device) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Device +func (tr *Device) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Device +func (tr *Device) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this Device using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Device) LateInitialize(attrs []byte) (bool, error) { + params := &DeviceParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Device) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this DeviceNetworkType +func (mg *DeviceNetworkType) GetTerraformResourceType() string { + return "equinix_metal_device_network_type" +} + +// GetConnectionDetailsMapping for this DeviceNetworkType +func (tr *DeviceNetworkType) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this DeviceNetworkType +func (tr *DeviceNetworkType) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this DeviceNetworkType +func (tr *DeviceNetworkType) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this DeviceNetworkType +func (tr *DeviceNetworkType) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this DeviceNetworkType +func (tr *DeviceNetworkType) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this DeviceNetworkType +func (tr *DeviceNetworkType) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this DeviceNetworkType using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *DeviceNetworkType) LateInitialize(attrs []byte) (bool, error) { + params := &DeviceNetworkTypeParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *DeviceNetworkType) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this Gateway +func (mg *Gateway) GetTerraformResourceType() string { + return "equinix_metal_gateway" +} + +// GetConnectionDetailsMapping for this Gateway +func (tr *Gateway) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Gateway +func (tr *Gateway) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Gateway +func (tr *Gateway) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Gateway +func (tr *Gateway) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Gateway +func (tr *Gateway) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Gateway +func (tr *Gateway) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this Gateway using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Gateway) LateInitialize(attrs []byte) (bool, error) { + params := &GatewayParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Gateway) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this IPAttachment +func (mg *IPAttachment) GetTerraformResourceType() string { + return "equinix_metal_ip_attachment" +} + +// GetConnectionDetailsMapping for this IPAttachment +func (tr *IPAttachment) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this IPAttachment +func (tr *IPAttachment) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this IPAttachment +func (tr *IPAttachment) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this IPAttachment +func (tr *IPAttachment) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this IPAttachment +func (tr *IPAttachment) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this IPAttachment +func (tr *IPAttachment) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this IPAttachment using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *IPAttachment) LateInitialize(attrs []byte) (bool, error) { + params := &IPAttachmentParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *IPAttachment) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this Organization +func (mg *Organization) GetTerraformResourceType() string { + return "equinix_metal_organization" +} + +// GetConnectionDetailsMapping for this Organization +func (tr *Organization) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Organization +func (tr *Organization) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Organization +func (tr *Organization) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Organization +func (tr *Organization) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Organization +func (tr *Organization) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Organization +func (tr *Organization) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this Organization using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Organization) LateInitialize(attrs []byte) (bool, error) { + params := &OrganizationParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Organization) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this Port +func (mg *Port) GetTerraformResourceType() string { + return "equinix_metal_port" +} + +// GetConnectionDetailsMapping for this Port +func (tr *Port) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Port +func (tr *Port) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Port +func (tr *Port) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Port +func (tr *Port) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Port +func (tr *Port) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Port +func (tr *Port) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this Port using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Port) LateInitialize(attrs []byte) (bool, error) { + params := &PortParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Port) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this PortVlanAttachment +func (mg *PortVlanAttachment) GetTerraformResourceType() string { + return "equinix_metal_port_vlan_attachment" +} + +// GetConnectionDetailsMapping for this PortVlanAttachment +func (tr *PortVlanAttachment) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this PortVlanAttachment +func (tr *PortVlanAttachment) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this PortVlanAttachment +func (tr *PortVlanAttachment) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this PortVlanAttachment +func (tr *PortVlanAttachment) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this PortVlanAttachment +func (tr *PortVlanAttachment) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this PortVlanAttachment +func (tr *PortVlanAttachment) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this PortVlanAttachment using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *PortVlanAttachment) LateInitialize(attrs []byte) (bool, error) { + params := &PortVlanAttachmentParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *PortVlanAttachment) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this Project +func (mg *Project) GetTerraformResourceType() string { + return "equinix_metal_project" +} + +// GetConnectionDetailsMapping for this Project +func (tr *Project) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"bgp_config[*].md5": "spec.forProvider.bgpConfig[*].md5SecretRef"} +} + +// GetObservation of this Project +func (tr *Project) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Project +func (tr *Project) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Project +func (tr *Project) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Project +func (tr *Project) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Project +func (tr *Project) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this Project using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Project) LateInitialize(attrs []byte) (bool, error) { + params := &ProjectParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Project) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this ProjectAPIKey +func (mg *ProjectAPIKey) GetTerraformResourceType() string { + return "equinix_metal_project_api_key" +} + +// GetConnectionDetailsMapping for this ProjectAPIKey +func (tr *ProjectAPIKey) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"token": "status.atProvider.token"} +} + +// GetObservation of this ProjectAPIKey +func (tr *ProjectAPIKey) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ProjectAPIKey +func (tr *ProjectAPIKey) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ProjectAPIKey +func (tr *ProjectAPIKey) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ProjectAPIKey +func (tr *ProjectAPIKey) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ProjectAPIKey +func (tr *ProjectAPIKey) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this ProjectAPIKey using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ProjectAPIKey) LateInitialize(attrs []byte) (bool, error) { + params := &ProjectAPIKeyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ProjectAPIKey) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this ProjectSSHKey +func (mg *ProjectSSHKey) GetTerraformResourceType() string { + return "equinix_metal_project_ssh_key" +} + +// GetConnectionDetailsMapping for this ProjectSSHKey +func (tr *ProjectSSHKey) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ProjectSSHKey +func (tr *ProjectSSHKey) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ProjectSSHKey +func (tr *ProjectSSHKey) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ProjectSSHKey +func (tr *ProjectSSHKey) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ProjectSSHKey +func (tr *ProjectSSHKey) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ProjectSSHKey +func (tr *ProjectSSHKey) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this ProjectSSHKey using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ProjectSSHKey) LateInitialize(attrs []byte) (bool, error) { + params := &ProjectSSHKeyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ProjectSSHKey) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this ReservedIPBlock +func (mg *ReservedIPBlock) GetTerraformResourceType() string { + return "equinix_metal_reserved_ip_block" +} + +// GetConnectionDetailsMapping for this ReservedIPBlock +func (tr *ReservedIPBlock) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ReservedIPBlock +func (tr *ReservedIPBlock) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ReservedIPBlock +func (tr *ReservedIPBlock) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ReservedIPBlock +func (tr *ReservedIPBlock) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ReservedIPBlock +func (tr *ReservedIPBlock) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ReservedIPBlock +func (tr *ReservedIPBlock) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this ReservedIPBlock using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ReservedIPBlock) LateInitialize(attrs []byte) (bool, error) { + params := &ReservedIPBlockParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ReservedIPBlock) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this SpotMarketRequest +func (mg *SpotMarketRequest) GetTerraformResourceType() string { + return "equinix_metal_spot_market_request" +} + +// GetConnectionDetailsMapping for this SpotMarketRequest +func (tr *SpotMarketRequest) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this SpotMarketRequest +func (tr *SpotMarketRequest) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this SpotMarketRequest +func (tr *SpotMarketRequest) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this SpotMarketRequest +func (tr *SpotMarketRequest) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this SpotMarketRequest +func (tr *SpotMarketRequest) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this SpotMarketRequest +func (tr *SpotMarketRequest) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this SpotMarketRequest using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *SpotMarketRequest) LateInitialize(attrs []byte) (bool, error) { + params := &SpotMarketRequestParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *SpotMarketRequest) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this SSHKey +func (mg *SSHKey) GetTerraformResourceType() string { + return "equinix_metal_ssh_key" +} + +// GetConnectionDetailsMapping for this SSHKey +func (tr *SSHKey) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this SSHKey +func (tr *SSHKey) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this SSHKey +func (tr *SSHKey) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this SSHKey +func (tr *SSHKey) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this SSHKey +func (tr *SSHKey) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this SSHKey +func (tr *SSHKey) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this SSHKey using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *SSHKey) LateInitialize(attrs []byte) (bool, error) { + params := &SSHKeyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *SSHKey) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this UserAPIKey +func (mg *UserAPIKey) GetTerraformResourceType() string { + return "equinix_metal_user_api_key" +} + +// GetConnectionDetailsMapping for this UserAPIKey +func (tr *UserAPIKey) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"token": "status.atProvider.token"} +} + +// GetObservation of this UserAPIKey +func (tr *UserAPIKey) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this UserAPIKey +func (tr *UserAPIKey) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this UserAPIKey +func (tr *UserAPIKey) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this UserAPIKey +func (tr *UserAPIKey) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this UserAPIKey +func (tr *UserAPIKey) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this UserAPIKey using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *UserAPIKey) LateInitialize(attrs []byte) (bool, error) { + params := &UserAPIKeyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *UserAPIKey) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this VirtualCircuit +func (mg *VirtualCircuit) GetTerraformResourceType() string { + return "equinix_metal_virtual_circuit" +} + +// GetConnectionDetailsMapping for this VirtualCircuit +func (tr *VirtualCircuit) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"md5": "spec.forProvider.md5SecretRef"} +} + +// GetObservation of this VirtualCircuit +func (tr *VirtualCircuit) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this VirtualCircuit +func (tr *VirtualCircuit) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this VirtualCircuit +func (tr *VirtualCircuit) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this VirtualCircuit +func (tr *VirtualCircuit) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this VirtualCircuit +func (tr *VirtualCircuit) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this VirtualCircuit using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *VirtualCircuit) LateInitialize(attrs []byte) (bool, error) { + params := &VirtualCircuitParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *VirtualCircuit) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this Vlan +func (mg *Vlan) GetTerraformResourceType() string { + return "equinix_metal_vlan" +} + +// GetConnectionDetailsMapping for this Vlan +func (tr *Vlan) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Vlan +func (tr *Vlan) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Vlan +func (tr *Vlan) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Vlan +func (tr *Vlan) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Vlan +func (tr *Vlan) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Vlan +func (tr *Vlan) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this Vlan using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Vlan) LateInitialize(attrs []byte) (bool, error) { + params := &VlanParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Vlan) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this Vrf +func (mg *Vrf) GetTerraformResourceType() string { + return "equinix_metal_vrf" +} + +// GetConnectionDetailsMapping for this Vrf +func (tr *Vrf) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Vrf +func (tr *Vrf) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Vrf +func (tr *Vrf) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Vrf +func (tr *Vrf) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Vrf +func (tr *Vrf) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Vrf +func (tr *Vrf) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this Vrf using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Vrf) LateInitialize(attrs []byte) (bool, error) { + params := &VrfParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Vrf) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/metal/v1alpha1/zz_groupversion_info.go b/apis/metal/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..c1524a6 --- /dev/null +++ b/apis/metal/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,44 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=metal.equinix.jet.crossplane.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "metal.equinix.jet.crossplane.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/metal/v1alpha1/zz_ipattachment_types.go b/apis/metal/v1alpha1/zz_ipattachment_types.go new file mode 100755 index 0000000..131aa18 --- /dev/null +++ b/apis/metal/v1alpha1/zz_ipattachment_types.go @@ -0,0 +1,110 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type IPAttachmentObservation struct { + Address *string `json:"address,omitempty" tf:"address,omitempty"` + + AddressFamily *float64 `json:"addressFamily,omitempty" tf:"address_family,omitempty"` + + Cidr *float64 `json:"cidr,omitempty" tf:"cidr,omitempty"` + + Gateway *string `json:"gateway,omitempty" tf:"gateway,omitempty"` + + Global *bool `json:"global,omitempty" tf:"global,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + Manageable *bool `json:"manageable,omitempty" tf:"manageable,omitempty"` + + Management *bool `json:"management,omitempty" tf:"management,omitempty"` + + Netmask *string `json:"netmask,omitempty" tf:"netmask,omitempty"` + + Network *string `json:"network,omitempty" tf:"network,omitempty"` + + Public *bool `json:"public,omitempty" tf:"public,omitempty"` + + VrfID *string `json:"vrfId,omitempty" tf:"vrf_id,omitempty"` +} + +type IPAttachmentParameters struct { + + // +kubebuilder:validation:Required + CidrNotation *string `json:"cidrNotation" tf:"cidr_notation,omitempty"` + + // +kubebuilder:validation:Required + DeviceID *string `json:"deviceId" tf:"device_id,omitempty"` +} + +// IPAttachmentSpec defines the desired state of IPAttachment +type IPAttachmentSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider IPAttachmentParameters `json:"forProvider"` +} + +// IPAttachmentStatus defines the observed state of IPAttachment. +type IPAttachmentStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider IPAttachmentObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// IPAttachment is the Schema for the IPAttachments API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type IPAttachment struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec IPAttachmentSpec `json:"spec"` + Status IPAttachmentStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// IPAttachmentList contains a list of IPAttachments +type IPAttachmentList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []IPAttachment `json:"items"` +} + +// Repository type metadata. +var ( + IPAttachment_Kind = "IPAttachment" + IPAttachment_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: IPAttachment_Kind}.String() + IPAttachment_KindAPIVersion = IPAttachment_Kind + "." + CRDGroupVersion.String() + IPAttachment_GroupVersionKind = CRDGroupVersion.WithKind(IPAttachment_Kind) +) + +func init() { + SchemeBuilder.Register(&IPAttachment{}, &IPAttachmentList{}) +} diff --git a/apis/metal/v1alpha1/zz_organization_types.go b/apis/metal/v1alpha1/zz_organization_types.go new file mode 100755 index 0000000..9ea045d --- /dev/null +++ b/apis/metal/v1alpha1/zz_organization_types.go @@ -0,0 +1,136 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AddressObservation struct { +} + +type AddressParameters struct { + + // Postal address + // +kubebuilder:validation:Required + Address *string `json:"address" tf:"address,omitempty"` + + // City name + // +kubebuilder:validation:Required + City *string `json:"city" tf:"city,omitempty"` + + // Two letter country code (ISO 3166-1 alpha-2), e.g. US + // +kubebuilder:validation:Required + Country *string `json:"country" tf:"country,omitempty"` + + // State name + // +kubebuilder:validation:Optional + State *string `json:"state,omitempty" tf:"state,omitempty"` + + // Zip Code + // +kubebuilder:validation:Required + ZipCode *string `json:"zipCode" tf:"zip_code,omitempty"` +} + +type OrganizationObservation struct { + Created *string `json:"created,omitempty" tf:"created,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + Updated *string `json:"updated,omitempty" tf:"updated,omitempty"` +} + +type OrganizationParameters struct { + + // Address information block + // +kubebuilder:validation:Required + Address []AddressParameters `json:"address" tf:"address,omitempty"` + + // Description string + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // Logo URL + // +kubebuilder:validation:Optional + Logo *string `json:"logo,omitempty" tf:"logo,omitempty"` + + // The name of the Organization + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` + + // Twitter handle + // +kubebuilder:validation:Optional + Twitter *string `json:"twitter,omitempty" tf:"twitter,omitempty"` + + // Website link + // +kubebuilder:validation:Optional + Website *string `json:"website,omitempty" tf:"website,omitempty"` +} + +// OrganizationSpec defines the desired state of Organization +type OrganizationSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider OrganizationParameters `json:"forProvider"` +} + +// OrganizationStatus defines the observed state of Organization. +type OrganizationStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider OrganizationObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Organization is the Schema for the Organizations API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type Organization struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec OrganizationSpec `json:"spec"` + Status OrganizationStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// OrganizationList contains a list of Organizations +type OrganizationList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Organization `json:"items"` +} + +// Repository type metadata. +var ( + Organization_Kind = "Organization" + Organization_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Organization_Kind}.String() + Organization_KindAPIVersion = Organization_Kind + "." + CRDGroupVersion.String() + Organization_GroupVersionKind = CRDGroupVersion.WithKind(Organization_Kind) +) + +func init() { + SchemeBuilder.Register(&Organization{}, &OrganizationList{}) +} diff --git a/apis/metal/v1alpha1/zz_port_types.go b/apis/metal/v1alpha1/zz_port_types.go new file mode 100755 index 0000000..b350545 --- /dev/null +++ b/apis/metal/v1alpha1/zz_port_types.go @@ -0,0 +1,124 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type PortObservation struct { + BondID *string `json:"bondId,omitempty" tf:"bond_id,omitempty"` + + BondName *string `json:"bondName,omitempty" tf:"bond_name,omitempty"` + + DisbondSupported *bool `json:"disbondSupported,omitempty" tf:"disbond_supported,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + Mac *string `json:"mac,omitempty" tf:"mac,omitempty"` + + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + NetworkType *string `json:"networkType,omitempty" tf:"network_type,omitempty"` + + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type PortParameters struct { + + // Flag indicating whether the port should be bonded + // +kubebuilder:validation:Required + Bonded *bool `json:"bonded" tf:"bonded,omitempty"` + + // Flag indicating whether the port is in layer2 (or layer3) mode + // +kubebuilder:validation:Optional + Layer2 *bool `json:"layer2,omitempty" tf:"layer2,omitempty"` + + // UUID of native VLAN of the port + // +kubebuilder:validation:Optional + NativeVlanID *string `json:"nativeVlanId,omitempty" tf:"native_vlan_id,omitempty"` + + // UUID of the port to lookup + // +kubebuilder:validation:Required + PortID *string `json:"portId" tf:"port_id,omitempty"` + + // Behavioral setting to reset the port to default settings. For a bond port it means layer3 without vlans attached, eth ports will be bonded without native vlan and vlans attached + // +kubebuilder:validation:Optional + ResetOnDelete *bool `json:"resetOnDelete,omitempty" tf:"reset_on_delete,omitempty"` + + // UUIDs VLANs to attach. To avoid jitter, use the UUID and not the VXLAN + // +kubebuilder:validation:Optional + VlanIds []*string `json:"vlanIds,omitempty" tf:"vlan_ids,omitempty"` + + // VLAN VXLAN ids to attach (example: [1000]) + // +kubebuilder:validation:Optional + VxlanIds []*float64 `json:"vxlanIds,omitempty" tf:"vxlan_ids,omitempty"` +} + +// PortSpec defines the desired state of Port +type PortSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider PortParameters `json:"forProvider"` +} + +// PortStatus defines the observed state of Port. +type PortStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider PortObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Port is the Schema for the Ports API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type Port struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec PortSpec `json:"spec"` + Status PortStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// PortList contains a list of Ports +type PortList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Port `json:"items"` +} + +// Repository type metadata. +var ( + Port_Kind = "Port" + Port_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Port_Kind}.String() + Port_KindAPIVersion = Port_Kind + "." + CRDGroupVersion.String() + Port_GroupVersionKind = CRDGroupVersion.WithKind(Port_Kind) +) + +func init() { + SchemeBuilder.Register(&Port{}, &PortList{}) +} diff --git a/apis/metal/v1alpha1/zz_portvlanattachment_types.go b/apis/metal/v1alpha1/zz_portvlanattachment_types.go new file mode 100755 index 0000000..513ae6e --- /dev/null +++ b/apis/metal/v1alpha1/zz_portvlanattachment_types.go @@ -0,0 +1,106 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type PortVlanAttachmentObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + PortID *string `json:"portId,omitempty" tf:"port_id,omitempty"` + + VlanID *string `json:"vlanId,omitempty" tf:"vlan_id,omitempty"` +} + +type PortVlanAttachmentParameters struct { + + // ID of device to be assigned to the VLAN + // +kubebuilder:validation:Required + DeviceID *string `json:"deviceId" tf:"device_id,omitempty"` + + // Add port back to the bond when this resource is removed. Default is false + // +kubebuilder:validation:Optional + ForceBond *bool `json:"forceBond,omitempty" tf:"force_bond,omitempty"` + + // Mark this VLAN a native VLAN on the port. This can be used only if this assignment assigns second or further VLAN to the port. To ensure that this attachment is not first on a port, you can use depends_on pointing to another equinix_metal_port_vlan_attachment, just like in the layer2-individual example above + // +kubebuilder:validation:Optional + Native *bool `json:"native,omitempty" tf:"native,omitempty"` + + // Name of network port to be assigned to the VLAN + // +kubebuilder:validation:Required + PortName *string `json:"portName" tf:"port_name,omitempty"` + + // VXLAN Network Identifier, integer + // +kubebuilder:validation:Required + VlanVnid *float64 `json:"vlanVnid" tf:"vlan_vnid,omitempty"` +} + +// PortVlanAttachmentSpec defines the desired state of PortVlanAttachment +type PortVlanAttachmentSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider PortVlanAttachmentParameters `json:"forProvider"` +} + +// PortVlanAttachmentStatus defines the observed state of PortVlanAttachment. +type PortVlanAttachmentStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider PortVlanAttachmentObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// PortVlanAttachment is the Schema for the PortVlanAttachments API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type PortVlanAttachment struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec PortVlanAttachmentSpec `json:"spec"` + Status PortVlanAttachmentStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// PortVlanAttachmentList contains a list of PortVlanAttachments +type PortVlanAttachmentList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []PortVlanAttachment `json:"items"` +} + +// Repository type metadata. +var ( + PortVlanAttachment_Kind = "PortVlanAttachment" + PortVlanAttachment_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: PortVlanAttachment_Kind}.String() + PortVlanAttachment_KindAPIVersion = PortVlanAttachment_Kind + "." + CRDGroupVersion.String() + PortVlanAttachment_GroupVersionKind = CRDGroupVersion.WithKind(PortVlanAttachment_Kind) +) + +func init() { + SchemeBuilder.Register(&PortVlanAttachment{}, &PortVlanAttachmentList{}) +} diff --git a/apis/metal/v1alpha1/zz_project_types.go b/apis/metal/v1alpha1/zz_project_types.go new file mode 100755 index 0000000..b1ff5dc --- /dev/null +++ b/apis/metal/v1alpha1/zz_project_types.go @@ -0,0 +1,136 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type BGPConfigObservation struct { + MaxPrefix *float64 `json:"maxPrefix,omitempty" tf:"max_prefix,omitempty"` + + Status *string `json:"status,omitempty" tf:"status,omitempty"` +} + +type BGPConfigParameters struct { + + // Autonomous System Number for local BGP deployment + // +kubebuilder:validation:Required + Asn *float64 `json:"asn" tf:"asn,omitempty"` + + // "local" or "global", the local is likely to be usable immediately, the global will need to be review by Equinix Metal engineers + // +kubebuilder:validation:Required + DeploymentType *string `json:"deploymentType" tf:"deployment_type,omitempty"` + + // Password for BGP session in plaintext (not a checksum) + // +kubebuilder:validation:Optional + Md5SecretRef *v1.SecretKeySelector `json:"md5SecretRef,omitempty" tf:"-"` +} + +type ProjectObservation struct { + BGPConfig []BGPConfigObservation `json:"bgpConfig,omitempty" tf:"bgp_config,omitempty"` + + Created *string `json:"created,omitempty" tf:"created,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + Updated *string `json:"updated,omitempty" tf:"updated,omitempty"` +} + +type ProjectParameters struct { + + // Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/) + // +kubebuilder:validation:Optional + BGPConfig []BGPConfigParameters `json:"bgpConfig,omitempty" tf:"bgp_config,omitempty"` + + // Enable or disable [Backend Transfer](https://metal.equinix.com/developers/docs/networking/backend-transfer/), default is false + // +kubebuilder:validation:Optional + BackendTransfer *bool `json:"backendTransfer,omitempty" tf:"backend_transfer,omitempty"` + + // The name of the project + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` + + // The UUID of organization under which you want to create the project. If you leave it out, the project will be create under your the default organization of your account + // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Organization + // +kubebuilder:validation:Optional + OrganizationID *string `json:"organizationId,omitempty" tf:"organization_id,omitempty"` + + // +kubebuilder:validation:Optional + OrganizationIDRef *v1.Reference `json:"organizationIdRef,omitempty" tf:"-"` + + // +kubebuilder:validation:Optional + OrganizationIDSelector *v1.Selector `json:"organizationIdSelector,omitempty" tf:"-"` + + // The UUID of payment method for this project. The payment method and the project need to belong to the same organization (passed with organization_id, or default) + // +kubebuilder:validation:Optional + PaymentMethodID *string `json:"paymentMethodId,omitempty" tf:"payment_method_id,omitempty"` +} + +// ProjectSpec defines the desired state of Project +type ProjectSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ProjectParameters `json:"forProvider"` +} + +// ProjectStatus defines the observed state of Project. +type ProjectStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ProjectObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Project is the Schema for the Projects API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type Project struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec ProjectSpec `json:"spec"` + Status ProjectStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ProjectList contains a list of Projects +type ProjectList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Project `json:"items"` +} + +// Repository type metadata. +var ( + Project_Kind = "Project" + Project_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Project_Kind}.String() + Project_KindAPIVersion = Project_Kind + "." + CRDGroupVersion.String() + Project_GroupVersionKind = CRDGroupVersion.WithKind(Project_Kind) +) + +func init() { + SchemeBuilder.Register(&Project{}, &ProjectList{}) +} diff --git a/apis/metal/v1alpha1/zz_projectapikey_types.go b/apis/metal/v1alpha1/zz_projectapikey_types.go new file mode 100755 index 0000000..932219c --- /dev/null +++ b/apis/metal/v1alpha1/zz_projectapikey_types.go @@ -0,0 +1,94 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ProjectAPIKeyObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type ProjectAPIKeyParameters struct { + + // Description string for the API key + // +kubebuilder:validation:Required + Description *string `json:"description" tf:"description,omitempty"` + + // UUID of project which the new API key is scoped to + // +kubebuilder:validation:Required + ProjectID *string `json:"projectId" tf:"project_id,omitempty"` + + // Flag indicating whether the API key shoud be read-only + // +kubebuilder:validation:Required + ReadOnly *bool `json:"readOnly" tf:"read_only,omitempty"` +} + +// ProjectAPIKeySpec defines the desired state of ProjectAPIKey +type ProjectAPIKeySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ProjectAPIKeyParameters `json:"forProvider"` +} + +// ProjectAPIKeyStatus defines the observed state of ProjectAPIKey. +type ProjectAPIKeyStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ProjectAPIKeyObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// ProjectAPIKey is the Schema for the ProjectAPIKeys API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type ProjectAPIKey struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec ProjectAPIKeySpec `json:"spec"` + Status ProjectAPIKeyStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ProjectAPIKeyList contains a list of ProjectAPIKeys +type ProjectAPIKeyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ProjectAPIKey `json:"items"` +} + +// Repository type metadata. +var ( + ProjectAPIKey_Kind = "ProjectAPIKey" + ProjectAPIKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ProjectAPIKey_Kind}.String() + ProjectAPIKey_KindAPIVersion = ProjectAPIKey_Kind + "." + CRDGroupVersion.String() + ProjectAPIKey_GroupVersionKind = CRDGroupVersion.WithKind(ProjectAPIKey_Kind) +) + +func init() { + SchemeBuilder.Register(&ProjectAPIKey{}, &ProjectAPIKeyList{}) +} diff --git a/apis/metal/v1alpha1/zz_projectsshkey_types.go b/apis/metal/v1alpha1/zz_projectsshkey_types.go new file mode 100755 index 0000000..29b70fc --- /dev/null +++ b/apis/metal/v1alpha1/zz_projectsshkey_types.go @@ -0,0 +1,102 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ProjectSSHKeyObservation struct { + Created *string `json:"created,omitempty" tf:"created,omitempty"` + + Fingerprint *string `json:"fingerprint,omitempty" tf:"fingerprint,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + OwnerID *string `json:"ownerId,omitempty" tf:"owner_id,omitempty"` + + Updated *string `json:"updated,omitempty" tf:"updated,omitempty"` +} + +type ProjectSSHKeyParameters struct { + + // The name of the SSH key for identification + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` + + // The ID of parent project + // +kubebuilder:validation:Required + ProjectID *string `json:"projectId" tf:"project_id,omitempty"` + + // The public key. If this is a file, it + // +kubebuilder:validation:Required + PublicKey *string `json:"publicKey" tf:"public_key,omitempty"` +} + +// ProjectSSHKeySpec defines the desired state of ProjectSSHKey +type ProjectSSHKeySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ProjectSSHKeyParameters `json:"forProvider"` +} + +// ProjectSSHKeyStatus defines the observed state of ProjectSSHKey. +type ProjectSSHKeyStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ProjectSSHKeyObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// ProjectSSHKey is the Schema for the ProjectSSHKeys API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type ProjectSSHKey struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec ProjectSSHKeySpec `json:"spec"` + Status ProjectSSHKeyStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ProjectSSHKeyList contains a list of ProjectSSHKeys +type ProjectSSHKeyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ProjectSSHKey `json:"items"` +} + +// Repository type metadata. +var ( + ProjectSSHKey_Kind = "ProjectSSHKey" + ProjectSSHKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ProjectSSHKey_Kind}.String() + ProjectSSHKey_KindAPIVersion = ProjectSSHKey_Kind + "." + CRDGroupVersion.String() + ProjectSSHKey_GroupVersionKind = CRDGroupVersion.WithKind(ProjectSSHKey_Kind) +) + +func init() { + SchemeBuilder.Register(&ProjectSSHKey{}, &ProjectSSHKeyList{}) +} diff --git a/apis/metal/v1alpha1/zz_reservedipblock_types.go b/apis/metal/v1alpha1/zz_reservedipblock_types.go new file mode 100755 index 0000000..02148b8 --- /dev/null +++ b/apis/metal/v1alpha1/zz_reservedipblock_types.go @@ -0,0 +1,148 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ReservedIPBlockObservation struct { + Address *string `json:"address,omitempty" tf:"address,omitempty"` + + AddressFamily *float64 `json:"addressFamily,omitempty" tf:"address_family,omitempty"` + + CidrNotation *string `json:"cidrNotation,omitempty" tf:"cidr_notation,omitempty"` + + Gateway *string `json:"gateway,omitempty" tf:"gateway,omitempty"` + + Global *bool `json:"global,omitempty" tf:"global,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + Manageable *bool `json:"manageable,omitempty" tf:"manageable,omitempty"` + + Management *bool `json:"management,omitempty" tf:"management,omitempty"` + + Netmask *string `json:"netmask,omitempty" tf:"netmask,omitempty"` + + Public *bool `json:"public,omitempty" tf:"public,omitempty"` +} + +type ReservedIPBlockParameters struct { + + // the size of the network to reserve from an existing vrf ip_range. `cidr` can only be specified with `vrf_id`. Minimum range is 22-29, with 30-31 supported and necessary for virtual-circuits + // +kubebuilder:validation:Optional + Cidr *float64 `json:"cidr,omitempty" tf:"cidr,omitempty"` + + // Custom Data is an arbitrary object (submitted in Terraform as serialized JSON) to assign to the IP Reservation. This may be helpful for self-managed IPAM. The object must be valid JSON. + // +kubebuilder:validation:Optional + CustomData *string `json:"customData,omitempty" tf:"custom_data,omitempty"` + + // Arbitrary description + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // Facility where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with metro + // +kubebuilder:validation:Optional + Facility *string `json:"facility,omitempty" tf:"facility,omitempty"` + + // Metro where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with facility + // +kubebuilder:validation:Optional + Metro *string `json:"metro,omitempty" tf:"metro,omitempty"` + + // an unreserved network address from an existing vrf ip_range. `network` can only be specified with vrf_id + // +kubebuilder:validation:Optional + Network *string `json:"network,omitempty" tf:"network,omitempty"` + + // The metal project ID where to allocate the address block + // +kubebuilder:validation:Required + ProjectID *string `json:"projectId" tf:"project_id,omitempty"` + + // The number of allocated /32 addresses, a power of 2 + // +kubebuilder:validation:Optional + Quantity *float64 `json:"quantity,omitempty" tf:"quantity,omitempty"` + + // Tags attached to the reserved block + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // Either global_ipv4, public_ipv4, or vrf. Defaults to public_ipv4. + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // VRF ID for type=vrf reservations + // +kubebuilder:validation:Optional + VrfID *string `json:"vrfId,omitempty" tf:"vrf_id,omitempty"` + + // Wait for the IP reservation block to reach a desired state on resource creation. One of: `pending`, `created`. The `created` state is default and recommended if the addresses are needed within the configuration. An error will be returned if a timeout or the `denied` state is encountered. + // +kubebuilder:validation:Optional + WaitForState *string `json:"waitForState,omitempty" tf:"wait_for_state,omitempty"` +} + +// ReservedIPBlockSpec defines the desired state of ReservedIPBlock +type ReservedIPBlockSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ReservedIPBlockParameters `json:"forProvider"` +} + +// ReservedIPBlockStatus defines the observed state of ReservedIPBlock. +type ReservedIPBlockStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ReservedIPBlockObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// ReservedIPBlock is the Schema for the ReservedIPBlocks API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type ReservedIPBlock struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec ReservedIPBlockSpec `json:"spec"` + Status ReservedIPBlockStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ReservedIPBlockList contains a list of ReservedIPBlocks +type ReservedIPBlockList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ReservedIPBlock `json:"items"` +} + +// Repository type metadata. +var ( + ReservedIPBlock_Kind = "ReservedIPBlock" + ReservedIPBlock_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ReservedIPBlock_Kind}.String() + ReservedIPBlock_KindAPIVersion = ReservedIPBlock_Kind + "." + CRDGroupVersion.String() + ReservedIPBlock_GroupVersionKind = CRDGroupVersion.WithKind(ReservedIPBlock_Kind) +) + +func init() { + SchemeBuilder.Register(&ReservedIPBlock{}, &ReservedIPBlockList{}) +} diff --git a/apis/metal/v1alpha1/zz_spotmarketrequest_types.go b/apis/metal/v1alpha1/zz_spotmarketrequest_types.go new file mode 100755 index 0000000..670288a --- /dev/null +++ b/apis/metal/v1alpha1/zz_spotmarketrequest_types.go @@ -0,0 +1,165 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type InstanceParametersObservation struct { + TermintationTime *string `json:"termintationTime,omitempty" tf:"termintation_time,omitempty"` +} + +type InstanceParametersParameters struct { + + // +kubebuilder:validation:Optional + AlwaysPxe *bool `json:"alwaysPxe,omitempty" tf:"always_pxe,omitempty"` + + // +kubebuilder:validation:Required + BillingCycle *string `json:"billingCycle" tf:"billing_cycle,omitempty"` + + // +kubebuilder:validation:Optional + Customdata *string `json:"customdata,omitempty" tf:"customdata,omitempty"` + + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // +kubebuilder:validation:Optional + Features []*string `json:"features,omitempty" tf:"features,omitempty"` + + // +kubebuilder:validation:Required + Hostname *string `json:"hostname" tf:"hostname,omitempty"` + + // +kubebuilder:validation:Optional + IpxeScriptURL *string `json:"ipxeScriptUrl,omitempty" tf:"ipxe_script_url,omitempty"` + + // +kubebuilder:validation:Optional + Locked *bool `json:"locked,omitempty" tf:"locked,omitempty"` + + // +kubebuilder:validation:Required + OperatingSystem *string `json:"operatingSystem" tf:"operating_system,omitempty"` + + // +kubebuilder:validation:Required + Plan *string `json:"plan" tf:"plan,omitempty"` + + // +kubebuilder:validation:Optional + ProjectSSHKeys []*string `json:"projectSshKeys,omitempty" tf:"project_ssh_keys,omitempty"` + + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // +kubebuilder:validation:Optional + UserSSHKeys []*string `json:"userSshKeys,omitempty" tf:"user_ssh_keys,omitempty"` + + // +kubebuilder:validation:Optional + Userdata *string `json:"userdata,omitempty" tf:"userdata,omitempty"` +} + +type SpotMarketRequestObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + InstanceParameters []InstanceParametersObservation `json:"instanceParameters,omitempty" tf:"instance_parameters,omitempty"` +} + +type SpotMarketRequestParameters struct { + + // Maximum number devices to be created + // +kubebuilder:validation:Required + DevicesMax *float64 `json:"devicesMax" tf:"devices_max,omitempty"` + + // Miniumum number devices to be created + // +kubebuilder:validation:Required + DevicesMin *float64 `json:"devicesMin" tf:"devices_min,omitempty"` + + // Facility IDs where devices should be created + // +kubebuilder:validation:Optional + Facilities []*string `json:"facilities,omitempty" tf:"facilities,omitempty"` + + // Parameters for devices provisioned from this request. You can find the parameter description from the [equinix_metal_device doc](device.md) + // +kubebuilder:validation:Required + InstanceParameters []InstanceParametersParameters `json:"instanceParameters" tf:"instance_parameters,omitempty"` + + // Maximum price user is willing to pay per hour per device + // +kubebuilder:validation:Required + MaxBidPrice *float64 `json:"maxBidPrice" tf:"max_bid_price,omitempty"` + + // Metro where devices should be created + // +kubebuilder:validation:Optional + Metro *string `json:"metro,omitempty" tf:"metro,omitempty"` + + // Project ID + // +kubebuilder:validation:Required + ProjectID *string `json:"projectId" tf:"project_id,omitempty"` + + // On resource creation - wait until all desired devices are active, on resource destruction - wait until devices are removed + // +kubebuilder:validation:Optional + WaitForDevices *bool `json:"waitForDevices,omitempty" tf:"wait_for_devices,omitempty"` +} + +// SpotMarketRequestSpec defines the desired state of SpotMarketRequest +type SpotMarketRequestSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider SpotMarketRequestParameters `json:"forProvider"` +} + +// SpotMarketRequestStatus defines the observed state of SpotMarketRequest. +type SpotMarketRequestStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider SpotMarketRequestObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// SpotMarketRequest is the Schema for the SpotMarketRequests API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type SpotMarketRequest struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec SpotMarketRequestSpec `json:"spec"` + Status SpotMarketRequestStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// SpotMarketRequestList contains a list of SpotMarketRequests +type SpotMarketRequestList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []SpotMarketRequest `json:"items"` +} + +// Repository type metadata. +var ( + SpotMarketRequest_Kind = "SpotMarketRequest" + SpotMarketRequest_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: SpotMarketRequest_Kind}.String() + SpotMarketRequest_KindAPIVersion = SpotMarketRequest_Kind + "." + CRDGroupVersion.String() + SpotMarketRequest_GroupVersionKind = CRDGroupVersion.WithKind(SpotMarketRequest_Kind) +) + +func init() { + SchemeBuilder.Register(&SpotMarketRequest{}, &SpotMarketRequestList{}) +} diff --git a/apis/metal/v1alpha1/zz_sshkey_types.go b/apis/metal/v1alpha1/zz_sshkey_types.go new file mode 100755 index 0000000..26ccc4d --- /dev/null +++ b/apis/metal/v1alpha1/zz_sshkey_types.go @@ -0,0 +1,98 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type SSHKeyObservation struct { + Created *string `json:"created,omitempty" tf:"created,omitempty"` + + Fingerprint *string `json:"fingerprint,omitempty" tf:"fingerprint,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + OwnerID *string `json:"ownerId,omitempty" tf:"owner_id,omitempty"` + + Updated *string `json:"updated,omitempty" tf:"updated,omitempty"` +} + +type SSHKeyParameters struct { + + // The name of the SSH key for identification + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` + + // The public key. If this is a file, it + // +kubebuilder:validation:Required + PublicKey *string `json:"publicKey" tf:"public_key,omitempty"` +} + +// SSHKeySpec defines the desired state of SSHKey +type SSHKeySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider SSHKeyParameters `json:"forProvider"` +} + +// SSHKeyStatus defines the observed state of SSHKey. +type SSHKeyStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider SSHKeyObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// SSHKey is the Schema for the SSHKeys API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type SSHKey struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec SSHKeySpec `json:"spec"` + Status SSHKeyStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// SSHKeyList contains a list of SSHKeys +type SSHKeyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []SSHKey `json:"items"` +} + +// Repository type metadata. +var ( + SSHKey_Kind = "SSHKey" + SSHKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: SSHKey_Kind}.String() + SSHKey_KindAPIVersion = SSHKey_Kind + "." + CRDGroupVersion.String() + SSHKey_GroupVersionKind = CRDGroupVersion.WithKind(SSHKey_Kind) +) + +func init() { + SchemeBuilder.Register(&SSHKey{}, &SSHKeyList{}) +} diff --git a/apis/metal/v1alpha1/zz_userapikey_types.go b/apis/metal/v1alpha1/zz_userapikey_types.go new file mode 100755 index 0000000..15e2363 --- /dev/null +++ b/apis/metal/v1alpha1/zz_userapikey_types.go @@ -0,0 +1,92 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type UserAPIKeyObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + UserID *string `json:"userId,omitempty" tf:"user_id,omitempty"` +} + +type UserAPIKeyParameters struct { + + // Description string for the API key + // +kubebuilder:validation:Required + Description *string `json:"description" tf:"description,omitempty"` + + // Flag indicating whether the API key shoud be read-only + // +kubebuilder:validation:Required + ReadOnly *bool `json:"readOnly" tf:"read_only,omitempty"` +} + +// UserAPIKeySpec defines the desired state of UserAPIKey +type UserAPIKeySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider UserAPIKeyParameters `json:"forProvider"` +} + +// UserAPIKeyStatus defines the observed state of UserAPIKey. +type UserAPIKeyStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider UserAPIKeyObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// UserAPIKey is the Schema for the UserAPIKeys API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type UserAPIKey struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec UserAPIKeySpec `json:"spec"` + Status UserAPIKeyStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// UserAPIKeyList contains a list of UserAPIKeys +type UserAPIKeyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []UserAPIKey `json:"items"` +} + +// Repository type metadata. +var ( + UserAPIKey_Kind = "UserAPIKey" + UserAPIKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: UserAPIKey_Kind}.String() + UserAPIKey_KindAPIVersion = UserAPIKey_Kind + "." + CRDGroupVersion.String() + UserAPIKey_GroupVersionKind = CRDGroupVersion.WithKind(UserAPIKey_Kind) +) + +func init() { + SchemeBuilder.Register(&UserAPIKey{}, &UserAPIKeyList{}) +} diff --git a/apis/metal/v1alpha1/zz_virtualcircuit_types.go b/apis/metal/v1alpha1/zz_virtualcircuit_types.go new file mode 100755 index 0000000..b8b0ffe --- /dev/null +++ b/apis/metal/v1alpha1/zz_virtualcircuit_types.go @@ -0,0 +1,150 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type VirtualCircuitObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + NniVnid *float64 `json:"nniVnid,omitempty" tf:"nni_vnid,omitempty"` + + Status *string `json:"status,omitempty" tf:"status,omitempty"` + + Vnid *float64 `json:"vnid,omitempty" tf:"vnid,omitempty"` +} + +type VirtualCircuitParameters struct { + + // UUID of Connection where the VC is scoped to + // +kubebuilder:validation:Required + ConnectionID *string `json:"connectionId" tf:"connection_id,omitempty"` + + // The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet. + // +kubebuilder:validation:Optional + CustomerIP *string `json:"customerIp,omitempty" tf:"customer_ip,omitempty"` + + // Description of the Virtual Circuit resource + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // The password that can be set for the VRF BGP peer + // +kubebuilder:validation:Optional + Md5SecretRef *v1.SecretKeySelector `json:"md5SecretRef,omitempty" tf:"-"` + + // The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet. + // +kubebuilder:validation:Optional + MetalIP *string `json:"metalIp,omitempty" tf:"metal_ip,omitempty"` + + // Name of the Virtual Circuit resource + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // Equinix Metal network-to-network VLAN ID (optional when the connection has mode=tunnel) + // +kubebuilder:validation:Optional + NniVlan *float64 `json:"nniVlan,omitempty" tf:"nni_vlan,omitempty"` + + // The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the local_asn of the VRF. + // +kubebuilder:validation:Optional + PeerAsn *float64 `json:"peerAsn,omitempty" tf:"peer_asn,omitempty"` + + // UUID of the Connection Port where the VC is scoped to + // +kubebuilder:validation:Required + PortID *string `json:"portId" tf:"port_id,omitempty"` + + // UUID of the Project where the VC is scoped to + // +kubebuilder:validation:Required + ProjectID *string `json:"projectId" tf:"project_id,omitempty"` + + // Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared. + // +kubebuilder:validation:Optional + Speed *string `json:"speed,omitempty" tf:"speed,omitempty"` + + // A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31. + // * For a /31 block, it will only have two IP addresses, which will be used for the metal_ip and customer_ip. + // * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip. + // +kubebuilder:validation:Optional + Subnet *string `json:"subnet,omitempty" tf:"subnet,omitempty"` + + // Tags attached to the virtual circuit + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // UUID of the VLAN to associate + // +kubebuilder:validation:Optional + VlanID *string `json:"vlanId,omitempty" tf:"vlan_id,omitempty"` + + // UUID of the VRF to associate + // +kubebuilder:validation:Optional + VrfID *string `json:"vrfId,omitempty" tf:"vrf_id,omitempty"` +} + +// VirtualCircuitSpec defines the desired state of VirtualCircuit +type VirtualCircuitSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider VirtualCircuitParameters `json:"forProvider"` +} + +// VirtualCircuitStatus defines the observed state of VirtualCircuit. +type VirtualCircuitStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider VirtualCircuitObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// VirtualCircuit is the Schema for the VirtualCircuits API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type VirtualCircuit struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec VirtualCircuitSpec `json:"spec"` + Status VirtualCircuitStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// VirtualCircuitList contains a list of VirtualCircuits +type VirtualCircuitList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []VirtualCircuit `json:"items"` +} + +// Repository type metadata. +var ( + VirtualCircuit_Kind = "VirtualCircuit" + VirtualCircuit_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: VirtualCircuit_Kind}.String() + VirtualCircuit_KindAPIVersion = VirtualCircuit_Kind + "." + CRDGroupVersion.String() + VirtualCircuit_GroupVersionKind = CRDGroupVersion.WithKind(VirtualCircuit_Kind) +) + +func init() { + SchemeBuilder.Register(&VirtualCircuit{}, &VirtualCircuitList{}) +} diff --git a/apis/metal/v1alpha1/zz_vlan_types.go b/apis/metal/v1alpha1/zz_vlan_types.go new file mode 100755 index 0000000..577c868 --- /dev/null +++ b/apis/metal/v1alpha1/zz_vlan_types.go @@ -0,0 +1,101 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type VlanObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type VlanParameters struct { + + // Description string + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // Facility where to create the VLAN + // +kubebuilder:validation:Optional + Facility *string `json:"facility,omitempty" tf:"facility,omitempty"` + + // +kubebuilder:validation:Optional + Metro *string `json:"metro,omitempty" tf:"metro,omitempty"` + + // ID of parent project + // +kubebuilder:validation:Required + ProjectID *string `json:"projectId" tf:"project_id,omitempty"` + + // VLAN ID, must be unique in metro + // +kubebuilder:validation:Optional + Vxlan *float64 `json:"vxlan,omitempty" tf:"vxlan,omitempty"` +} + +// VlanSpec defines the desired state of Vlan +type VlanSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider VlanParameters `json:"forProvider"` +} + +// VlanStatus defines the observed state of Vlan. +type VlanStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider VlanObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Vlan is the Schema for the Vlans API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type Vlan struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec VlanSpec `json:"spec"` + Status VlanStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// VlanList contains a list of Vlans +type VlanList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Vlan `json:"items"` +} + +// Repository type metadata. +var ( + Vlan_Kind = "Vlan" + Vlan_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Vlan_Kind}.String() + Vlan_KindAPIVersion = Vlan_Kind + "." + CRDGroupVersion.String() + Vlan_GroupVersionKind = CRDGroupVersion.WithKind(Vlan_Kind) +) + +func init() { + SchemeBuilder.Register(&Vlan{}, &VlanList{}) +} diff --git a/apis/metal/v1alpha1/zz_vrf_types.go b/apis/metal/v1alpha1/zz_vrf_types.go new file mode 100755 index 0000000..82ba793 --- /dev/null +++ b/apis/metal/v1alpha1/zz_vrf_types.go @@ -0,0 +1,106 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type VrfObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type VrfParameters struct { + + // Description of the VRF + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF. + // +kubebuilder:validation:Optional + IPRanges []*string `json:"ipRanges,omitempty" tf:"ip_ranges,omitempty"` + + // The 4-byte ASN set on the VRF. + // +kubebuilder:validation:Optional + LocalAsn *float64 `json:"localAsn,omitempty" tf:"local_asn,omitempty"` + + // Metro Code + // +kubebuilder:validation:Required + Metro *string `json:"metro" tf:"metro,omitempty"` + + // User-supplied name of the VRF, unique to the project + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` + + // Project ID + // +kubebuilder:validation:Required + ProjectID *string `json:"projectId" tf:"project_id,omitempty"` +} + +// VrfSpec defines the desired state of Vrf +type VrfSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider VrfParameters `json:"forProvider"` +} + +// VrfStatus defines the observed state of Vrf. +type VrfStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider VrfObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Vrf is the Schema for the Vrfs API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} +type Vrf struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec VrfSpec `json:"spec"` + Status VrfStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// VrfList contains a list of Vrfs +type VrfList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Vrf `json:"items"` +} + +// Repository type metadata. +var ( + Vrf_Kind = "Vrf" + Vrf_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Vrf_Kind}.String() + Vrf_KindAPIVersion = Vrf_Kind + "." + CRDGroupVersion.String() + Vrf_GroupVersionKind = CRDGroupVersion.WithKind(Vrf_Kind) +) + +func init() { + SchemeBuilder.Register(&Vrf{}, &VrfList{}) +} diff --git a/apis/network/v1alpha1/zz_acltemplate_terraformed.go b/apis/network/v1alpha1/zz_acltemplate_terraformed.go deleted file mode 100755 index fd5b9a4..0000000 --- a/apis/network/v1alpha1/zz_acltemplate_terraformed.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright 2021 The Crossplane 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. -*/ - -// Code generated by terrajet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane-contrib/terrajet/pkg/resource" - "github.com/crossplane-contrib/terrajet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this AclTemplate -func (mg *AclTemplate) GetTerraformResourceType() string { - return "equinix_network_acl_template" -} - -// GetConnectionDetailsMapping for this AclTemplate -func (tr *AclTemplate) GetConnectionDetailsMapping() map[string]string { - return nil -} - -// GetObservation of this AclTemplate -func (tr *AclTemplate) GetObservation() (map[string]interface{}, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this AclTemplate -func (tr *AclTemplate) SetObservation(obs map[string]interface{}) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetParameters of this AclTemplate -func (tr *AclTemplate) GetParameters() (map[string]interface{}, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this AclTemplate -func (tr *AclTemplate) SetParameters(params map[string]interface{}) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// LateInitialize this AclTemplate using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *AclTemplate) LateInitialize(attrs []byte) (bool, error) { - params := &AclTemplateParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *AclTemplate) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/network/v1alpha1/zz_acltemplate_types.go b/apis/network/v1alpha1/zz_acltemplate_types.go index be63ab7..6dabca7 100755 --- a/apis/network/v1alpha1/zz_acltemplate_types.go +++ b/apis/network/v1alpha1/zz_acltemplate_types.go @@ -25,17 +25,23 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type AclTemplateObservation struct { +type ACLTemplateObservation struct { DeviceACLStatus *string `json:"deviceAclStatus,omitempty" tf:"device_acl_status,omitempty"` + DeviceDetails []DeviceDetailsObservation `json:"deviceDetails,omitempty" tf:"device_details,omitempty"` + DeviceID *string `json:"deviceId,omitempty" tf:"device_id,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + InboundRule []InboundRuleObservation `json:"inboundRule,omitempty" tf:"inbound_rule,omitempty"` + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` } -type AclTemplateParameters struct { +type ACLTemplateParameters struct { - // ACL template description + // ACL template description, up to 200 characters // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` @@ -44,22 +50,37 @@ type AclTemplateParameters struct { InboundRule []InboundRuleParameters `json:"inboundRule" tf:"inbound_rule,omitempty"` // ACL template location metro code - // +kubebuilder:validation:Required - MetroCode *string `json:"metroCode" tf:"metro_code,omitempty"` + // +kubebuilder:validation:Optional + MetroCode *string `json:"metroCode,omitempty" tf:"metro_code,omitempty"` // ACL template name // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } +type DeviceDetailsObservation struct { + ACLStatus *string `json:"aclStatus,omitempty" tf:"acl_status,omitempty"` + + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` +} + +type DeviceDetailsParameters struct { +} + type InboundRuleObservation struct { - SequenceNumber *int64 `json:"sequenceNumber,omitempty" tf:"sequence_number,omitempty"` + SequenceNumber *float64 `json:"sequenceNumber,omitempty" tf:"sequence_number,omitempty"` SourceType *string `json:"sourceType,omitempty" tf:"source_type,omitempty"` } type InboundRuleParameters struct { + // Inbound rule description, up to 200 characters + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + // Inbound traffic destination ports. Either up to 10, comma separated ports or port range or any word // +kubebuilder:validation:Required DstPort *string `json:"dstPort" tf:"dst_port,omitempty"` @@ -72,56 +93,60 @@ type InboundRuleParameters struct { // +kubebuilder:validation:Required SrcPort *string `json:"srcPort" tf:"src_port,omitempty"` + // Inbound traffic source IP subnet in CIDR format + // +kubebuilder:validation:Optional + Subnet *string `json:"subnet,omitempty" tf:"subnet,omitempty"` + // Inbound traffic source IP subnets in CIDR format - // +kubebuilder:validation:Required - Subnets []*string `json:"subnets" tf:"subnets,omitempty"` + // +kubebuilder:validation:Optional + Subnets []*string `json:"subnets,omitempty" tf:"subnets,omitempty"` } -// AclTemplateSpec defines the desired state of AclTemplate -type AclTemplateSpec struct { +// ACLTemplateSpec defines the desired state of ACLTemplate +type ACLTemplateSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider AclTemplateParameters `json:"forProvider"` + ForProvider ACLTemplateParameters `json:"forProvider"` } -// AclTemplateStatus defines the observed state of AclTemplate. -type AclTemplateStatus struct { +// ACLTemplateStatus defines the observed state of ACLTemplate. +type ACLTemplateStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider AclTemplateObservation `json:"atProvider,omitempty"` + AtProvider ACLTemplateObservation `json:"atProvider,omitempty"` } // +kubebuilder:object:root=true -// AclTemplate is the Schema for the AclTemplates API +// ACLTemplate is the Schema for the ACLTemplates API // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" // +kubebuilder:subresource:status // +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} -type AclTemplate struct { +type ACLTemplate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec AclTemplateSpec `json:"spec"` - Status AclTemplateStatus `json:"status,omitempty"` + Spec ACLTemplateSpec `json:"spec"` + Status ACLTemplateStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// AclTemplateList contains a list of AclTemplates -type AclTemplateList struct { +// ACLTemplateList contains a list of ACLTemplates +type ACLTemplateList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []AclTemplate `json:"items"` + Items []ACLTemplate `json:"items"` } // Repository type metadata. var ( - AclTemplate_Kind = "AclTemplate" - AclTemplate_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: AclTemplate_Kind}.String() - AclTemplate_KindAPIVersion = AclTemplate_Kind + "." + CRDGroupVersion.String() - AclTemplate_GroupVersionKind = CRDGroupVersion.WithKind(AclTemplate_Kind) + ACLTemplate_Kind = "ACLTemplate" + ACLTemplate_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ACLTemplate_Kind}.String() + ACLTemplate_KindAPIVersion = ACLTemplate_Kind + "." + CRDGroupVersion.String() + ACLTemplate_GroupVersionKind = CRDGroupVersion.WithKind(ACLTemplate_Kind) ) func init() { - SchemeBuilder.Register(&AclTemplate{}, &AclTemplateList{}) + SchemeBuilder.Register(&ACLTemplate{}, &ACLTemplateList{}) } diff --git a/apis/network/v1alpha1/zz_bgp_terraformed.go b/apis/network/v1alpha1/zz_bgp_terraformed.go deleted file mode 100755 index ca78979..0000000 --- a/apis/network/v1alpha1/zz_bgp_terraformed.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright 2021 The Crossplane 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. -*/ - -// Code generated by terrajet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane-contrib/terrajet/pkg/resource" - "github.com/crossplane-contrib/terrajet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this Bgp -func (mg *Bgp) GetTerraformResourceType() string { - return "equinix_network_bgp" -} - -// GetConnectionDetailsMapping for this Bgp -func (tr *Bgp) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"authentication_key": "spec.forProvider.authenticationKeySecretRef"} -} - -// GetObservation of this Bgp -func (tr *Bgp) GetObservation() (map[string]interface{}, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this Bgp -func (tr *Bgp) SetObservation(obs map[string]interface{}) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetParameters of this Bgp -func (tr *Bgp) GetParameters() (map[string]interface{}, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this Bgp -func (tr *Bgp) SetParameters(params map[string]interface{}) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// LateInitialize this Bgp using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *Bgp) LateInitialize(attrs []byte) (bool, error) { - params := &BgpParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *Bgp) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/network/v1alpha1/zz_bgp_types.go b/apis/network/v1alpha1/zz_bgp_types.go index f420790..70a421b 100755 --- a/apis/network/v1alpha1/zz_bgp_types.go +++ b/apis/network/v1alpha1/zz_bgp_types.go @@ -25,9 +25,11 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type BgpObservation struct { +type BGPObservation struct { DeviceID *string `json:"deviceId,omitempty" tf:"device_id,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + ProvisioningStatus *string `json:"provisioningStatus,omitempty" tf:"provisioning_status,omitempty"` State *string `json:"state,omitempty" tf:"state,omitempty"` @@ -35,7 +37,7 @@ type BgpObservation struct { UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` } -type BgpParameters struct { +type BGPParameters struct { // Shared key used for BGP peer authentication // +kubebuilder:validation:Optional @@ -47,7 +49,7 @@ type BgpParameters struct { // Local ASN number // +kubebuilder:validation:Required - LocalAsn *int64 `json:"localAsn" tf:"local_asn,omitempty"` + LocalAsn *float64 `json:"localAsn" tf:"local_asn,omitempty"` // IP address in CIDR format of a local device // +kubebuilder:validation:Required @@ -55,58 +57,58 @@ type BgpParameters struct { // Remote ASN number // +kubebuilder:validation:Required - RemoteAsn *int64 `json:"remoteAsn" tf:"remote_asn,omitempty"` + RemoteAsn *float64 `json:"remoteAsn" tf:"remote_asn,omitempty"` // IP address of remote peer // +kubebuilder:validation:Required RemoteIPAddress *string `json:"remoteIpAddress" tf:"remote_ip_address,omitempty"` } -// BgpSpec defines the desired state of Bgp -type BgpSpec struct { +// BGPSpec defines the desired state of BGP +type BGPSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider BgpParameters `json:"forProvider"` + ForProvider BGPParameters `json:"forProvider"` } -// BgpStatus defines the observed state of Bgp. -type BgpStatus struct { +// BGPStatus defines the observed state of BGP. +type BGPStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider BgpObservation `json:"atProvider,omitempty"` + AtProvider BGPObservation `json:"atProvider,omitempty"` } // +kubebuilder:object:root=true -// Bgp is the Schema for the Bgps API +// BGP is the Schema for the BGPs API // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" // +kubebuilder:subresource:status // +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} -type Bgp struct { +type BGP struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec BgpSpec `json:"spec"` - Status BgpStatus `json:"status,omitempty"` + Spec BGPSpec `json:"spec"` + Status BGPStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// BgpList contains a list of Bgps -type BgpList struct { +// BGPList contains a list of BGPs +type BGPList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []Bgp `json:"items"` + Items []BGP `json:"items"` } // Repository type metadata. var ( - Bgp_Kind = "Bgp" - Bgp_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Bgp_Kind}.String() - Bgp_KindAPIVersion = Bgp_Kind + "." + CRDGroupVersion.String() - Bgp_GroupVersionKind = CRDGroupVersion.WithKind(Bgp_Kind) + BGP_Kind = "BGP" + BGP_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: BGP_Kind}.String() + BGP_KindAPIVersion = BGP_Kind + "." + CRDGroupVersion.String() + BGP_GroupVersionKind = CRDGroupVersion.WithKind(BGP_Kind) ) func init() { - SchemeBuilder.Register(&Bgp{}, &BgpList{}) + SchemeBuilder.Register(&BGP{}, &BGPList{}) } diff --git a/apis/network/v1alpha1/zz_device_terraformed.go b/apis/network/v1alpha1/zz_device_terraformed.go deleted file mode 100755 index a9ae97d..0000000 --- a/apis/network/v1alpha1/zz_device_terraformed.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright 2021 The Crossplane 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. -*/ - -// Code generated by terrajet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane-contrib/terrajet/pkg/resource" - "github.com/crossplane-contrib/terrajet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this Device -func (mg *Device) GetTerraformResourceType() string { - return "equinix_network_device" -} - -// GetConnectionDetailsMapping for this Device -func (tr *Device) GetConnectionDetailsMapping() map[string]string { - return nil -} - -// GetObservation of this Device -func (tr *Device) GetObservation() (map[string]interface{}, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this Device -func (tr *Device) SetObservation(obs map[string]interface{}) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetParameters of this Device -func (tr *Device) GetParameters() (map[string]interface{}, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this Device -func (tr *Device) SetParameters(params map[string]interface{}) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// LateInitialize this Device using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *Device) LateInitialize(attrs []byte) (bool, error) { - params := &DeviceParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *Device) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/network/v1alpha1/zz_device_types.go b/apis/network/v1alpha1/zz_device_types.go index ebad157..0826ede 100755 --- a/apis/network/v1alpha1/zz_device_types.go +++ b/apis/network/v1alpha1/zz_device_types.go @@ -25,8 +25,37 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type ClusterDetailsObservation struct { + ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` + + Node0 []Node0Observation `json:"node0,omitempty" tf:"node0,omitempty"` + + Node1 []Node1Observation `json:"node1,omitempty" tf:"node1,omitempty"` + + NumOfNodes *float64 `json:"numOfNodes,omitempty" tf:"num_of_nodes,omitempty"` +} + +type ClusterDetailsParameters struct { + + // The name of the cluster device + // +kubebuilder:validation:Required + ClusterName *string `json:"clusterName" tf:"cluster_name,omitempty"` + + // An object that has node0 details + // +kubebuilder:validation:Required + Node0 []Node0Parameters `json:"node0" tf:"node0,omitempty"` + + // An object that has node1 details + // +kubebuilder:validation:Required + Node1 []Node1Parameters `json:"node1" tf:"node1,omitempty"` +} + type DeviceObservation struct { - Asn *int64 `json:"asn,omitempty" tf:"asn,omitempty"` + Asn *float64 `json:"asn,omitempty" tf:"asn,omitempty"` + + ClusterDetails []ClusterDetailsObservation `json:"clusterDetails,omitempty" tf:"cluster_details,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` Ibx *string `json:"ibx,omitempty" tf:"ibx,omitempty"` @@ -46,6 +75,8 @@ type DeviceObservation struct { SSHIPFqdn *string `json:"sshIpFqdn,omitempty" tf:"ssh_ip_fqdn,omitempty"` + SecondaryDevice []SecondaryDeviceObservation `json:"secondaryDevice,omitempty" tf:"secondary_device,omitempty"` + Status *string `json:"status,omitempty" tf:"status,omitempty"` UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` @@ -65,15 +96,19 @@ type DeviceParameters struct { // Additional Internet bandwidth, in Mbps, that will be allocated to the device // +kubebuilder:validation:Optional - AdditionalBandwidth *int64 `json:"additionalBandwidth,omitempty" tf:"additional_bandwidth,omitempty"` + AdditionalBandwidth *float64 `json:"additionalBandwidth,omitempty" tf:"additional_bandwidth,omitempty"` // Boolean value that determines device licensing mode: bring your own license or subscription (default) // +kubebuilder:validation:Optional Byol *bool `json:"byol,omitempty" tf:"byol,omitempty"` + // An object that has the cluster details + // +kubebuilder:validation:Optional + ClusterDetails []ClusterDetailsParameters `json:"clusterDetails,omitempty" tf:"cluster_details,omitempty"` + // Number of CPU cores used by device // +kubebuilder:validation:Required - CoreCount *int64 `json:"coreCount" tf:"core_count,omitempty"` + CoreCount *float64 `json:"coreCount" tf:"core_count,omitempty"` // Device hostname prefix // +kubebuilder:validation:Optional @@ -81,7 +116,7 @@ type DeviceParameters struct { // Number of network interfaces on a device. If not specified, default number for a given device type will be used // +kubebuilder:validation:Optional - InterfaceCount *int64 `json:"interfaceCount,omitempty" tf:"interface_count,omitempty"` + InterfaceCount *float64 `json:"interfaceCount,omitempty" tf:"interface_count,omitempty"` // Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL licensing mode // +kubebuilder:validation:Optional @@ -95,6 +130,10 @@ type DeviceParameters struct { // +kubebuilder:validation:Required MetroCode *string `json:"metroCode" tf:"metro_code,omitempty"` + // Unique identifier of applied MGMT ACL template + // +kubebuilder:validation:Optional + MgmtACLTemplateUUID *string `json:"mgmtAclTemplateUuid,omitempty" tf:"mgmt_acl_template_uuid,omitempty"` + // Device name // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` @@ -129,11 +168,11 @@ type DeviceParameters struct { // Device term length // +kubebuilder:validation:Required - TermLength *int64 `json:"termLength" tf:"term_length,omitempty"` + TermLength *float64 `json:"termLength" tf:"term_length,omitempty"` // Device license throughput // +kubebuilder:validation:Optional - Throughput *int64 `json:"throughput,omitempty" tf:"throughput,omitempty"` + Throughput *float64 `json:"throughput,omitempty" tf:"throughput,omitempty"` // Device license throughput unit (Mbps or Gbps) // +kubebuilder:validation:Optional @@ -143,7 +182,7 @@ type DeviceParameters struct { // +kubebuilder:validation:Required TypeCode *string `json:"typeCode" tf:"type_code,omitempty"` - // Map of vendor specific configuration parameters for a device + // Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress) // +kubebuilder:validation:Optional VendorConfiguration map[string]*string `json:"vendorConfiguration,omitempty" tf:"vendor_configuration,omitempty"` @@ -173,7 +212,7 @@ type DeviceSSHKeyParameters struct { type InterfaceObservation struct { AssignedType *string `json:"assignedType,omitempty" tf:"assigned_type,omitempty"` - ID *int64 `json:"id,omitempty" tf:"id,omitempty"` + ID *float64 `json:"id,omitempty" tf:"id,omitempty"` IPAddress *string `json:"ipAddress,omitempty" tf:"ip_address,omitempty"` @@ -191,6 +230,78 @@ type InterfaceObservation struct { type InterfaceParameters struct { } +type Node0Observation struct { + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` +} + +type Node0Parameters struct { + + // License file id. This is necessary for Fortinet and Juniper clusters + // +kubebuilder:validation:Optional + LicenseFileIDSecretRef *v1.SecretKeySelector `json:"licenseFileIdSecretRef,omitempty" tf:"-"` + + // License token. This is necessary for Palo Alto clusters + // +kubebuilder:validation:Optional + LicenseTokenSecretRef *v1.SecretKeySelector `json:"licenseTokenSecretRef,omitempty" tf:"-"` + + // An object that has fields relevant to the vendor of the cluster device + // +kubebuilder:validation:Optional + VendorConfiguration []VendorConfigurationParameters `json:"vendorConfiguration,omitempty" tf:"vendor_configuration,omitempty"` +} + +type Node1Observation struct { + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` +} + +type Node1Parameters struct { + + // License file id. This is necessary for Fortinet and Juniper clusters + // +kubebuilder:validation:Optional + LicenseFileIDSecretRef *v1.SecretKeySelector `json:"licenseFileIdSecretRef,omitempty" tf:"-"` + + // License token. This is necessary for Palo Alto clusters + // +kubebuilder:validation:Optional + LicenseTokenSecretRef *v1.SecretKeySelector `json:"licenseTokenSecretRef,omitempty" tf:"-"` + + // An object that has fields relevant to the vendor of the cluster device + // +kubebuilder:validation:Optional + VendorConfiguration []Node1VendorConfigurationParameters `json:"vendorConfiguration,omitempty" tf:"vendor_configuration,omitempty"` +} + +type Node1VendorConfigurationObservation struct { +} + +type Node1VendorConfigurationParameters struct { + + // Activation key. This is required for Velocloud clusters + // +kubebuilder:validation:Optional + ActivationKeySecretRef *v1.SecretKeySelector `json:"activationKeySecretRef,omitempty" tf:"-"` + + // The administrative password of the device. You can use it to log in to the console. This field is not available for all device types + // +kubebuilder:validation:Optional + AdminPasswordSecretRef *v1.SecretKeySelector `json:"adminPasswordSecretRef,omitempty" tf:"-"` + + // System IP Address. Mandatory for the Fortinet SDWAN cluster device + // +kubebuilder:validation:Optional + Controller1 *string `json:"controller1,omitempty" tf:"controller1,omitempty"` + + // Controller fqdn. This is required for Velocloud clusters + // +kubebuilder:validation:Optional + ControllerFqdn *string `json:"controllerFqdn,omitempty" tf:"controller_fqdn,omitempty"` + + // Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters + // +kubebuilder:validation:Optional + Hostname *string `json:"hostname,omitempty" tf:"hostname,omitempty"` + + // The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster + // +kubebuilder:validation:Optional + RootPasswordSecretRef *v1.SecretKeySelector `json:"rootPasswordSecretRef,omitempty" tf:"-"` +} + type SSHKeyObservation struct { } @@ -208,7 +319,7 @@ type SSHKeyParameters struct { type SecondaryDeviceInterfaceObservation struct { AssignedType *string `json:"assignedType,omitempty" tf:"assigned_type,omitempty"` - ID *int64 `json:"id,omitempty" tf:"id,omitempty"` + ID *float64 `json:"id,omitempty" tf:"id,omitempty"` IPAddress *string `json:"ipAddress,omitempty" tf:"ip_address,omitempty"` @@ -227,7 +338,7 @@ type SecondaryDeviceInterfaceParameters struct { } type SecondaryDeviceObservation struct { - Asn *int64 `json:"asn,omitempty" tf:"asn,omitempty"` + Asn *float64 `json:"asn,omitempty" tf:"asn,omitempty"` Ibx *string `json:"ibx,omitempty" tf:"ibx,omitempty"` @@ -266,7 +377,7 @@ type SecondaryDeviceParameters struct { // Additional Internet bandwidth, in Mbps, that will be allocated to the device // +kubebuilder:validation:Optional - AdditionalBandwidth *int64 `json:"additionalBandwidth,omitempty" tf:"additional_bandwidth,omitempty"` + AdditionalBandwidth *float64 `json:"additionalBandwidth,omitempty" tf:"additional_bandwidth,omitempty"` // Device hostname prefix // +kubebuilder:validation:Optional @@ -284,6 +395,10 @@ type SecondaryDeviceParameters struct { // +kubebuilder:validation:Required MetroCode *string `json:"metroCode" tf:"metro_code,omitempty"` + // Unique identifier of applied MGMT ACL template + // +kubebuilder:validation:Optional + MgmtACLTemplateUUID *string `json:"mgmtAclTemplateUuid,omitempty" tf:"mgmt_acl_template_uuid,omitempty"` + // Device name // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` @@ -296,7 +411,7 @@ type SecondaryDeviceParameters struct { // +kubebuilder:validation:Optional SSHKey []SSHKeyParameters `json:"sshKey,omitempty" tf:"ssh_key,omitempty"` - // Map of vendor specific configuration parameters for a device + // Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress) // +kubebuilder:validation:Optional VendorConfiguration map[string]*string `json:"vendorConfiguration,omitempty" tf:"vendor_configuration,omitempty"` @@ -305,6 +420,36 @@ type SecondaryDeviceParameters struct { WanInterfaceID *string `json:"wanInterfaceId,omitempty" tf:"wan_interface_id,omitempty"` } +type VendorConfigurationObservation struct { +} + +type VendorConfigurationParameters struct { + + // Activation key. This is required for Velocloud clusters + // +kubebuilder:validation:Optional + ActivationKeySecretRef *v1.SecretKeySelector `json:"activationKeySecretRef,omitempty" tf:"-"` + + // The administrative password of the device. You can use it to log in to the console. This field is not available for all device types + // +kubebuilder:validation:Optional + AdminPasswordSecretRef *v1.SecretKeySelector `json:"adminPasswordSecretRef,omitempty" tf:"-"` + + // System IP Address. Mandatory for the Fortinet SDWAN cluster device + // +kubebuilder:validation:Optional + Controller1 *string `json:"controller1,omitempty" tf:"controller1,omitempty"` + + // Controller fqdn. This is required for Velocloud clusters + // +kubebuilder:validation:Optional + ControllerFqdn *string `json:"controllerFqdn,omitempty" tf:"controller_fqdn,omitempty"` + + // Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters + // +kubebuilder:validation:Optional + Hostname *string `json:"hostname,omitempty" tf:"hostname,omitempty"` + + // The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster + // +kubebuilder:validation:Optional + RootPasswordSecretRef *v1.SecretKeySelector `json:"rootPasswordSecretRef,omitempty" tf:"-"` +} + // DeviceSpec defines the desired state of Device type DeviceSpec struct { v1.ResourceSpec `json:",inline"` diff --git a/apis/network/v1alpha1/zz_devicelink_terraformed.go b/apis/network/v1alpha1/zz_devicelink_terraformed.go deleted file mode 100755 index 753db5d..0000000 --- a/apis/network/v1alpha1/zz_devicelink_terraformed.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright 2021 The Crossplane 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. -*/ - -// Code generated by terrajet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane-contrib/terrajet/pkg/resource" - "github.com/crossplane-contrib/terrajet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this DeviceLink -func (mg *DeviceLink) GetTerraformResourceType() string { - return "equinix_network_device_link" -} - -// GetConnectionDetailsMapping for this DeviceLink -func (tr *DeviceLink) GetConnectionDetailsMapping() map[string]string { - return nil -} - -// GetObservation of this DeviceLink -func (tr *DeviceLink) GetObservation() (map[string]interface{}, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this DeviceLink -func (tr *DeviceLink) SetObservation(obs map[string]interface{}) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetParameters of this DeviceLink -func (tr *DeviceLink) GetParameters() (map[string]interface{}, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this DeviceLink -func (tr *DeviceLink) SetParameters(params map[string]interface{}) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// LateInitialize this DeviceLink using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *DeviceLink) LateInitialize(attrs []byte) (bool, error) { - params := &DeviceLinkParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *DeviceLink) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/network/v1alpha1/zz_devicelink_types.go b/apis/network/v1alpha1/zz_devicelink_types.go index 8033f74..09663ef 100755 --- a/apis/network/v1alpha1/zz_devicelink_types.go +++ b/apis/network/v1alpha1/zz_devicelink_types.go @@ -34,8 +34,8 @@ type DeviceLinkDeviceObservation struct { type DeviceLinkDeviceParameters struct { // Device ASN number - // +kubebuilder:validation:Required - Asn *int64 `json:"asn" tf:"asn,omitempty"` + // +kubebuilder:validation:Optional + Asn *float64 `json:"asn,omitempty" tf:"asn,omitempty"` // Device identifier // +kubebuilder:validation:Required @@ -43,10 +43,14 @@ type DeviceLinkDeviceParameters struct { // Device network interface identifier to use for device link connection // +kubebuilder:validation:Optional - InterfaceID *int64 `json:"interfaceId,omitempty" tf:"interface_id,omitempty"` + InterfaceID *float64 `json:"interfaceId,omitempty" tf:"interface_id,omitempty"` } type DeviceLinkObservation struct { + Device []DeviceLinkDeviceObservation `json:"device,omitempty" tf:"device,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + Status *string `json:"status,omitempty" tf:"status,omitempty"` UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` @@ -66,8 +70,8 @@ type DeviceLinkParameters struct { Name *string `json:"name" tf:"name,omitempty"` // subnet - // +kubebuilder:validation:Required - Subnet *string `json:"subnet" tf:"subnet,omitempty"` + // +kubebuilder:validation:Optional + Subnet *string `json:"subnet,omitempty" tf:"subnet,omitempty"` } type LinkObservation struct { @@ -84,16 +88,16 @@ type LinkParameters struct { DstMetroCode *string `json:"dstMetroCode" tf:"dst_metro_code,omitempty"` // Connection destination zone code - // +kubebuilder:validation:Required - DstZoneCode *string `json:"dstZoneCode" tf:"dst_zone_code,omitempty"` + // +kubebuilder:validation:Optional + DstZoneCode *string `json:"dstZoneCode,omitempty" tf:"dst_zone_code,omitempty"` // Connection source metro code // +kubebuilder:validation:Required SrcMetroCode *string `json:"srcMetroCode" tf:"src_metro_code,omitempty"` // Connection source zone code - // +kubebuilder:validation:Required - SrcZoneCode *string `json:"srcZoneCode" tf:"src_zone_code,omitempty"` + // +kubebuilder:validation:Optional + SrcZoneCode *string `json:"srcZoneCode,omitempty" tf:"src_zone_code,omitempty"` // Connection throughput // +kubebuilder:validation:Required diff --git a/apis/network/v1alpha1/zz_generated.deepcopy.go b/apis/network/v1alpha1/zz_generated.deepcopy.go index 8687e50..8b280eb 100644 --- a/apis/network/v1alpha1/zz_generated.deepcopy.go +++ b/apis/network/v1alpha1/zz_generated.deepcopy.go @@ -27,7 +27,7 @@ import ( ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AclTemplate) DeepCopyInto(out *AclTemplate) { +func (in *ACLTemplate) DeepCopyInto(out *ACLTemplate) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -35,18 +35,18 @@ func (in *AclTemplate) DeepCopyInto(out *AclTemplate) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AclTemplate. -func (in *AclTemplate) DeepCopy() *AclTemplate { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ACLTemplate. +func (in *ACLTemplate) DeepCopy() *ACLTemplate { if in == nil { return nil } - out := new(AclTemplate) + out := new(ACLTemplate) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *AclTemplate) DeepCopyObject() runtime.Object { +func (in *ACLTemplate) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -54,31 +54,31 @@ func (in *AclTemplate) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AclTemplateList) DeepCopyInto(out *AclTemplateList) { +func (in *ACLTemplateList) DeepCopyInto(out *ACLTemplateList) { *out = *in out.TypeMeta = in.TypeMeta in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items - *out = make([]AclTemplate, len(*in)) + *out = make([]ACLTemplate, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AclTemplateList. -func (in *AclTemplateList) DeepCopy() *AclTemplateList { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ACLTemplateList. +func (in *ACLTemplateList) DeepCopy() *ACLTemplateList { if in == nil { return nil } - out := new(AclTemplateList) + out := new(ACLTemplateList) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *AclTemplateList) DeepCopyObject() runtime.Object { +func (in *ACLTemplateList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -86,18 +86,37 @@ func (in *AclTemplateList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AclTemplateObservation) DeepCopyInto(out *AclTemplateObservation) { +func (in *ACLTemplateObservation) DeepCopyInto(out *ACLTemplateObservation) { *out = *in if in.DeviceACLStatus != nil { in, out := &in.DeviceACLStatus, &out.DeviceACLStatus *out = new(string) **out = **in } + if in.DeviceDetails != nil { + in, out := &in.DeviceDetails, &out.DeviceDetails + *out = make([]DeviceDetailsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.DeviceID != nil { in, out := &in.DeviceID, &out.DeviceID *out = new(string) **out = **in } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.InboundRule != nil { + in, out := &in.InboundRule, &out.InboundRule + *out = make([]InboundRuleObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.UUID != nil { in, out := &in.UUID, &out.UUID *out = new(string) @@ -105,18 +124,18 @@ func (in *AclTemplateObservation) DeepCopyInto(out *AclTemplateObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AclTemplateObservation. -func (in *AclTemplateObservation) DeepCopy() *AclTemplateObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ACLTemplateObservation. +func (in *ACLTemplateObservation) DeepCopy() *ACLTemplateObservation { if in == nil { return nil } - out := new(AclTemplateObservation) + out := new(ACLTemplateObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AclTemplateParameters) DeepCopyInto(out *AclTemplateParameters) { +func (in *ACLTemplateParameters) DeepCopyInto(out *ACLTemplateParameters) { *out = *in if in.Description != nil { in, out := &in.Description, &out.Description @@ -142,52 +161,52 @@ func (in *AclTemplateParameters) DeepCopyInto(out *AclTemplateParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AclTemplateParameters. -func (in *AclTemplateParameters) DeepCopy() *AclTemplateParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ACLTemplateParameters. +func (in *ACLTemplateParameters) DeepCopy() *ACLTemplateParameters { if in == nil { return nil } - out := new(AclTemplateParameters) + out := new(ACLTemplateParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AclTemplateSpec) DeepCopyInto(out *AclTemplateSpec) { +func (in *ACLTemplateSpec) DeepCopyInto(out *ACLTemplateSpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AclTemplateSpec. -func (in *AclTemplateSpec) DeepCopy() *AclTemplateSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ACLTemplateSpec. +func (in *ACLTemplateSpec) DeepCopy() *ACLTemplateSpec { if in == nil { return nil } - out := new(AclTemplateSpec) + out := new(ACLTemplateSpec) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AclTemplateStatus) DeepCopyInto(out *AclTemplateStatus) { +func (in *ACLTemplateStatus) DeepCopyInto(out *ACLTemplateStatus) { *out = *in in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) in.AtProvider.DeepCopyInto(&out.AtProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AclTemplateStatus. -func (in *AclTemplateStatus) DeepCopy() *AclTemplateStatus { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ACLTemplateStatus. +func (in *ACLTemplateStatus) DeepCopy() *ACLTemplateStatus { if in == nil { return nil } - out := new(AclTemplateStatus) + out := new(ACLTemplateStatus) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Bgp) DeepCopyInto(out *Bgp) { +func (in *BGP) DeepCopyInto(out *BGP) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -195,18 +214,18 @@ func (in *Bgp) DeepCopyInto(out *Bgp) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Bgp. -func (in *Bgp) DeepCopy() *Bgp { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGP. +func (in *BGP) DeepCopy() *BGP { if in == nil { return nil } - out := new(Bgp) + out := new(BGP) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Bgp) DeepCopyObject() runtime.Object { +func (in *BGP) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -214,31 +233,31 @@ func (in *Bgp) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BgpList) DeepCopyInto(out *BgpList) { +func (in *BGPList) DeepCopyInto(out *BGPList) { *out = *in out.TypeMeta = in.TypeMeta in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items - *out = make([]Bgp, len(*in)) + *out = make([]BGP, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BgpList. -func (in *BgpList) DeepCopy() *BgpList { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPList. +func (in *BGPList) DeepCopy() *BGPList { if in == nil { return nil } - out := new(BgpList) + out := new(BGPList) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *BgpList) DeepCopyObject() runtime.Object { +func (in *BGPList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -246,13 +265,18 @@ func (in *BgpList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BgpObservation) DeepCopyInto(out *BgpObservation) { +func (in *BGPObservation) DeepCopyInto(out *BGPObservation) { *out = *in if in.DeviceID != nil { in, out := &in.DeviceID, &out.DeviceID *out = new(string) **out = **in } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } if in.ProvisioningStatus != nil { in, out := &in.ProvisioningStatus, &out.ProvisioningStatus *out = new(string) @@ -270,18 +294,18 @@ func (in *BgpObservation) DeepCopyInto(out *BgpObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BgpObservation. -func (in *BgpObservation) DeepCopy() *BgpObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPObservation. +func (in *BGPObservation) DeepCopy() *BGPObservation { if in == nil { return nil } - out := new(BgpObservation) + out := new(BGPObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BgpParameters) DeepCopyInto(out *BgpParameters) { +func (in *BGPParameters) DeepCopyInto(out *BGPParameters) { *out = *in if in.AuthenticationKeySecretRef != nil { in, out := &in.AuthenticationKeySecretRef, &out.AuthenticationKeySecretRef @@ -295,7 +319,7 @@ func (in *BgpParameters) DeepCopyInto(out *BgpParameters) { } if in.LocalAsn != nil { in, out := &in.LocalAsn, &out.LocalAsn - *out = new(int64) + *out = new(float64) **out = **in } if in.LocalIPAddress != nil { @@ -305,7 +329,7 @@ func (in *BgpParameters) DeepCopyInto(out *BgpParameters) { } if in.RemoteAsn != nil { in, out := &in.RemoteAsn, &out.RemoteAsn - *out = new(int64) + *out = new(float64) **out = **in } if in.RemoteIPAddress != nil { @@ -315,46 +339,119 @@ func (in *BgpParameters) DeepCopyInto(out *BgpParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BgpParameters. -func (in *BgpParameters) DeepCopy() *BgpParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPParameters. +func (in *BGPParameters) DeepCopy() *BGPParameters { if in == nil { return nil } - out := new(BgpParameters) + out := new(BGPParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BgpSpec) DeepCopyInto(out *BgpSpec) { +func (in *BGPSpec) DeepCopyInto(out *BGPSpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BgpSpec. -func (in *BgpSpec) DeepCopy() *BgpSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPSpec. +func (in *BGPSpec) DeepCopy() *BGPSpec { if in == nil { return nil } - out := new(BgpSpec) + out := new(BGPSpec) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BgpStatus) DeepCopyInto(out *BgpStatus) { +func (in *BGPStatus) DeepCopyInto(out *BGPStatus) { *out = *in in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) in.AtProvider.DeepCopyInto(&out.AtProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BgpStatus. -func (in *BgpStatus) DeepCopy() *BgpStatus { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPStatus. +func (in *BGPStatus) DeepCopy() *BGPStatus { + if in == nil { + return nil + } + out := new(BGPStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterDetailsObservation) DeepCopyInto(out *ClusterDetailsObservation) { + *out = *in + if in.ClusterID != nil { + in, out := &in.ClusterID, &out.ClusterID + *out = new(string) + **out = **in + } + if in.Node0 != nil { + in, out := &in.Node0, &out.Node0 + *out = make([]Node0Observation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Node1 != nil { + in, out := &in.Node1, &out.Node1 + *out = make([]Node1Observation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NumOfNodes != nil { + in, out := &in.NumOfNodes, &out.NumOfNodes + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterDetailsObservation. +func (in *ClusterDetailsObservation) DeepCopy() *ClusterDetailsObservation { + if in == nil { + return nil + } + out := new(ClusterDetailsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterDetailsParameters) DeepCopyInto(out *ClusterDetailsParameters) { + *out = *in + if in.ClusterName != nil { + in, out := &in.ClusterName, &out.ClusterName + *out = new(string) + **out = **in + } + if in.Node0 != nil { + in, out := &in.Node0, &out.Node0 + *out = make([]Node0Parameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Node1 != nil { + in, out := &in.Node1, &out.Node1 + *out = make([]Node1Parameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterDetailsParameters. +func (in *ClusterDetailsParameters) DeepCopy() *ClusterDetailsParameters { if in == nil { return nil } - out := new(BgpStatus) + out := new(ClusterDetailsParameters) in.DeepCopyInto(out) return out } @@ -386,6 +483,51 @@ func (in *Device) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceDetailsObservation) DeepCopyInto(out *DeviceDetailsObservation) { + *out = *in + if in.ACLStatus != nil { + in, out := &in.ACLStatus, &out.ACLStatus + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceDetailsObservation. +func (in *DeviceDetailsObservation) DeepCopy() *DeviceDetailsObservation { + if in == nil { + return nil + } + out := new(DeviceDetailsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeviceDetailsParameters) DeepCopyInto(out *DeviceDetailsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceDetailsParameters. +func (in *DeviceDetailsParameters) DeepCopy() *DeviceDetailsParameters { + if in == nil { + return nil + } + out := new(DeviceDetailsParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DeviceLink) DeepCopyInto(out *DeviceLink) { *out = *in @@ -443,7 +585,7 @@ func (in *DeviceLinkDeviceParameters) DeepCopyInto(out *DeviceLinkDeviceParamete *out = *in if in.Asn != nil { in, out := &in.Asn, &out.Asn - *out = new(int64) + *out = new(float64) **out = **in } if in.ID != nil { @@ -453,7 +595,7 @@ func (in *DeviceLinkDeviceParameters) DeepCopyInto(out *DeviceLinkDeviceParamete } if in.InterfaceID != nil { in, out := &in.InterfaceID, &out.InterfaceID - *out = new(int64) + *out = new(float64) **out = **in } } @@ -503,6 +645,18 @@ func (in *DeviceLinkList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DeviceLinkObservation) DeepCopyInto(out *DeviceLinkObservation) { *out = *in + if in.Device != nil { + in, out := &in.Device, &out.Device + *out = make([]DeviceLinkDeviceObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } if in.Status != nil { in, out := &in.Status, &out.Status *out = new(string) @@ -635,7 +789,19 @@ func (in *DeviceObservation) DeepCopyInto(out *DeviceObservation) { *out = *in if in.Asn != nil { in, out := &in.Asn, &out.Asn - *out = new(int64) + *out = new(float64) + **out = **in + } + if in.ClusterDetails != nil { + in, out := &in.ClusterDetails, &out.ClusterDetails + *out = make([]ClusterDetailsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) **out = **in } if in.Ibx != nil { @@ -685,6 +851,13 @@ func (in *DeviceObservation) DeepCopyInto(out *DeviceObservation) { *out = new(string) **out = **in } + if in.SecondaryDevice != nil { + in, out := &in.SecondaryDevice, &out.SecondaryDevice + *out = make([]SecondaryDeviceObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Status != nil { in, out := &in.Status, &out.Status *out = new(string) @@ -727,7 +900,7 @@ func (in *DeviceParameters) DeepCopyInto(out *DeviceParameters) { } if in.AdditionalBandwidth != nil { in, out := &in.AdditionalBandwidth, &out.AdditionalBandwidth - *out = new(int64) + *out = new(float64) **out = **in } if in.Byol != nil { @@ -735,9 +908,16 @@ func (in *DeviceParameters) DeepCopyInto(out *DeviceParameters) { *out = new(bool) **out = **in } + if in.ClusterDetails != nil { + in, out := &in.ClusterDetails, &out.ClusterDetails + *out = make([]ClusterDetailsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.CoreCount != nil { in, out := &in.CoreCount, &out.CoreCount - *out = new(int64) + *out = new(float64) **out = **in } if in.Hostname != nil { @@ -747,7 +927,7 @@ func (in *DeviceParameters) DeepCopyInto(out *DeviceParameters) { } if in.InterfaceCount != nil { in, out := &in.InterfaceCount, &out.InterfaceCount - *out = new(int64) + *out = new(float64) **out = **in } if in.LicenseFile != nil { @@ -765,6 +945,11 @@ func (in *DeviceParameters) DeepCopyInto(out *DeviceParameters) { *out = new(string) **out = **in } + if in.MgmtACLTemplateUUID != nil { + in, out := &in.MgmtACLTemplateUUID, &out.MgmtACLTemplateUUID + *out = new(string) + **out = **in + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -817,12 +1002,12 @@ func (in *DeviceParameters) DeepCopyInto(out *DeviceParameters) { } if in.TermLength != nil { in, out := &in.TermLength, &out.TermLength - *out = new(int64) + *out = new(float64) **out = **in } if in.Throughput != nil { in, out := &in.Throughput, &out.Throughput - *out = new(int64) + *out = new(float64) **out = **in } if in.ThroughputUnit != nil { @@ -951,7 +1136,7 @@ func (in *InboundRuleObservation) DeepCopyInto(out *InboundRuleObservation) { *out = *in if in.SequenceNumber != nil { in, out := &in.SequenceNumber, &out.SequenceNumber - *out = new(int64) + *out = new(float64) **out = **in } if in.SourceType != nil { @@ -974,6 +1159,11 @@ func (in *InboundRuleObservation) DeepCopy() *InboundRuleObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InboundRuleParameters) DeepCopyInto(out *InboundRuleParameters) { *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } if in.DstPort != nil { in, out := &in.DstPort, &out.DstPort *out = new(string) @@ -989,6 +1179,11 @@ func (in *InboundRuleParameters) DeepCopyInto(out *InboundRuleParameters) { *out = new(string) **out = **in } + if in.Subnet != nil { + in, out := &in.Subnet, &out.Subnet + *out = new(string) + **out = **in + } if in.Subnets != nil { in, out := &in.Subnets, &out.Subnets *out = make([]*string, len(*in)) @@ -1022,7 +1217,7 @@ func (in *InterfaceObservation) DeepCopyInto(out *InterfaceObservation) { } if in.ID != nil { in, out := &in.ID, &out.ID - *out = new(int64) + *out = new(float64) **out = **in } if in.IPAddress != nil { @@ -1148,292 +1343,181 @@ func (in *LinkParameters) DeepCopy() *LinkParameters { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SSHKeyObservation) DeepCopyInto(out *SSHKeyObservation) { +func (in *Node0Observation) DeepCopyInto(out *Node0Observation) { *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyObservation. -func (in *SSHKeyObservation) DeepCopy() *SSHKeyObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node0Observation. +func (in *Node0Observation) DeepCopy() *Node0Observation { if in == nil { return nil } - out := new(SSHKeyObservation) + out := new(Node0Observation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SSHKeyParameters) DeepCopyInto(out *SSHKeyParameters) { +func (in *Node0Parameters) DeepCopyInto(out *Node0Parameters) { *out = *in - if in.KeyName != nil { - in, out := &in.KeyName, &out.KeyName - *out = new(string) + if in.LicenseFileIDSecretRef != nil { + in, out := &in.LicenseFileIDSecretRef, &out.LicenseFileIDSecretRef + *out = new(v1.SecretKeySelector) **out = **in } - if in.Username != nil { - in, out := &in.Username, &out.Username - *out = new(string) + if in.LicenseTokenSecretRef != nil { + in, out := &in.LicenseTokenSecretRef, &out.LicenseTokenSecretRef + *out = new(v1.SecretKeySelector) **out = **in } + if in.VendorConfiguration != nil { + in, out := &in.VendorConfiguration, &out.VendorConfiguration + *out = make([]VendorConfigurationParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyParameters. -func (in *SSHKeyParameters) DeepCopy() *SSHKeyParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node0Parameters. +func (in *Node0Parameters) DeepCopy() *Node0Parameters { if in == nil { return nil } - out := new(SSHKeyParameters) + out := new(Node0Parameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SecondaryDeviceInterfaceObservation) DeepCopyInto(out *SecondaryDeviceInterfaceObservation) { +func (in *Node1Observation) DeepCopyInto(out *Node1Observation) { *out = *in - if in.AssignedType != nil { - in, out := &in.AssignedType, &out.AssignedType - *out = new(string) - **out = **in - } - if in.ID != nil { - in, out := &in.ID, &out.ID - *out = new(int64) - **out = **in - } - if in.IPAddress != nil { - in, out := &in.IPAddress, &out.IPAddress - *out = new(string) - **out = **in - } - if in.MacAddress != nil { - in, out := &in.MacAddress, &out.MacAddress - *out = new(string) - **out = **in - } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) **out = **in } - if in.OperationalStatus != nil { - in, out := &in.OperationalStatus, &out.OperationalStatus + if in.UUID != nil { + in, out := &in.UUID, &out.UUID *out = new(string) **out = **in } - if in.Status != nil { - in, out := &in.Status, &out.Status - *out = new(string) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node1Observation. +func (in *Node1Observation) DeepCopy() *Node1Observation { + if in == nil { + return nil + } + out := new(Node1Observation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Node1Parameters) DeepCopyInto(out *Node1Parameters) { + *out = *in + if in.LicenseFileIDSecretRef != nil { + in, out := &in.LicenseFileIDSecretRef, &out.LicenseFileIDSecretRef + *out = new(v1.SecretKeySelector) **out = **in } - if in.Type != nil { - in, out := &in.Type, &out.Type - *out = new(string) + if in.LicenseTokenSecretRef != nil { + in, out := &in.LicenseTokenSecretRef, &out.LicenseTokenSecretRef + *out = new(v1.SecretKeySelector) **out = **in } + if in.VendorConfiguration != nil { + in, out := &in.VendorConfiguration, &out.VendorConfiguration + *out = make([]Node1VendorConfigurationParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryDeviceInterfaceObservation. -func (in *SecondaryDeviceInterfaceObservation) DeepCopy() *SecondaryDeviceInterfaceObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node1Parameters. +func (in *Node1Parameters) DeepCopy() *Node1Parameters { if in == nil { return nil } - out := new(SecondaryDeviceInterfaceObservation) + out := new(Node1Parameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SecondaryDeviceInterfaceParameters) DeepCopyInto(out *SecondaryDeviceInterfaceParameters) { +func (in *Node1VendorConfigurationObservation) DeepCopyInto(out *Node1VendorConfigurationObservation) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryDeviceInterfaceParameters. -func (in *SecondaryDeviceInterfaceParameters) DeepCopy() *SecondaryDeviceInterfaceParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node1VendorConfigurationObservation. +func (in *Node1VendorConfigurationObservation) DeepCopy() *Node1VendorConfigurationObservation { if in == nil { return nil } - out := new(SecondaryDeviceInterfaceParameters) + out := new(Node1VendorConfigurationObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SecondaryDeviceObservation) DeepCopyInto(out *SecondaryDeviceObservation) { +func (in *Node1VendorConfigurationParameters) DeepCopyInto(out *Node1VendorConfigurationParameters) { *out = *in - if in.Asn != nil { - in, out := &in.Asn, &out.Asn - *out = new(int64) + if in.ActivationKeySecretRef != nil { + in, out := &in.ActivationKeySecretRef, &out.ActivationKeySecretRef + *out = new(v1.SecretKeySelector) **out = **in } - if in.Ibx != nil { - in, out := &in.Ibx, &out.Ibx - *out = new(string) + if in.AdminPasswordSecretRef != nil { + in, out := &in.AdminPasswordSecretRef, &out.AdminPasswordSecretRef + *out = new(v1.SecretKeySelector) **out = **in } - if in.Interface != nil { - in, out := &in.Interface, &out.Interface - *out = make([]SecondaryDeviceInterfaceObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.LicenseFileID != nil { - in, out := &in.LicenseFileID, &out.LicenseFileID + if in.Controller1 != nil { + in, out := &in.Controller1, &out.Controller1 *out = new(string) **out = **in } - if in.LicenseStatus != nil { - in, out := &in.LicenseStatus, &out.LicenseStatus + if in.ControllerFqdn != nil { + in, out := &in.ControllerFqdn, &out.ControllerFqdn *out = new(string) **out = **in } - if in.RedundancyType != nil { - in, out := &in.RedundancyType, &out.RedundancyType + if in.Hostname != nil { + in, out := &in.Hostname, &out.Hostname *out = new(string) **out = **in } - if in.RedundantID != nil { - in, out := &in.RedundantID, &out.RedundantID - *out = new(string) - **out = **in - } - if in.Region != nil { - in, out := &in.Region, &out.Region - *out = new(string) - **out = **in - } - if in.SSHIPAddress != nil { - in, out := &in.SSHIPAddress, &out.SSHIPAddress - *out = new(string) - **out = **in - } - if in.SSHIPFqdn != nil { - in, out := &in.SSHIPFqdn, &out.SSHIPFqdn - *out = new(string) - **out = **in - } - if in.Status != nil { - in, out := &in.Status, &out.Status - *out = new(string) - **out = **in - } - if in.UUID != nil { - in, out := &in.UUID, &out.UUID - *out = new(string) - **out = **in - } - if in.ZoneCode != nil { - in, out := &in.ZoneCode, &out.ZoneCode - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryDeviceObservation. -func (in *SecondaryDeviceObservation) DeepCopy() *SecondaryDeviceObservation { - if in == nil { - return nil - } - out := new(SecondaryDeviceObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SecondaryDeviceParameters) DeepCopyInto(out *SecondaryDeviceParameters) { - *out = *in - if in.ACLTemplateID != nil { - in, out := &in.ACLTemplateID, &out.ACLTemplateID - *out = new(string) - **out = **in - } - if in.AccountNumber != nil { - in, out := &in.AccountNumber, &out.AccountNumber - *out = new(string) - **out = **in - } - if in.AdditionalBandwidth != nil { - in, out := &in.AdditionalBandwidth, &out.AdditionalBandwidth - *out = new(int64) - **out = **in - } - if in.Hostname != nil { - in, out := &in.Hostname, &out.Hostname - *out = new(string) - **out = **in - } - if in.LicenseFile != nil { - in, out := &in.LicenseFile, &out.LicenseFile - *out = new(string) - **out = **in - } - if in.LicenseToken != nil { - in, out := &in.LicenseToken, &out.LicenseToken - *out = new(string) - **out = **in - } - if in.MetroCode != nil { - in, out := &in.MetroCode, &out.MetroCode - *out = new(string) - **out = **in - } - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.Notifications != nil { - in, out := &in.Notifications, &out.Notifications - *out = make([]*string, len(*in)) - for i := range *in { - if (*in)[i] != nil { - in, out := &(*in)[i], &(*out)[i] - *out = new(string) - **out = **in - } - } - } - if in.SSHKey != nil { - in, out := &in.SSHKey, &out.SSHKey - *out = make([]SSHKeyParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.VendorConfiguration != nil { - in, out := &in.VendorConfiguration, &out.VendorConfiguration - *out = make(map[string]*string, len(*in)) - for key, val := range *in { - var outVal *string - if val == nil { - (*out)[key] = nil - } else { - in, out := &val, &outVal - *out = new(string) - **out = **in - } - (*out)[key] = outVal - } - } - if in.WanInterfaceID != nil { - in, out := &in.WanInterfaceID, &out.WanInterfaceID - *out = new(string) + if in.RootPasswordSecretRef != nil { + in, out := &in.RootPasswordSecretRef, &out.RootPasswordSecretRef + *out = new(v1.SecretKeySelector) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryDeviceParameters. -func (in *SecondaryDeviceParameters) DeepCopy() *SecondaryDeviceParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node1VendorConfigurationParameters. +func (in *Node1VendorConfigurationParameters) DeepCopy() *Node1VendorConfigurationParameters { if in == nil { return nil } - out := new(SecondaryDeviceParameters) + out := new(Node1VendorConfigurationParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshKey) DeepCopyInto(out *SshKey) { +func (in *SSHKey) DeepCopyInto(out *SSHKey) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -1441,18 +1525,18 @@ func (in *SshKey) DeepCopyInto(out *SshKey) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshKey. -func (in *SshKey) DeepCopy() *SshKey { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKey. +func (in *SSHKey) DeepCopy() *SSHKey { if in == nil { return nil } - out := new(SshKey) + out := new(SSHKey) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *SshKey) DeepCopyObject() runtime.Object { +func (in *SSHKey) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -1460,31 +1544,31 @@ func (in *SshKey) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshKeyList) DeepCopyInto(out *SshKeyList) { +func (in *SSHKeyList) DeepCopyInto(out *SSHKeyList) { *out = *in out.TypeMeta = in.TypeMeta in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items - *out = make([]SshKey, len(*in)) + *out = make([]SSHKey, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshKeyList. -func (in *SshKeyList) DeepCopy() *SshKeyList { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyList. +func (in *SSHKeyList) DeepCopy() *SSHKeyList { if in == nil { return nil } - out := new(SshKeyList) + out := new(SSHKeyList) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *SshKeyList) DeepCopyObject() runtime.Object { +func (in *SSHKeyList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -1492,8 +1576,28 @@ func (in *SshKeyList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshKeyObservation) DeepCopyInto(out *SshKeyObservation) { +func (in *SSHKeyObservation) DeepCopyInto(out *SSHKeyObservation) { *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyObservation. +func (in *SSHKeyObservation) DeepCopy() *SSHKeyObservation { + if in == nil { + return nil + } + out := new(SSHKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SSHKeyObservation_2) DeepCopyInto(out *SSHKeyObservation_2) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } if in.UUID != nil { in, out := &in.UUID, &out.UUID *out = new(string) @@ -1501,18 +1605,43 @@ func (in *SshKeyObservation) DeepCopyInto(out *SshKeyObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshKeyObservation. -func (in *SshKeyObservation) DeepCopy() *SshKeyObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyObservation_2. +func (in *SSHKeyObservation_2) DeepCopy() *SSHKeyObservation_2 { if in == nil { return nil } - out := new(SshKeyObservation) + out := new(SSHKeyObservation_2) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshKeyParameters) DeepCopyInto(out *SshKeyParameters) { +func (in *SSHKeyParameters) DeepCopyInto(out *SSHKeyParameters) { + *out = *in + if in.KeyName != nil { + in, out := &in.KeyName, &out.KeyName + *out = new(string) + **out = **in + } + if in.Username != nil { + in, out := &in.Username, &out.Username + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyParameters. +func (in *SSHKeyParameters) DeepCopy() *SSHKeyParameters { + if in == nil { + return nil + } + out := new(SSHKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SSHKeyParameters_2) DeepCopyInto(out *SSHKeyParameters_2) { *out = *in if in.Name != nil { in, out := &in.Name, &out.Name @@ -1526,52 +1655,52 @@ func (in *SshKeyParameters) DeepCopyInto(out *SshKeyParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshKeyParameters. -func (in *SshKeyParameters) DeepCopy() *SshKeyParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyParameters_2. +func (in *SSHKeyParameters_2) DeepCopy() *SSHKeyParameters_2 { if in == nil { return nil } - out := new(SshKeyParameters) + out := new(SSHKeyParameters_2) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshKeySpec) DeepCopyInto(out *SshKeySpec) { +func (in *SSHKeySpec) DeepCopyInto(out *SSHKeySpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshKeySpec. -func (in *SshKeySpec) DeepCopy() *SshKeySpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeySpec. +func (in *SSHKeySpec) DeepCopy() *SSHKeySpec { if in == nil { return nil } - out := new(SshKeySpec) + out := new(SSHKeySpec) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshKeyStatus) DeepCopyInto(out *SshKeyStatus) { +func (in *SSHKeyStatus) DeepCopyInto(out *SSHKeyStatus) { *out = *in in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) in.AtProvider.DeepCopyInto(&out.AtProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshKeyStatus. -func (in *SshKeyStatus) DeepCopy() *SshKeyStatus { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyStatus. +func (in *SSHKeyStatus) DeepCopy() *SSHKeyStatus { if in == nil { return nil } - out := new(SshKeyStatus) + out := new(SSHKeyStatus) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshUser) DeepCopyInto(out *SshUser) { +func (in *SSHUser) DeepCopyInto(out *SSHUser) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -1579,18 +1708,18 @@ func (in *SshUser) DeepCopyInto(out *SshUser) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshUser. -func (in *SshUser) DeepCopy() *SshUser { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHUser. +func (in *SSHUser) DeepCopy() *SSHUser { if in == nil { return nil } - out := new(SshUser) + out := new(SSHUser) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *SshUser) DeepCopyObject() runtime.Object { +func (in *SSHUser) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -1598,31 +1727,31 @@ func (in *SshUser) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshUserList) DeepCopyInto(out *SshUserList) { +func (in *SSHUserList) DeepCopyInto(out *SSHUserList) { *out = *in out.TypeMeta = in.TypeMeta in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items - *out = make([]SshUser, len(*in)) + *out = make([]SSHUser, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshUserList. -func (in *SshUserList) DeepCopy() *SshUserList { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHUserList. +func (in *SSHUserList) DeepCopy() *SSHUserList { if in == nil { return nil } - out := new(SshUserList) + out := new(SSHUserList) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *SshUserList) DeepCopyObject() runtime.Object { +func (in *SSHUserList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -1630,8 +1759,13 @@ func (in *SshUserList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshUserObservation) DeepCopyInto(out *SshUserObservation) { +func (in *SSHUserObservation) DeepCopyInto(out *SSHUserObservation) { *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } if in.UUID != nil { in, out := &in.UUID, &out.UUID *out = new(string) @@ -1639,18 +1773,18 @@ func (in *SshUserObservation) DeepCopyInto(out *SshUserObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshUserObservation. -func (in *SshUserObservation) DeepCopy() *SshUserObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHUserObservation. +func (in *SSHUserObservation) DeepCopy() *SSHUserObservation { if in == nil { return nil } - out := new(SshUserObservation) + out := new(SSHUserObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshUserParameters) DeepCopyInto(out *SshUserParameters) { +func (in *SSHUserParameters) DeepCopyInto(out *SSHUserParameters) { *out = *in if in.DeviceIds != nil { in, out := &in.DeviceIds, &out.DeviceIds @@ -1671,46 +1805,356 @@ func (in *SshUserParameters) DeepCopyInto(out *SshUserParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshUserParameters. -func (in *SshUserParameters) DeepCopy() *SshUserParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHUserParameters. +func (in *SSHUserParameters) DeepCopy() *SSHUserParameters { if in == nil { return nil } - out := new(SshUserParameters) + out := new(SSHUserParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshUserSpec) DeepCopyInto(out *SshUserSpec) { +func (in *SSHUserSpec) DeepCopyInto(out *SSHUserSpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshUserSpec. -func (in *SshUserSpec) DeepCopy() *SshUserSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHUserSpec. +func (in *SSHUserSpec) DeepCopy() *SSHUserSpec { if in == nil { return nil } - out := new(SshUserSpec) + out := new(SSHUserSpec) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SshUserStatus) DeepCopyInto(out *SshUserStatus) { +func (in *SSHUserStatus) DeepCopyInto(out *SSHUserStatus) { *out = *in in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) in.AtProvider.DeepCopyInto(&out.AtProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SshUserStatus. -func (in *SshUserStatus) DeepCopy() *SshUserStatus { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHUserStatus. +func (in *SSHUserStatus) DeepCopy() *SSHUserStatus { + if in == nil { + return nil + } + out := new(SSHUserStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecondaryDeviceInterfaceObservation) DeepCopyInto(out *SecondaryDeviceInterfaceObservation) { + *out = *in + if in.AssignedType != nil { + in, out := &in.AssignedType, &out.AssignedType + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(float64) + **out = **in + } + if in.IPAddress != nil { + in, out := &in.IPAddress, &out.IPAddress + *out = new(string) + **out = **in + } + if in.MacAddress != nil { + in, out := &in.MacAddress, &out.MacAddress + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OperationalStatus != nil { + in, out := &in.OperationalStatus, &out.OperationalStatus + *out = new(string) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryDeviceInterfaceObservation. +func (in *SecondaryDeviceInterfaceObservation) DeepCopy() *SecondaryDeviceInterfaceObservation { + if in == nil { + return nil + } + out := new(SecondaryDeviceInterfaceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecondaryDeviceInterfaceParameters) DeepCopyInto(out *SecondaryDeviceInterfaceParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryDeviceInterfaceParameters. +func (in *SecondaryDeviceInterfaceParameters) DeepCopy() *SecondaryDeviceInterfaceParameters { + if in == nil { + return nil + } + out := new(SecondaryDeviceInterfaceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecondaryDeviceObservation) DeepCopyInto(out *SecondaryDeviceObservation) { + *out = *in + if in.Asn != nil { + in, out := &in.Asn, &out.Asn + *out = new(float64) + **out = **in + } + if in.Ibx != nil { + in, out := &in.Ibx, &out.Ibx + *out = new(string) + **out = **in + } + if in.Interface != nil { + in, out := &in.Interface, &out.Interface + *out = make([]SecondaryDeviceInterfaceObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LicenseFileID != nil { + in, out := &in.LicenseFileID, &out.LicenseFileID + *out = new(string) + **out = **in + } + if in.LicenseStatus != nil { + in, out := &in.LicenseStatus, &out.LicenseStatus + *out = new(string) + **out = **in + } + if in.RedundancyType != nil { + in, out := &in.RedundancyType, &out.RedundancyType + *out = new(string) + **out = **in + } + if in.RedundantID != nil { + in, out := &in.RedundantID, &out.RedundantID + *out = new(string) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } + if in.SSHIPAddress != nil { + in, out := &in.SSHIPAddress, &out.SSHIPAddress + *out = new(string) + **out = **in + } + if in.SSHIPFqdn != nil { + in, out := &in.SSHIPFqdn, &out.SSHIPFqdn + *out = new(string) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } + if in.ZoneCode != nil { + in, out := &in.ZoneCode, &out.ZoneCode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryDeviceObservation. +func (in *SecondaryDeviceObservation) DeepCopy() *SecondaryDeviceObservation { + if in == nil { + return nil + } + out := new(SecondaryDeviceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecondaryDeviceParameters) DeepCopyInto(out *SecondaryDeviceParameters) { + *out = *in + if in.ACLTemplateID != nil { + in, out := &in.ACLTemplateID, &out.ACLTemplateID + *out = new(string) + **out = **in + } + if in.AccountNumber != nil { + in, out := &in.AccountNumber, &out.AccountNumber + *out = new(string) + **out = **in + } + if in.AdditionalBandwidth != nil { + in, out := &in.AdditionalBandwidth, &out.AdditionalBandwidth + *out = new(float64) + **out = **in + } + if in.Hostname != nil { + in, out := &in.Hostname, &out.Hostname + *out = new(string) + **out = **in + } + if in.LicenseFile != nil { + in, out := &in.LicenseFile, &out.LicenseFile + *out = new(string) + **out = **in + } + if in.LicenseToken != nil { + in, out := &in.LicenseToken, &out.LicenseToken + *out = new(string) + **out = **in + } + if in.MetroCode != nil { + in, out := &in.MetroCode, &out.MetroCode + *out = new(string) + **out = **in + } + if in.MgmtACLTemplateUUID != nil { + in, out := &in.MgmtACLTemplateUUID, &out.MgmtACLTemplateUUID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.SSHKey != nil { + in, out := &in.SSHKey, &out.SSHKey + *out = make([]SSHKeyParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.VendorConfiguration != nil { + in, out := &in.VendorConfiguration, &out.VendorConfiguration + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.WanInterfaceID != nil { + in, out := &in.WanInterfaceID, &out.WanInterfaceID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryDeviceParameters. +func (in *SecondaryDeviceParameters) DeepCopy() *SecondaryDeviceParameters { + if in == nil { + return nil + } + out := new(SecondaryDeviceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VendorConfigurationObservation) DeepCopyInto(out *VendorConfigurationObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VendorConfigurationObservation. +func (in *VendorConfigurationObservation) DeepCopy() *VendorConfigurationObservation { + if in == nil { + return nil + } + out := new(VendorConfigurationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VendorConfigurationParameters) DeepCopyInto(out *VendorConfigurationParameters) { + *out = *in + if in.ActivationKeySecretRef != nil { + in, out := &in.ActivationKeySecretRef, &out.ActivationKeySecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } + if in.AdminPasswordSecretRef != nil { + in, out := &in.AdminPasswordSecretRef, &out.AdminPasswordSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } + if in.Controller1 != nil { + in, out := &in.Controller1, &out.Controller1 + *out = new(string) + **out = **in + } + if in.ControllerFqdn != nil { + in, out := &in.ControllerFqdn, &out.ControllerFqdn + *out = new(string) + **out = **in + } + if in.Hostname != nil { + in, out := &in.Hostname, &out.Hostname + *out = new(string) + **out = **in + } + if in.RootPasswordSecretRef != nil { + in, out := &in.RootPasswordSecretRef, &out.RootPasswordSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VendorConfigurationParameters. +func (in *VendorConfigurationParameters) DeepCopy() *VendorConfigurationParameters { if in == nil { return nil } - out := new(SshUserStatus) + out := new(VendorConfigurationParameters) in.DeepCopyInto(out) return out } diff --git a/apis/network/v1alpha1/zz_generated.managed.go b/apis/network/v1alpha1/zz_generated.managed.go index edb2800..7a0350c 100644 --- a/apis/network/v1alpha1/zz_generated.managed.go +++ b/apis/network/v1alpha1/zz_generated.managed.go @@ -19,115 +19,135 @@ package v1alpha1 import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" -// GetCondition of this AclTemplate. -func (mg *AclTemplate) GetCondition(ct xpv1.ConditionType) xpv1.Condition { +// GetCondition of this ACLTemplate. +func (mg *ACLTemplate) GetCondition(ct xpv1.ConditionType) xpv1.Condition { return mg.Status.GetCondition(ct) } -// GetDeletionPolicy of this AclTemplate. -func (mg *AclTemplate) GetDeletionPolicy() xpv1.DeletionPolicy { +// GetDeletionPolicy of this ACLTemplate. +func (mg *ACLTemplate) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetProviderConfigReference of this AclTemplate. -func (mg *AclTemplate) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this ACLTemplate. +func (mg *ACLTemplate) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } /* -GetProviderReference of this AclTemplate. +GetProviderReference of this ACLTemplate. Deprecated: Use GetProviderConfigReference. */ -func (mg *AclTemplate) GetProviderReference() *xpv1.Reference { +func (mg *ACLTemplate) GetProviderReference() *xpv1.Reference { return mg.Spec.ProviderReference } -// GetWriteConnectionSecretToReference of this AclTemplate. -func (mg *AclTemplate) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// GetPublishConnectionDetailsTo of this ACLTemplate. +func (mg *ACLTemplate) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ACLTemplate. +func (mg *ACLTemplate) GetWriteConnectionSecretToReference() *xpv1.SecretReference { return mg.Spec.WriteConnectionSecretToReference } -// SetConditions of this AclTemplate. -func (mg *AclTemplate) SetConditions(c ...xpv1.Condition) { +// SetConditions of this ACLTemplate. +func (mg *ACLTemplate) SetConditions(c ...xpv1.Condition) { mg.Status.SetConditions(c...) } -// SetDeletionPolicy of this AclTemplate. -func (mg *AclTemplate) SetDeletionPolicy(r xpv1.DeletionPolicy) { +// SetDeletionPolicy of this ACLTemplate. +func (mg *ACLTemplate) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetProviderConfigReference of this AclTemplate. -func (mg *AclTemplate) SetProviderConfigReference(r *xpv1.Reference) { +// SetProviderConfigReference of this ACLTemplate. +func (mg *ACLTemplate) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } /* -SetProviderReference of this AclTemplate. +SetProviderReference of this ACLTemplate. Deprecated: Use SetProviderConfigReference. */ -func (mg *AclTemplate) SetProviderReference(r *xpv1.Reference) { +func (mg *ACLTemplate) SetProviderReference(r *xpv1.Reference) { mg.Spec.ProviderReference = r } -// SetWriteConnectionSecretToReference of this AclTemplate. -func (mg *AclTemplate) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { +// SetPublishConnectionDetailsTo of this ACLTemplate. +func (mg *ACLTemplate) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ACLTemplate. +func (mg *ACLTemplate) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } -// GetCondition of this Bgp. -func (mg *Bgp) GetCondition(ct xpv1.ConditionType) xpv1.Condition { +// GetCondition of this BGP. +func (mg *BGP) GetCondition(ct xpv1.ConditionType) xpv1.Condition { return mg.Status.GetCondition(ct) } -// GetDeletionPolicy of this Bgp. -func (mg *Bgp) GetDeletionPolicy() xpv1.DeletionPolicy { +// GetDeletionPolicy of this BGP. +func (mg *BGP) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetProviderConfigReference of this Bgp. -func (mg *Bgp) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this BGP. +func (mg *BGP) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } /* -GetProviderReference of this Bgp. +GetProviderReference of this BGP. Deprecated: Use GetProviderConfigReference. */ -func (mg *Bgp) GetProviderReference() *xpv1.Reference { +func (mg *BGP) GetProviderReference() *xpv1.Reference { return mg.Spec.ProviderReference } -// GetWriteConnectionSecretToReference of this Bgp. -func (mg *Bgp) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// GetPublishConnectionDetailsTo of this BGP. +func (mg *BGP) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this BGP. +func (mg *BGP) GetWriteConnectionSecretToReference() *xpv1.SecretReference { return mg.Spec.WriteConnectionSecretToReference } -// SetConditions of this Bgp. -func (mg *Bgp) SetConditions(c ...xpv1.Condition) { +// SetConditions of this BGP. +func (mg *BGP) SetConditions(c ...xpv1.Condition) { mg.Status.SetConditions(c...) } -// SetDeletionPolicy of this Bgp. -func (mg *Bgp) SetDeletionPolicy(r xpv1.DeletionPolicy) { +// SetDeletionPolicy of this BGP. +func (mg *BGP) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetProviderConfigReference of this Bgp. -func (mg *Bgp) SetProviderConfigReference(r *xpv1.Reference) { +// SetProviderConfigReference of this BGP. +func (mg *BGP) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } /* -SetProviderReference of this Bgp. +SetProviderReference of this BGP. Deprecated: Use SetProviderConfigReference. */ -func (mg *Bgp) SetProviderReference(r *xpv1.Reference) { +func (mg *BGP) SetProviderReference(r *xpv1.Reference) { mg.Spec.ProviderReference = r } -// SetWriteConnectionSecretToReference of this Bgp. -func (mg *Bgp) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { +// SetPublishConnectionDetailsTo of this BGP. +func (mg *BGP) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this BGP. +func (mg *BGP) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } @@ -154,6 +174,11 @@ func (mg *Device) GetProviderReference() *xpv1.Reference { return mg.Spec.ProviderReference } +// GetPublishConnectionDetailsTo of this Device. +func (mg *Device) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + // GetWriteConnectionSecretToReference of this Device. func (mg *Device) GetWriteConnectionSecretToReference() *xpv1.SecretReference { return mg.Spec.WriteConnectionSecretToReference @@ -182,6 +207,11 @@ func (mg *Device) SetProviderReference(r *xpv1.Reference) { mg.Spec.ProviderReference = r } +// SetPublishConnectionDetailsTo of this Device. +func (mg *Device) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + // SetWriteConnectionSecretToReference of this Device. func (mg *Device) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r @@ -210,6 +240,11 @@ func (mg *DeviceLink) GetProviderReference() *xpv1.Reference { return mg.Spec.ProviderReference } +// GetPublishConnectionDetailsTo of this DeviceLink. +func (mg *DeviceLink) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + // GetWriteConnectionSecretToReference of this DeviceLink. func (mg *DeviceLink) GetWriteConnectionSecretToReference() *xpv1.SecretReference { return mg.Spec.WriteConnectionSecretToReference @@ -238,119 +273,144 @@ func (mg *DeviceLink) SetProviderReference(r *xpv1.Reference) { mg.Spec.ProviderReference = r } +// SetPublishConnectionDetailsTo of this DeviceLink. +func (mg *DeviceLink) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + // SetWriteConnectionSecretToReference of this DeviceLink. func (mg *DeviceLink) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } -// GetCondition of this SshKey. -func (mg *SshKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { +// GetCondition of this SSHKey. +func (mg *SSHKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { return mg.Status.GetCondition(ct) } -// GetDeletionPolicy of this SshKey. -func (mg *SshKey) GetDeletionPolicy() xpv1.DeletionPolicy { +// GetDeletionPolicy of this SSHKey. +func (mg *SSHKey) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetProviderConfigReference of this SshKey. -func (mg *SshKey) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this SSHKey. +func (mg *SSHKey) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } /* -GetProviderReference of this SshKey. +GetProviderReference of this SSHKey. Deprecated: Use GetProviderConfigReference. */ -func (mg *SshKey) GetProviderReference() *xpv1.Reference { +func (mg *SSHKey) GetProviderReference() *xpv1.Reference { return mg.Spec.ProviderReference } -// GetWriteConnectionSecretToReference of this SshKey. -func (mg *SshKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// GetPublishConnectionDetailsTo of this SSHKey. +func (mg *SSHKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this SSHKey. +func (mg *SSHKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { return mg.Spec.WriteConnectionSecretToReference } -// SetConditions of this SshKey. -func (mg *SshKey) SetConditions(c ...xpv1.Condition) { +// SetConditions of this SSHKey. +func (mg *SSHKey) SetConditions(c ...xpv1.Condition) { mg.Status.SetConditions(c...) } -// SetDeletionPolicy of this SshKey. -func (mg *SshKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { +// SetDeletionPolicy of this SSHKey. +func (mg *SSHKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetProviderConfigReference of this SshKey. -func (mg *SshKey) SetProviderConfigReference(r *xpv1.Reference) { +// SetProviderConfigReference of this SSHKey. +func (mg *SSHKey) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } /* -SetProviderReference of this SshKey. +SetProviderReference of this SSHKey. Deprecated: Use SetProviderConfigReference. */ -func (mg *SshKey) SetProviderReference(r *xpv1.Reference) { +func (mg *SSHKey) SetProviderReference(r *xpv1.Reference) { mg.Spec.ProviderReference = r } -// SetWriteConnectionSecretToReference of this SshKey. -func (mg *SshKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { +// SetPublishConnectionDetailsTo of this SSHKey. +func (mg *SSHKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this SSHKey. +func (mg *SSHKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } -// GetCondition of this SshUser. -func (mg *SshUser) GetCondition(ct xpv1.ConditionType) xpv1.Condition { +// GetCondition of this SSHUser. +func (mg *SSHUser) GetCondition(ct xpv1.ConditionType) xpv1.Condition { return mg.Status.GetCondition(ct) } -// GetDeletionPolicy of this SshUser. -func (mg *SshUser) GetDeletionPolicy() xpv1.DeletionPolicy { +// GetDeletionPolicy of this SSHUser. +func (mg *SSHUser) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetProviderConfigReference of this SshUser. -func (mg *SshUser) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this SSHUser. +func (mg *SSHUser) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } /* -GetProviderReference of this SshUser. +GetProviderReference of this SSHUser. Deprecated: Use GetProviderConfigReference. */ -func (mg *SshUser) GetProviderReference() *xpv1.Reference { +func (mg *SSHUser) GetProviderReference() *xpv1.Reference { return mg.Spec.ProviderReference } -// GetWriteConnectionSecretToReference of this SshUser. -func (mg *SshUser) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// GetPublishConnectionDetailsTo of this SSHUser. +func (mg *SSHUser) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this SSHUser. +func (mg *SSHUser) GetWriteConnectionSecretToReference() *xpv1.SecretReference { return mg.Spec.WriteConnectionSecretToReference } -// SetConditions of this SshUser. -func (mg *SshUser) SetConditions(c ...xpv1.Condition) { +// SetConditions of this SSHUser. +func (mg *SSHUser) SetConditions(c ...xpv1.Condition) { mg.Status.SetConditions(c...) } -// SetDeletionPolicy of this SshUser. -func (mg *SshUser) SetDeletionPolicy(r xpv1.DeletionPolicy) { +// SetDeletionPolicy of this SSHUser. +func (mg *SSHUser) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetProviderConfigReference of this SshUser. -func (mg *SshUser) SetProviderConfigReference(r *xpv1.Reference) { +// SetProviderConfigReference of this SSHUser. +func (mg *SSHUser) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } /* -SetProviderReference of this SshUser. +SetProviderReference of this SSHUser. Deprecated: Use SetProviderConfigReference. */ -func (mg *SshUser) SetProviderReference(r *xpv1.Reference) { +func (mg *SSHUser) SetProviderReference(r *xpv1.Reference) { mg.Spec.ProviderReference = r } -// SetWriteConnectionSecretToReference of this SshUser. -func (mg *SshUser) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { +// SetPublishConnectionDetailsTo of this SSHUser. +func (mg *SSHUser) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this SSHUser. +func (mg *SSHUser) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } diff --git a/apis/network/v1alpha1/zz_generated.managedlist.go b/apis/network/v1alpha1/zz_generated.managedlist.go index afc0b2e..cd22d9d 100644 --- a/apis/network/v1alpha1/zz_generated.managedlist.go +++ b/apis/network/v1alpha1/zz_generated.managedlist.go @@ -19,8 +19,8 @@ package v1alpha1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" -// GetItems of this AclTemplateList. -func (l *AclTemplateList) GetItems() []resource.Managed { +// GetItems of this ACLTemplateList. +func (l *ACLTemplateList) GetItems() []resource.Managed { items := make([]resource.Managed, len(l.Items)) for i := range l.Items { items[i] = &l.Items[i] @@ -28,8 +28,8 @@ func (l *AclTemplateList) GetItems() []resource.Managed { return items } -// GetItems of this BgpList. -func (l *BgpList) GetItems() []resource.Managed { +// GetItems of this BGPList. +func (l *BGPList) GetItems() []resource.Managed { items := make([]resource.Managed, len(l.Items)) for i := range l.Items { items[i] = &l.Items[i] @@ -55,8 +55,8 @@ func (l *DeviceList) GetItems() []resource.Managed { return items } -// GetItems of this SshKeyList. -func (l *SshKeyList) GetItems() []resource.Managed { +// GetItems of this SSHKeyList. +func (l *SSHKeyList) GetItems() []resource.Managed { items := make([]resource.Managed, len(l.Items)) for i := range l.Items { items[i] = &l.Items[i] @@ -64,8 +64,8 @@ func (l *SshKeyList) GetItems() []resource.Managed { return items } -// GetItems of this SshUserList. -func (l *SshUserList) GetItems() []resource.Managed { +// GetItems of this SSHUserList. +func (l *SSHUserList) GetItems() []resource.Managed { items := make([]resource.Managed, len(l.Items)) for i := range l.Items { items[i] = &l.Items[i] diff --git a/apis/network/v1alpha1/zz_generated_terraformed.go b/apis/network/v1alpha1/zz_generated_terraformed.go new file mode 100755 index 0000000..1ccc71c --- /dev/null +++ b/apis/network/v1alpha1/zz_generated_terraformed.go @@ -0,0 +1,470 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package v1alpha1 + +import ( + "github.com/pkg/errors" + + "github.com/crossplane/terrajet/pkg/resource" + "github.com/crossplane/terrajet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ACLTemplate +func (mg *ACLTemplate) GetTerraformResourceType() string { + return "equinix_network_acl_template" +} + +// GetConnectionDetailsMapping for this ACLTemplate +func (tr *ACLTemplate) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ACLTemplate +func (tr *ACLTemplate) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ACLTemplate +func (tr *ACLTemplate) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ACLTemplate +func (tr *ACLTemplate) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ACLTemplate +func (tr *ACLTemplate) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ACLTemplate +func (tr *ACLTemplate) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this ACLTemplate using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ACLTemplate) LateInitialize(attrs []byte) (bool, error) { + params := &ACLTemplateParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ACLTemplate) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this BGP +func (mg *BGP) GetTerraformResourceType() string { + return "equinix_network_bgp" +} + +// GetConnectionDetailsMapping for this BGP +func (tr *BGP) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"authentication_key": "spec.forProvider.authenticationKeySecretRef"} +} + +// GetObservation of this BGP +func (tr *BGP) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this BGP +func (tr *BGP) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this BGP +func (tr *BGP) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this BGP +func (tr *BGP) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this BGP +func (tr *BGP) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this BGP using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *BGP) LateInitialize(attrs []byte) (bool, error) { + params := &BGPParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *BGP) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this Device +func (mg *Device) GetTerraformResourceType() string { + return "equinix_network_device" +} + +// GetConnectionDetailsMapping for this Device +func (tr *Device) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"cluster_details[*].node0[*].license_file_id": "spec.forProvider.clusterDetails[*].node0[*].licenseFileIdSecretRef", "cluster_details[*].node0[*].license_token": "spec.forProvider.clusterDetails[*].node0[*].licenseTokenSecretRef", "cluster_details[*].node0[*].vendor_configuration[*].activation_key": "spec.forProvider.clusterDetails[*].node0[*].vendorConfiguration[*].activationKeySecretRef", "cluster_details[*].node0[*].vendor_configuration[*].admin_password": "spec.forProvider.clusterDetails[*].node0[*].vendorConfiguration[*].adminPasswordSecretRef", "cluster_details[*].node0[*].vendor_configuration[*].root_password": "spec.forProvider.clusterDetails[*].node0[*].vendorConfiguration[*].rootPasswordSecretRef", "cluster_details[*].node1[*].license_file_id": "spec.forProvider.clusterDetails[*].node1[*].licenseFileIdSecretRef", "cluster_details[*].node1[*].license_token": "spec.forProvider.clusterDetails[*].node1[*].licenseTokenSecretRef", "cluster_details[*].node1[*].vendor_configuration[*].activation_key": "spec.forProvider.clusterDetails[*].node1[*].vendorConfiguration[*].activationKeySecretRef", "cluster_details[*].node1[*].vendor_configuration[*].admin_password": "spec.forProvider.clusterDetails[*].node1[*].vendorConfiguration[*].adminPasswordSecretRef", "cluster_details[*].node1[*].vendor_configuration[*].root_password": "spec.forProvider.clusterDetails[*].node1[*].vendorConfiguration[*].rootPasswordSecretRef"} +} + +// GetObservation of this Device +func (tr *Device) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Device +func (tr *Device) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Device +func (tr *Device) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Device +func (tr *Device) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Device +func (tr *Device) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this Device using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Device) LateInitialize(attrs []byte) (bool, error) { + params := &DeviceParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Device) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this DeviceLink +func (mg *DeviceLink) GetTerraformResourceType() string { + return "equinix_network_device_link" +} + +// GetConnectionDetailsMapping for this DeviceLink +func (tr *DeviceLink) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this DeviceLink +func (tr *DeviceLink) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this DeviceLink +func (tr *DeviceLink) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this DeviceLink +func (tr *DeviceLink) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this DeviceLink +func (tr *DeviceLink) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this DeviceLink +func (tr *DeviceLink) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this DeviceLink using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *DeviceLink) LateInitialize(attrs []byte) (bool, error) { + params := &DeviceLinkParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *DeviceLink) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this SSHKey +func (mg *SSHKey) GetTerraformResourceType() string { + return "equinix_network_ssh_key" +} + +// GetConnectionDetailsMapping for this SSHKey +func (tr *SSHKey) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this SSHKey +func (tr *SSHKey) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this SSHKey +func (tr *SSHKey) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this SSHKey +func (tr *SSHKey) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this SSHKey +func (tr *SSHKey) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this SSHKey +func (tr *SSHKey) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this SSHKey using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *SSHKey) LateInitialize(attrs []byte) (bool, error) { + params := &SSHKeyParameters_2{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *SSHKey) GetTerraformSchemaVersion() int { + return 0 +} + +// GetTerraformResourceType returns Terraform resource type for this SSHUser +func (mg *SSHUser) GetTerraformResourceType() string { + return "equinix_network_ssh_user" +} + +// GetConnectionDetailsMapping for this SSHUser +func (tr *SSHUser) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"password": "spec.forProvider.passwordSecretRef"} +} + +// GetObservation of this SSHUser +func (tr *SSHUser) GetObservation() (map[string]interface{}, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this SSHUser +func (tr *SSHUser) SetObservation(obs map[string]interface{}) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this SSHUser +func (tr *SSHUser) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this SSHUser +func (tr *SSHUser) GetParameters() (map[string]interface{}, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]interface{}{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this SSHUser +func (tr *SSHUser) SetParameters(params map[string]interface{}) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this SSHUser using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *SSHUser) LateInitialize(attrs []byte) (bool, error) { + params := &SSHUserParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *SSHUser) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/network/v1alpha1/zz_sshkey_terraformed.go b/apis/network/v1alpha1/zz_sshkey_terraformed.go deleted file mode 100755 index 5261fea..0000000 --- a/apis/network/v1alpha1/zz_sshkey_terraformed.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright 2021 The Crossplane 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. -*/ - -// Code generated by terrajet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane-contrib/terrajet/pkg/resource" - "github.com/crossplane-contrib/terrajet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this SshKey -func (mg *SshKey) GetTerraformResourceType() string { - return "equinix_network_ssh_key" -} - -// GetConnectionDetailsMapping for this SshKey -func (tr *SshKey) GetConnectionDetailsMapping() map[string]string { - return nil -} - -// GetObservation of this SshKey -func (tr *SshKey) GetObservation() (map[string]interface{}, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this SshKey -func (tr *SshKey) SetObservation(obs map[string]interface{}) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetParameters of this SshKey -func (tr *SshKey) GetParameters() (map[string]interface{}, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this SshKey -func (tr *SshKey) SetParameters(params map[string]interface{}) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// LateInitialize this SshKey using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *SshKey) LateInitialize(attrs []byte) (bool, error) { - params := &SshKeyParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *SshKey) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/network/v1alpha1/zz_sshkey_types.go b/apis/network/v1alpha1/zz_sshkey_types.go index 8d273a7..9e73f3d 100755 --- a/apis/network/v1alpha1/zz_sshkey_types.go +++ b/apis/network/v1alpha1/zz_sshkey_types.go @@ -25,11 +25,13 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type SshKeyObservation struct { +type SSHKeyObservation_2 struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` } -type SshKeyParameters struct { +type SSHKeyParameters_2 struct { // The name of SSH key used for identification // +kubebuilder:validation:Required @@ -40,51 +42,51 @@ type SshKeyParameters struct { PublicKey *string `json:"publicKey" tf:"public_key,omitempty"` } -// SshKeySpec defines the desired state of SshKey -type SshKeySpec struct { +// SSHKeySpec defines the desired state of SSHKey +type SSHKeySpec struct { v1.ResourceSpec `json:",inline"` - ForProvider SshKeyParameters `json:"forProvider"` + ForProvider SSHKeyParameters_2 `json:"forProvider"` } -// SshKeyStatus defines the observed state of SshKey. -type SshKeyStatus struct { +// SSHKeyStatus defines the observed state of SSHKey. +type SSHKeyStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider SshKeyObservation `json:"atProvider,omitempty"` + AtProvider SSHKeyObservation_2 `json:"atProvider,omitempty"` } // +kubebuilder:object:root=true -// SshKey is the Schema for the SshKeys API +// SSHKey is the Schema for the SSHKeys API // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" // +kubebuilder:subresource:status // +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} -type SshKey struct { +type SSHKey struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec SshKeySpec `json:"spec"` - Status SshKeyStatus `json:"status,omitempty"` + Spec SSHKeySpec `json:"spec"` + Status SSHKeyStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// SshKeyList contains a list of SshKeys -type SshKeyList struct { +// SSHKeyList contains a list of SSHKeys +type SSHKeyList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []SshKey `json:"items"` + Items []SSHKey `json:"items"` } // Repository type metadata. var ( - SshKey_Kind = "SshKey" - SshKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: SshKey_Kind}.String() - SshKey_KindAPIVersion = SshKey_Kind + "." + CRDGroupVersion.String() - SshKey_GroupVersionKind = CRDGroupVersion.WithKind(SshKey_Kind) + SSHKey_Kind = "SSHKey" + SSHKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: SSHKey_Kind}.String() + SSHKey_KindAPIVersion = SSHKey_Kind + "." + CRDGroupVersion.String() + SSHKey_GroupVersionKind = CRDGroupVersion.WithKind(SSHKey_Kind) ) func init() { - SchemeBuilder.Register(&SshKey{}, &SshKeyList{}) + SchemeBuilder.Register(&SSHKey{}, &SSHKeyList{}) } diff --git a/apis/network/v1alpha1/zz_sshuser_terraformed.go b/apis/network/v1alpha1/zz_sshuser_terraformed.go deleted file mode 100755 index 02e08b5..0000000 --- a/apis/network/v1alpha1/zz_sshuser_terraformed.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright 2021 The Crossplane 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. -*/ - -// Code generated by terrajet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane-contrib/terrajet/pkg/resource" - "github.com/crossplane-contrib/terrajet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this SshUser -func (mg *SshUser) GetTerraformResourceType() string { - return "equinix_network_ssh_user" -} - -// GetConnectionDetailsMapping for this SshUser -func (tr *SshUser) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"password": "spec.forProvider.passwordSecretRef"} -} - -// GetObservation of this SshUser -func (tr *SshUser) GetObservation() (map[string]interface{}, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this SshUser -func (tr *SshUser) SetObservation(obs map[string]interface{}) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetParameters of this SshUser -func (tr *SshUser) GetParameters() (map[string]interface{}, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]interface{}{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this SshUser -func (tr *SshUser) SetParameters(params map[string]interface{}) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// LateInitialize this SshUser using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *SshUser) LateInitialize(attrs []byte) (bool, error) { - params := &SshUserParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *SshUser) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/network/v1alpha1/zz_sshuser_types.go b/apis/network/v1alpha1/zz_sshuser_types.go index e4ec050..da6ee47 100755 --- a/apis/network/v1alpha1/zz_sshuser_types.go +++ b/apis/network/v1alpha1/zz_sshuser_types.go @@ -25,11 +25,13 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type SshUserObservation struct { +type SSHUserObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` } -type SshUserParameters struct { +type SSHUserParameters struct { // list of device identifiers to which user will have access // +kubebuilder:validation:Required @@ -44,51 +46,51 @@ type SshUserParameters struct { Username *string `json:"username" tf:"username,omitempty"` } -// SshUserSpec defines the desired state of SshUser -type SshUserSpec struct { +// SSHUserSpec defines the desired state of SSHUser +type SSHUserSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider SshUserParameters `json:"forProvider"` + ForProvider SSHUserParameters `json:"forProvider"` } -// SshUserStatus defines the observed state of SshUser. -type SshUserStatus struct { +// SSHUserStatus defines the observed state of SSHUser. +type SSHUserStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider SshUserObservation `json:"atProvider,omitempty"` + AtProvider SSHUserObservation `json:"atProvider,omitempty"` } // +kubebuilder:object:root=true -// SshUser is the Schema for the SshUsers API +// SSHUser is the Schema for the SSHUsers API // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" // +kubebuilder:subresource:status // +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinixjet} -type SshUser struct { +type SSHUser struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec SshUserSpec `json:"spec"` - Status SshUserStatus `json:"status,omitempty"` + Spec SSHUserSpec `json:"spec"` + Status SSHUserStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// SshUserList contains a list of SshUsers -type SshUserList struct { +// SSHUserList contains a list of SSHUsers +type SSHUserList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []SshUser `json:"items"` + Items []SSHUser `json:"items"` } // Repository type metadata. var ( - SshUser_Kind = "SshUser" - SshUser_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: SshUser_Kind}.String() - SshUser_KindAPIVersion = SshUser_Kind + "." + CRDGroupVersion.String() - SshUser_GroupVersionKind = CRDGroupVersion.WithKind(SshUser_Kind) + SSHUser_Kind = "SSHUser" + SSHUser_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: SSHUser_Kind}.String() + SSHUser_KindAPIVersion = SSHUser_Kind + "." + CRDGroupVersion.String() + SSHUser_GroupVersionKind = CRDGroupVersion.WithKind(SSHUser_Kind) ) func init() { - SchemeBuilder.Register(&SshUser{}, &SshUserList{}) + SchemeBuilder.Register(&SSHUser{}, &SSHUserList{}) } diff --git a/apis/v1alpha1/doc.go b/apis/v1alpha1/doc.go index 4f40528..6939c53 100644 --- a/apis/v1alpha1/doc.go +++ b/apis/v1alpha1/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package v1alpha1 contains the core resources of the tf equinix provider. +// Package v1alpha1 contains the core resources of the equinix jet provider. // +kubebuilder:object:generate=true // +groupName=equinix.jet.crossplane.io // +versionName=v1alpha1 diff --git a/apis/v1alpha1/register.go b/apis/v1alpha1/register.go index 9b729d9..92ac832 100644 --- a/apis/v1alpha1/register.go +++ b/apis/v1alpha1/register.go @@ -56,9 +56,15 @@ var ( ProviderConfigUsageListGroupKind = schema.GroupKind{Group: Group, Kind: ProviderConfigUsageListKind}.String() ProviderConfigUsageListKindAPIVersion = ProviderConfigUsageListKind + "." + SchemeGroupVersion.String() ProviderConfigUsageListGroupVersionKind = SchemeGroupVersion.WithKind(ProviderConfigUsageListKind) + + StoreConfigKind = reflect.TypeOf(StoreConfig{}).Name() + StoreConfigGroupKind = schema.GroupKind{Group: Group, Kind: StoreConfigKind}.String() + StoreConfigKindAPIVersion = StoreConfigKind + "." + SchemeGroupVersion.String() + StoreConfigGroupVersionKind = SchemeGroupVersion.WithKind(StoreConfigKind) ) func init() { SchemeBuilder.Register(&ProviderConfig{}, &ProviderConfigList{}) SchemeBuilder.Register(&ProviderConfigUsage{}, &ProviderConfigUsageList{}) + SchemeBuilder.Register(&StoreConfig{}, &StoreConfigList{}) } diff --git a/apis/v1alpha1/types.go b/apis/v1alpha1/types.go index 4a9e41c..87e4e66 100644 --- a/apis/v1alpha1/types.go +++ b/apis/v1alpha1/types.go @@ -90,3 +90,55 @@ type ProviderConfigUsageList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []ProviderConfigUsage `json:"items"` } + +// A StoreConfigSpec defines the desired state of a ProviderConfig. +type StoreConfigSpec struct { + xpv1.SecretStoreConfig `json:",inline"` +} + +// A StoreConfigStatus represents the status of a StoreConfig. +type StoreConfigStatus struct { + xpv1.ConditionedStatus `json:",inline"` +} + +// +kubebuilder:object:root=true + +// A StoreConfig configures how GCP controller should store connection details. +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:printcolumn:name="TYPE",type="string",JSONPath=".spec.type" +// +kubebuilder:printcolumn:name="DEFAULT-SCOPE",type="string",JSONPath=".spec.defaultScope" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,store,gcp} +// +kubebuilder:subresource:status +type StoreConfig struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec StoreConfigSpec `json:"spec"` + Status StoreConfigStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// StoreConfigList contains a list of StoreConfig +type StoreConfigList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []StoreConfig `json:"items"` +} + +// Note(turkenh): To be generated with AngryJet + +// GetStoreConfig returns SecretStoreConfig +func (in *StoreConfig) GetStoreConfig() xpv1.SecretStoreConfig { + return in.Spec.SecretStoreConfig +} + +// GetCondition of this StoreConfig. +func (in *StoreConfig) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return in.Status.GetCondition(ct) +} + +// SetConditions of this StoreConfig. +func (in *StoreConfig) SetConditions(c ...xpv1.Condition) { + in.Status.SetConditions(c...) +} diff --git a/apis/v1alpha1/zz_generated.deepcopy.go b/apis/v1alpha1/zz_generated.deepcopy.go index 0a9d000..f4f97e8 100644 --- a/apis/v1alpha1/zz_generated.deepcopy.go +++ b/apis/v1alpha1/zz_generated.deepcopy.go @@ -189,3 +189,94 @@ func (in *ProviderCredentials) DeepCopy() *ProviderCredentials { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StoreConfig) DeepCopyInto(out *StoreConfig) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StoreConfig. +func (in *StoreConfig) DeepCopy() *StoreConfig { + if in == nil { + return nil + } + out := new(StoreConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StoreConfig) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StoreConfigList) DeepCopyInto(out *StoreConfigList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StoreConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StoreConfigList. +func (in *StoreConfigList) DeepCopy() *StoreConfigList { + if in == nil { + return nil + } + out := new(StoreConfigList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StoreConfigList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StoreConfigSpec) DeepCopyInto(out *StoreConfigSpec) { + *out = *in + in.SecretStoreConfig.DeepCopyInto(&out.SecretStoreConfig) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StoreConfigSpec. +func (in *StoreConfigSpec) DeepCopy() *StoreConfigSpec { + if in == nil { + return nil + } + out := new(StoreConfigSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StoreConfigStatus) DeepCopyInto(out *StoreConfigStatus) { + *out = *in + in.ConditionedStatus.DeepCopyInto(&out.ConditionedStatus) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StoreConfigStatus. +func (in *StoreConfigStatus) DeepCopy() *StoreConfigStatus { + if in == nil { + return nil + } + out := new(StoreConfigStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/zz_register.go b/apis/zz_register.go index 0415c0b..0d73622 100755 --- a/apis/zz_register.go +++ b/apis/zz_register.go @@ -22,15 +22,17 @@ package apis import ( "k8s.io/apimachinery/pkg/runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/ecx/v1alpha1" - v1alpha1network "github.com/crossplane-contrib/provider-tf-equinix/apis/network/v1alpha1" - v1alpha1apis "github.com/crossplane-contrib/provider-tf-equinix/apis/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/ecx/v1alpha1" + v1alpha1metal "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" + v1alpha1network "github.com/crossplane-contrib/provider-jet-equinix/apis/network/v1alpha1" + v1alpha1apis "github.com/crossplane-contrib/provider-jet-equinix/apis/v1alpha1" ) func init() { // Register the types with the Scheme so the components can map objects to GroupVersionKinds and back AddToSchemes = append(AddToSchemes, v1alpha1.SchemeBuilder.AddToScheme, + v1alpha1metal.SchemeBuilder.AddToScheme, v1alpha1network.SchemeBuilder.AddToScheme, v1alpha1apis.SchemeBuilder.AddToScheme, ) diff --git a/cluster/images/provider-tf-equinix-controller/Dockerfile b/cluster/images/provider-jet-equinix-controller/Dockerfile similarity index 79% rename from cluster/images/provider-tf-equinix-controller/Dockerfile rename to cluster/images/provider-jet-equinix-controller/Dockerfile index 86a430e..1973672 100644 --- a/cluster/images/provider-tf-equinix-controller/Dockerfile +++ b/cluster/images/provider-jet-equinix-controller/Dockerfile @@ -13,6 +13,7 @@ ARG TERRAFORM_PROVIDER_SOURCE ARG TERRAFORM_PROVIDER_VERSION ARG TERRAFORM_PROVIDER_DOWNLOAD_NAME ARG TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX +ARG TERRAFORM_NATIVE_PROVIDER_BINARY ## End of - Provider-dependent configuration ENV PLUGIN_DIR /terraform/provider-mirror/registry.terraform.io/${TERRAFORM_PROVIDER_SOURCE}/${TERRAFORM_PROVIDER_VERSION}/linux_${ARCH} @@ -29,9 +30,10 @@ ADD terraformrc.hcl ${TF_CLI_CONFIG_FILE} RUN unzip /tmp/terraform_${TERRAFORM_VERSION}_linux_${ARCH}.zip -d /usr/local/bin \ && chmod +x /usr/local/bin/terraform \ && rm /tmp/terraform_${TERRAFORM_VERSION}_linux_${ARCH}.zip \ - && unzip /tmp/${TERRAFORM_PROVIDER_DOWNLOAD_NAME}_${TERRAFORM_PROVIDER_VERSION}_linux_${ARCH}.zip -d ${PLUGIN_DIR} \ - && chmod +x ${PLUGIN_DIR}/* \ - && rm /tmp/${TERRAFORM_PROVIDER_DOWNLOAD_NAME}_${TERRAFORM_PROVIDER_VERSION}_linux_${ARCH}.zip \ + && unzip /tmp/${TERRAFORM_PROVIDER_DOWNLOAD_NAME}_${TERRAFORM_PROVIDER_VERSION}_linux_${ARCH}.zip -d /tmp/ \ + && mv /tmp/${TERRAFORM_NATIVE_PROVIDER_BINARY} ${PLUGIN_DIR} \ + && chmod +x ${PLUGIN_DIR}/${TERRAFORM_NATIVE_PROVIDER_BINARY} \ + && rm -f /tmp/${TERRAFORM_PROVIDER_DOWNLOAD_NAME}_${TERRAFORM_PROVIDER_VERSION}_linux_${ARCH}.zip \ && chown -R ${USER_ID}:${USER_ID} /terraform # End of - Setup Terraform environment @@ -41,6 +43,7 @@ ADD provider /usr/local/bin/crossplane-provider ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} ENV TERRAFORM_PROVIDER_SOURCE ${TERRAFORM_PROVIDER_SOURCE} ENV TERRAFORM_PROVIDER_VERSION ${TERRAFORM_PROVIDER_VERSION} +ENV TERRAFORM_NATIVE_PROVIDER_PATH ${PLUGIN_DIR}/${TERRAFORM_NATIVE_PROVIDER_BINARY} USER ${USER_ID} EXPOSE 8080 diff --git a/cluster/images/provider-tf-equinix-controller/Makefile b/cluster/images/provider-jet-equinix-controller/Makefile similarity index 89% rename from cluster/images/provider-tf-equinix-controller/Makefile rename to cluster/images/provider-jet-equinix-controller/Makefile index 4daaac7..8e0ce78 100755 --- a/cluster/images/provider-tf-equinix-controller/Makefile +++ b/cluster/images/provider-jet-equinix-controller/Makefile @@ -6,7 +6,7 @@ include ../../../build/makelib/common.mk # ==================================================================================== # Options -IMAGE = $(BUILD_REGISTRY)/provider-tf-equinix-controller-$(ARCH) +IMAGE = $(BUILD_REGISTRY)/provider-jet-equinix-controller-$(ARCH) include ../../../build/makelib/image.mk # ==================================================================================== @@ -26,6 +26,7 @@ img.build: --build-arg TERRAFORM_PROVIDER_VERSION=$(TERRAFORM_PROVIDER_VERSION) \ --build-arg TERRAFORM_PROVIDER_DOWNLOAD_NAME=$(TERRAFORM_PROVIDER_DOWNLOAD_NAME) \ --build-arg TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX=$(TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX) \ + --build-arg TERRAFORM_NATIVE_PROVIDER_BINARY=$(TERRAFORM_NATIVE_PROVIDER_BINARY) \ -t $(IMAGE) \ $(IMAGE_TEMP_DIR) || $(FAIL) @$(OK) docker build $(IMAGE) diff --git a/cluster/images/provider-tf-equinix-controller/terraformrc.hcl b/cluster/images/provider-jet-equinix-controller/terraformrc.hcl similarity index 100% rename from cluster/images/provider-tf-equinix-controller/terraformrc.hcl rename to cluster/images/provider-jet-equinix-controller/terraformrc.hcl diff --git a/cluster/images/provider-tf-equinix/Dockerfile b/cluster/images/provider-jet-equinix/Dockerfile similarity index 100% rename from cluster/images/provider-tf-equinix/Dockerfile rename to cluster/images/provider-jet-equinix/Dockerfile diff --git a/cluster/images/provider-tf-equinix/Makefile b/cluster/images/provider-jet-equinix/Makefile similarity index 95% rename from cluster/images/provider-tf-equinix/Makefile rename to cluster/images/provider-jet-equinix/Makefile index e4c196e..b347fd3 100755 --- a/cluster/images/provider-tf-equinix/Makefile +++ b/cluster/images/provider-jet-equinix/Makefile @@ -7,7 +7,7 @@ include ../../../build/makelib/common.mk # ==================================================================================== # Options DOCKER_REGISTRY ?= crossplane -IMAGE = $(BUILD_REGISTRY)/provider-tf-equinix-$(ARCH) +IMAGE = $(BUILD_REGISTRY)/provider-jet-equinix-$(ARCH) OSBASEIMAGE = scratch include ../../../build/makelib/image.mk diff --git a/cmd/generator/main.go b/cmd/generator/main.go index 644dffa..5f4f693 100644 --- a/cmd/generator/main.go +++ b/cmd/generator/main.go @@ -1,3 +1,5 @@ +//go:build generate + /* Copyright 2021 The Crossplane Authors. @@ -21,11 +23,9 @@ import ( "os" "path/filepath" - tf "github.com/equinix/terraform-provider-equinix/equinix" - - "github.com/crossplane-contrib/terrajet/pkg/pipeline" + "github.com/crossplane/terrajet/pkg/pipeline" - "github.com/crossplane-contrib/provider-tf-equinix/config" + "github.com/crossplane-contrib/provider-jet-equinix/config" ) func main() { @@ -36,5 +36,5 @@ func main() { if err != nil { panic(fmt.Sprintf("cannot calculate the absolute path of %s", os.Args[1])) } - pipeline.Run(config.GetProvider(tf.Provider()), absRootDir) + pipeline.Run(config.GetProvider(), absRootDir) } diff --git a/cmd/provider/main.go b/cmd/provider/main.go index 00cec9f..ce30a71 100644 --- a/cmd/provider/main.go +++ b/cmd/provider/main.go @@ -17,21 +17,31 @@ limitations under the License. package main import ( + "context" "os" "path/filepath" + "time" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + xpcontroller "github.com/crossplane/crossplane-runtime/pkg/controller" "github.com/crossplane/crossplane-runtime/pkg/logging" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" - tf "github.com/equinix/terraform-provider-equinix/equinix" + "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" "gopkg.in/alecthomas/kingpin.v2" + kerrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/tools/leaderelection/resourcelock" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/log/zap" - "github.com/crossplane-contrib/provider-tf-equinix/apis" - pconfig "github.com/crossplane-contrib/provider-tf-equinix/config" - "github.com/crossplane-contrib/provider-tf-equinix/internal/clients" - "github.com/crossplane-contrib/provider-tf-equinix/internal/controller" + "github.com/crossplane-contrib/provider-jet-equinix/apis" + "github.com/crossplane-contrib/provider-jet-equinix/apis/v1alpha1" + "github.com/crossplane-contrib/provider-jet-equinix/config" + "github.com/crossplane-contrib/provider-jet-equinix/internal/clients" + "github.com/crossplane-contrib/provider-jet-equinix/internal/controller" + "github.com/crossplane-contrib/provider-jet-equinix/internal/features" ) func main() { @@ -43,11 +53,15 @@ func main() { terraformVersion = app.Flag("terraform-version", "Terraform version.").Required().Envar("TERRAFORM_VERSION").String() providerSource = app.Flag("terraform-provider-source", "Terraform provider source.").Required().Envar("TERRAFORM_PROVIDER_SOURCE").String() providerVersion = app.Flag("terraform-provider-version", "Terraform provider version.").Required().Envar("TERRAFORM_PROVIDER_VERSION").String() + maxReconcileRate = app.Flag("max-reconcile-rate", "The global maximum rate per second at which resources may checked for drift from the desired state.").Default("10").Int() + + namespace = app.Flag("namespace", "Namespace used to set as default scope in default secret store config.").Default("crossplane-system").Envar("POD_NAMESPACE").String() + enableExternalSecretStores = app.Flag("enable-external-secret-stores", "Enable support for ExternalSecretStores.").Default("false").Envar("ENABLE_EXTERNAL_SECRET_STORES").Bool() ) kingpin.MustParse(app.Parse(os.Args[1:])) zl := zap.New(zap.UseDevMode(*debug)) - log := logging.NewLogrLogger(zl.WithName("provider-tf-equinix")) + log := logging.NewLogrLogger(zl.WithName("provider-jet-equinix")) if *debug { // The controller-runtime runs with a no-op logger by default. It is // *very* verbose even at info level, so we only provide it a real @@ -61,16 +75,48 @@ func main() { kingpin.FatalIfError(err, "Cannot get API server rest config") mgr, err := ctrl.NewManager(cfg, ctrl.Options{ - LeaderElection: *leaderElection, - LeaderElectionID: "crossplane-leader-election-provider-tf-equinix", - SyncPeriod: syncPeriod, + LeaderElection: *leaderElection, + LeaderElectionID: "crossplane-leader-election-provider-jet-equinix", + SyncPeriod: syncPeriod, + LeaderElectionResourceLock: resourcelock.LeasesResourceLock, + LeaseDuration: func() *time.Duration { d := 60 * time.Second; return &d }(), + RenewDeadline: func() *time.Duration { d := 50 * time.Second; return &d }(), }) kingpin.FatalIfError(err, "Cannot create controller manager") - ws := terraform.NewWorkspaceStore(log) - setup := clients.TerraformSetupBuilder(*terraformVersion, *providerSource, *providerVersion) - - rl := ratelimiter.NewGlobal(ratelimiter.DefaultGlobalRPS) kingpin.FatalIfError(apis.AddToScheme(mgr.GetScheme()), "Cannot add Equinix APIs to scheme") - kingpin.FatalIfError(controller.Setup(mgr, log, rl, setup, ws, pconfig.GetProvider(tf.Provider()), 1), "Cannot setup Equinix controllers") + o := tjcontroller.Options{ + Options: xpcontroller.Options{ + Logger: log, + GlobalRateLimiter: ratelimiter.NewGlobal(*maxReconcileRate), + PollInterval: 1 * time.Minute, + MaxConcurrentReconciles: 1, + }, + Provider: config.GetProvider(), + // use the following WorkspaceStoreOption to enable the shared gRPC mode + // terraform.WithProviderRunner(terraform.NewSharedProvider(log, os.Getenv("TERRAFORM_NATIVE_PROVIDER_PATH"), terraform.WithNativeProviderArgs("-debuggable"))) + WorkspaceStore: terraform.NewWorkspaceStore(log), + SetupFn: clients.TerraformSetupBuilder(*terraformVersion, *providerSource, *providerVersion), + } + + if *enableExternalSecretStores { + o.SecretStoreConfigGVK = &v1alpha1.StoreConfigGroupVersionKind + log.Info("Alpha feature enabled", "flag", features.EnableAlphaExternalSecretStores) + + // Ensure default store config exists. + kingpin.FatalIfError(resource.Ignore(kerrors.IsAlreadyExists, mgr.GetClient().Create(context.Background(), &v1alpha1.StoreConfig{ + ObjectMeta: metav1.ObjectMeta{ + Name: "default", + }, + Spec: v1alpha1.StoreConfigSpec{ + // NOTE(turkenh): We only set required spec and expect optional + // ones to properly be initialized with CRD level default values. + SecretStoreConfig: xpv1.SecretStoreConfig{ + DefaultScope: *namespace, + }, + }, + })), "cannot create default store config") + } + + kingpin.FatalIfError(controller.Setup(mgr, o), "Cannot setup Equinix controllers") kingpin.FatalIfError(mgr.Start(ctrl.SetupSignalHandler()), "Cannot start controller manager") } diff --git a/config/ecx/l2connection/l2connection.go b/config/ecx/l2connection/config.go similarity index 83% rename from config/ecx/l2connection/l2connection.go rename to config/ecx/l2connection/config.go index 282bfbd..b28aeaa 100644 --- a/config/ecx/l2connection/l2connection.go +++ b/config/ecx/l2connection/config.go @@ -17,11 +17,11 @@ limitations under the License. package l2connection import ( - "github.com/crossplane-contrib/terrajet/pkg/config" + "github.com/crossplane/terrajet/pkg/config" ) -// Customize the device group with references to other resources -func Customize(p *config.Provider) { +// Configure the device group with references to other resources +func Configure(p *config.Provider) { p.AddResourceConfigurator("equinix_ecx_l2_connection", func(r *config.Resource) { r.References["profile_uuid"] = config.Reference{ Type: "L2Serviceprofile", diff --git a/config/metal/connection/config.go b/config/metal/connection/config.go new file mode 100644 index 0000000..01388ac --- /dev/null +++ b/config/metal/connection/config.go @@ -0,0 +1,32 @@ +/* +Copyright 2021 The Crossplane 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 connection + +import "github.com/crossplane/terrajet/pkg/config" + +// Configure the connection group with references to other resources +func Configure(p *config.Provider) { + p.AddResourceConfigurator("equinix_metal_connection", func(r *config.Resource) { + r.References["organization_id"] = config.Reference{ + Type: "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Organization", + } + + r.References["project_id"] = config.Reference{ + Type: "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Project", + } + }) +} diff --git a/config/metal/device/config.go b/config/metal/device/config.go new file mode 100644 index 0000000..432ff02 --- /dev/null +++ b/config/metal/device/config.go @@ -0,0 +1,28 @@ +/* +Copyright 2021 The Crossplane 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 device + +import "github.com/crossplane/terrajet/pkg/config" + +// Configure the device group with references to other resources +func Configure(p *config.Provider) { + p.AddResourceConfigurator("equinix_metal_device", func(r *config.Resource) { + r.References["project_id"] = config.Reference{ + Type: "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Project", + } + }) +} diff --git a/config/metal/project/config.go b/config/metal/project/config.go new file mode 100644 index 0000000..6b712e2 --- /dev/null +++ b/config/metal/project/config.go @@ -0,0 +1,28 @@ +/* +Copyright 2021 The Crossplane 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 project + +import "github.com/crossplane/terrajet/pkg/config" + +// Configure the device group with references to other resources +func Configure(p *config.Provider) { + p.AddResourceConfigurator("equinix_metal_project", func(r *config.Resource) { + r.References["organization_id"] = config.Reference{ + Type: "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Organization", + } + }) +} diff --git a/config/provider.go b/config/provider.go index 721f20d..6398756 100644 --- a/config/provider.go +++ b/config/provider.go @@ -17,23 +17,27 @@ limitations under the License. package config import ( - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + // Note(turkenh): we are importing this to embed provider schema document + _ "embed" - "github.com/crossplane-contrib/provider-tf-equinix/config/ecx/l2connection" + "github.com/crossplane-contrib/provider-jet-equinix/config/ecx/l2connection" + "github.com/crossplane-contrib/provider-jet-equinix/config/metal/connection" + "github.com/crossplane-contrib/provider-jet-equinix/config/metal/device" + "github.com/crossplane-contrib/provider-jet-equinix/config/metal/project" + tjconfig "github.com/crossplane/terrajet/pkg/config" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) const ( resourcePrefix = "equinix" - modulePath = "github.com/crossplane-contrib/provider-tf-equinix" + modulePath = "github.com/crossplane-contrib/provider-jet-equinix" ) -// GetProvider returns provider configuration -func GetProvider(tf *schema.Provider) *tjconfig.Provider { - // Comment out the line below instead of the above, if your Terraform - // provider uses an old version ( k8s.io/client-go v0.22.0 diff --git a/go.sum b/go.sum index 16fa8c4..b1430db 100644 --- a/go.sum +++ b/go.sum @@ -3,6 +3,7 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT 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= @@ -16,9 +17,9 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY 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 v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= 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= @@ -37,49 +38,32 @@ cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiy 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 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= 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= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v45.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.3/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.0/go.mod h1:JljT387FplPzBA31vUcvsetLKF3pec5bdAxjVU4kI2s= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= -github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= 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/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= -github.com/ChrisTrenkamp/goxpath v0.0.0-20190607011252-c5096ec8773d/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= -github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= -github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= @@ -95,14 +79,10 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20210912230133-d1bdfacee922 h1:8ypNbf5sd3Sm3cKJ9waOGoQv6dKAFiFty9L6NP1AqJ4= github.com/alecthomas/units v0.0.0-20210912230133-d1bdfacee922/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190329064014-6e358769c32a/go.mod h1:T9M45xf79ahXVelWoOBmH0y4aC1t5kXO5BxwyakgIGA= -github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190103054945-8205d1f41e70/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= -github.com/aliyun/aliyun-tablestore-go-sdk v4.1.2+incompatible/go.mod h1:LDQHRZylxvcg8H7wBIDfvO5g/cy4/sz1iucBlc2l3Jw= github.com/andybalholm/crlf v0.0.0-20171020200849-670099aa064f/go.mod h1:k8feO4+kXDxro6ErPXBRTJ/ro2mf0SsFG8s7doP9kJE= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= -github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= @@ -110,40 +90,39 @@ github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFU github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= +github.com/apparentlymart/go-textseg/v12 v12.0.0 h1:bNEQyAGak9tojivJNkoqWErVCQbjdL7GzRt3F8NvfJ0= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= -github.com/apparentlymart/go-userdirs v0.0.0-20200915174352-b0c018a67c13/go.mod h1:7kfpUbyCdGJ9fDRCp3fopPQi5+cKNHgTE4ZuNrO71Cw= -github.com/apparentlymart/go-versions v1.0.1/go.mod h1:YF5j7IQtrOAOnsGkniupEA5bfCjzd7i14yu0shZavyM= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.9 h1:O2sNqxBdvq8Eq5xmzljcYzAORli6RWCvEym4cJf9m18= +github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.37.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.37.29 h1:OlePDQg2idesIZKPy8egpN51RIF3DHhtREnvgNpTZhE= -github.com/aws/aws-sdk-go v1.37.29/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmatcuk/doublestar v1.1.5/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/cenkalti/backoff/v3 v3.0.0 h1:ske+9nBpD9qZsTBoF41nW5L+AIuFBKMeze18XQ3eG1c= +github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= @@ -152,54 +131,45 @@ github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXH 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/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-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/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/crossplane-contrib/terrajet v0.2.1 h1:oTdBSYyHlKfWiwGBM9hClYU/BdWhMz490xwfQBDv11Q= -github.com/crossplane-contrib/terrajet v0.2.1/go.mod h1:RUsskXE63KZE7EcvZ7WK4UzBQjc1+7IhelK+/gIa/Go= -github.com/crossplane/crossplane-runtime v0.15.1-0.20211004150827-579c1833b513 h1:Sk3QurYYpy8x3c0DvTh9iGYFSv8WgdhnjCalNqNqlRI= -github.com/crossplane/crossplane-runtime v0.15.1-0.20211004150827-579c1833b513/go.mod h1:gKix9Gq5kRzVe/4XOpwlFgG7OurzrYayviJxWZakhw0= -github.com/crossplane/crossplane-tools v0.0.0-20210916125540-071de511ae8e h1:7UM4E9gNEzJ22JgRZqY2KBlkdMCAiHmKS96rcLANdME= -github.com/crossplane/crossplane-tools v0.0.0-20210916125540-071de511ae8e/go.mod h1:3GzY5sP0PVePArghBh5K4fGzS/3kM0R/NAZn5s7LXqw= +github.com/crossplane/crossplane-runtime v0.15.1-0.20220315141414-988c9ba9c255 h1:l9eAErqfcEzGpq5dMfO/4GTCG2qXgiQgH5J+xhBHqYc= +github.com/crossplane/crossplane-runtime v0.15.1-0.20220315141414-988c9ba9c255/go.mod h1:IPT3HTsovwmbw3i+SdsOyaC3r3b7TW+otBMmZsHLnSU= +github.com/crossplane/crossplane-tools v0.0.0-20220310165030-1f43fc12793e h1:HqLaMji3FRPwEBA5P6twPz0HbE6no0XOnByLU5O1noM= +github.com/crossplane/crossplane-tools v0.0.0-20220310165030-1f43fc12793e/go.mod h1:xFf30hwHd5n0/a0D4ZomId8nxQTTjE0Hc1j4/rWxefc= +github.com/crossplane/terrajet v0.4.0-rc.0.0.20220809090519-689dd7ae3fff h1:H7uG10CwIjKVLwc1AiW+k2Kk7VqzkalwBpCT5jMkmTk= +github.com/crossplane/terrajet v0.4.0-rc.0.0.20220809090519-689dd7ae3fff/go.mod h1:PY1geRNxxNXs2RFhGC36N7dDu3wZPhUZmAk6c4gQxAI= github.com/dave/jennifer v1.4.1 h1:XyqG6cn5RQsTj3qlWQTKlRGAyrTcsk1kUmWdZBzRjDw= github.com/dave/jennifer v1.4.1/go.mod h1:7jEdnm+qBcxl8PC0zyp7vxcpSRnzXSt9r39tpTVGlwA= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/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/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= -github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1/go.mod h1:lcy9/2gH1jn/VCLouHA6tOEwLoNVd4GW6zhuKLmHC2Y= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= 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= @@ -207,50 +177,44 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m 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/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/equinix/ecx-go/v2 v2.0.3 h1:XnT7VTZm75tlaCYu400GF841NmTy0G6uT7jJtlzlf8E= -github.com/equinix/ecx-go/v2 v2.0.3/go.mod h1:FvCdZ3jXU8Z4CPKig2DT+4J2HdwgRK17pIcznM7RXyk= -github.com/equinix/ne-go v1.2.0 h1:rlDC9DgPEBt96bGzP4Bl6f90J6yK1APng/fLnev1pPY= -github.com/equinix/ne-go v1.2.0/go.mod h1:eHkkxM4nbTB7DZ9X9zGnwfYnxIJWIsU3aHA+FAoZ1EI= -github.com/equinix/oauth2-go v1.0.0 h1:fHtAPGq82PdgtK5vEThs8Vwz6f7D/8SX4tE3NJu+KcU= -github.com/equinix/oauth2-go v1.0.0/go.mod h1:4pulXvUNMktJlewLPnUeJyMW52iCoF1aM+A/Z5xY1ws= -github.com/equinix/rest-go v1.3.0 h1:m38scYTOfV6N+gcrwchgVDutDffYd+QoYCMm9Jn6jyk= -github.com/equinix/rest-go v1.3.0/go.mod h1:7pjEgOdG2MZO9BGkQzSurSgVQxRfzc1enceXJS6hYDw= -github.com/equinix/terraform-provider-equinix v1.3.0 h1:c6Yhp9BwrVqRoNqxkpkT3u9ZfOuzRSZwRZVqFEtSK4Y= -github.com/equinix/terraform-provider-equinix v1.3.0/go.mod h1:xUzpDGnFYDyI08vMJvfYkd1+bQ8n06bDcqZfNc2Ns9k= -github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.11.0+incompatible h1:glyUF9yIYtMHzn8xaKw5rMhdWcwsYV8dZHIq5567/xs= -github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc= github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= +github.com/frankban/quicktest v1.13.0 h1:yNZif1OkDfNoDfb9zZa9aXIpejNR4F23Wely0c+Qdqk= +github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= +github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= +github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.1.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= github.com/go-git/go-git-fixtures/v4 v4.0.2-0.20200613231340-f56387b50c12/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= -github.com/go-git/go-git/v5 v5.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM= github.com/go-git/go-git/v5 v5.3.0/go.mod h1:xdX4bWJ48aOrdhnl2XqHYstHbbp6+LFS4r4X+lNVprw= -github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= 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= @@ -258,48 +222,37 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/zapr v0.4.0 h1:uc1uML3hRYL9/ZZPdgHS/n8Nzo+eaYL/Efxkkamf7OM= -github.com/go-logr/zapr v0.4.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/zapr v1.2.0 h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk= +github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-resty/resty/v2 v2.3.0 h1:JOOeAvjSlapTT92p8xiS19Zxev1neGikoHsXJeOq8So= -github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobuffalo/flect v0.2.3 h1:f/ZukRnSNA/DUpSNDadko7Qc0PhGvsew35p/2tu+CRY= github.com/gobuffalo/flect v0.2.3/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= 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= @@ -316,7 +269,6 @@ github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71 github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= 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.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -337,10 +289,14 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/addlicense v0.0.0-20210428195630-6d92264d7170/go.mod h1:EMjYTRimagHs1FwlIqKyX3wAM0u3rA+McvlIIWmSamA= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.9.0/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= +github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -354,16 +310,11 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= 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 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= 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= @@ -374,44 +325,32 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf 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-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= -github.com/gophercloud/gophercloud v0.6.1-0.20191122030953-d8ac278c1c9d/go.mod h1:ozGNgr9KYOVATV5jsgHl/ceCDXGuguqOZAzoQ/2vcNM= -github.com/gophercloud/gophercloud v0.10.1-0.20200424014253-c3bfe50899e5/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= -github.com/gophercloud/utils v0.0.0-20200423144003-7c72efc7435d/go.mod h1:ehWUbLQJPqS0Ep+CxeD559hsm9pthPXadJNKwZkp43w= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/aws-sdk-go-base v0.6.0/go.mod h1:2fRjWDv3jJBeN6mVWFHV6hFTNeFBx2gpDLQaZNxUVAY= -github.com/hashicorp/consul v0.0.0-20171026175957-610f3c86a089/go.mod h1:mFrjN1mfidgJfYP1xrJCF+AfRhr6Eaqhb2+sfyn/OOI= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-azure-helpers v0.12.0/go.mod h1:Zc3v4DNeX6PDdy7NljlYpnrdac1++qNW0I4U+ofGwpg= -github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= @@ -420,83 +359,88 @@ github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/S github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= -github.com/hashicorp/go-getter v1.5.0/go.mod h1:a7z7NPPfNQpJWcn4rSWFtdrSldqLdLPEF3d8nFMsSLM= -github.com/hashicorp/go-getter v1.5.1/go.mod h1:a7z7NPPfNQpJWcn4rSWFtdrSldqLdLPEF3d8nFMsSLM= -github.com/hashicorp/go-getter v1.5.3 h1:NF5+zOlQegim+w/EUhSLh6QhXHmZMEeHLQzllkQ3ROU= github.com/hashicorp/go-getter v1.5.3/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.15.0 h1:qMuK0wxsoW4D0ddCCYwPSTm4KQv1X1ke3WmPWZ0Mvsk= github.com/hashicorp/go-hclog v0.15.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa/go.mod h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw= +github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs= +github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-msgpack v0.5.4/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0= -github.com/hashicorp/go-plugin v1.4.0/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= -github.com/hashicorp/go-plugin v1.4.1 h1:6UltRQlLN9iZO513VveELp5xyaFxVD2+1OVylE+2E+w= github.com/hashicorp/go-plugin v1.4.1/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= -github.com/hashicorp/go-retryablehttp v0.5.2/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-plugin v1.4.3 h1:DXmvivbWD5qdiBts9TpBC7BYL1Aia5sxbRgQB+v6UZM= +github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.6.6 h1:HJunrbHTDDbBb/ay4kxa1n+dLmttUlnP3V9oNE4hmsM= +github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-slug v0.4.1/go.mod h1:I5tq5Lv0E2xcNXNkmx7BSfzi1PsJ2cNjs3cC3LwyhK8= -github.com/hashicorp/go-sockaddr v0.0.0-20180320115054-6d291a969b86/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-secure-stdlib/base62 v0.1.1/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= +github.com/hashicorp/go-secure-stdlib/mlock v0.1.1 h1:cCRo8gK7oq6A2L6LICkUZ+/a5rLiRXFMf1Qd4xSwxTc= +github.com/hashicorp/go-secure-stdlib/mlock v0.1.1/go.mod h1:zq93CJChV6L9QTfGKtfBxKqD7BqqXx5O04A/ns2p5+I= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1 h1:78ki3QBevHwYrVxnyVeaEz+7WtifHhauYF23es/0KlI= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= +github.com/hashicorp/go-secure-stdlib/password v0.1.1/go.mod h1:9hH302QllNwu1o2TGYtSk8I8kTAN0ca1EHpwhm5Mmzo= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.1 h1:nd0HIW15E6FG1MsnArYaHfuw9C2zgzM8LxkG5Ty/788= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.1/go.mod h1:gKOamz3EwoIoJq7mlMIRBpVTAUn8qPCrEclOKKWhD3U= +github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.1/go.mod h1:l8slYwnJA26yBz+ErHpp2IRCLr0vuOMGBORIz4rRiAs= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-tfe v0.8.1/go.mod h1:XAV72S4O1iP8BDaqiaPLmL2B4EE6almocnOn8E8stHc= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw= github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8= +github.com/hashicorp/hcl/v2 v2.8.2 h1:wmFle3D1vu0okesm8BTLVDyJ6/OL9DCLUwn0b2OptiY= github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= -github.com/hashicorp/hcl/v2 v2.9.1 h1:eOy4gREY0/ZQHNItlfuEZqtcQbXIxzojlP301hDpnac= -github.com/hashicorp/hcl/v2 v2.9.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= -github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= 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.0/go.mod h1:ncdBp14cuox2iFOq3kDiquKU6fqsTBc3W6JvZwjxxsE= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb/go.mod h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/terraform v0.14.8 h1:m2ytUbgJCAfySARVCd5cjbcMHhtfaozNaDDOFxpZBXk= -github.com/hashicorp/terraform v0.14.8/go.mod h1:K/LAcRZgbGdSBY+3NB9qdLSPkkFdZ+bTrbzpZ65p4BY= github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= -github.com/hashicorp/terraform-exec v0.13.0/go.mod h1:SGhto91bVRlgXQWcJ5znSz+29UZIa8kpBbkGwQ+g9E8= github.com/hashicorp/terraform-exec v0.13.3/go.mod h1:SSg6lbUsVB3DmFyCPjBPklqf6EYGX0TlQ6QTxOlikDU= -github.com/hashicorp/terraform-exec v0.14.0 h1:UQoUcxKTZZXhyyK68Cwn4mApT4mnFPmEXPiqaHL9r+w= github.com/hashicorp/terraform-exec v0.14.0/go.mod h1:qrAASDq28KZiMPDnQ02sFS9udcqEkRly002EA2izXTA= -github.com/hashicorp/terraform-json v0.8.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= github.com/hashicorp/terraform-json v0.10.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= -github.com/hashicorp/terraform-json v0.12.0 h1:8czPgEEWWPROStjkWPUnTQDXmpmZPlkQAwYYLETaTvw= github.com/hashicorp/terraform-json v0.12.0/go.mod h1:pmbq9o4EuL43db5+0ogX10Yofv1nozM+wskr/bGFJpI= -github.com/hashicorp/terraform-plugin-go v0.2.1/go.mod h1:10V6F3taeDWVAoLlkmArKttR3IULlRWFAGtQIQTIDr4= +github.com/hashicorp/terraform-json v0.13.0 h1:Li9L+lKD1FO5RVFRM1mMMIBDoUHslOniyEi5CM+FWGY= +github.com/hashicorp/terraform-json v0.13.0/go.mod h1:y5OdLBCT+rxbwnpxZs9kGL7R9ExU76+cpdY8zHwoazk= github.com/hashicorp/terraform-plugin-go v0.3.0 h1:AJqYzP52JFYl9NABRI7smXI1pNjgR5Q/y2WyVJ/BOZA= github.com/hashicorp/terraform-plugin-go v0.3.0/go.mod h1:dFHsQMaTLpON2gWhVWT96fvtlc/MF1vSy3OdMhWBzdM= github.com/hashicorp/terraform-plugin-sdk v1.17.2 h1:V7DUR3yBWFrVB9z3ddpY7kiYVSsq4NYR67NiTs93NQo= github.com/hashicorp/terraform-plugin-sdk v1.17.2/go.mod h1:wkvldbraEMkz23NxkkAsFS88A1R9eUiooiaUZyS6TLw= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.4/go.mod h1:z+cMZ0iswzZOahBJ3XmNWgWkVnAd2bl8g+FhyyuPDH4= github.com/hashicorp/terraform-plugin-sdk/v2 v2.7.0 h1:SuI59MqNjYDrL7EfqHX9V6P/24isgqYx/FdglwVs9bg= github.com/hashicorp/terraform-plugin-sdk/v2 v2.7.0/go.mod h1:grseeRo9g3yNkYW09iFlV8LG78jTa1ssBgouogQg/RU= github.com/hashicorp/terraform-plugin-test/v2 v2.2.1/go.mod h1:eZ9JL3O69Cb71Skn6OhHyj17sLmHRb+H6VrDcJjKrYU= github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= +github.com/hashicorp/vault/api v1.3.1 h1:pkDkcgTh47PRjY1NEFeofqR4W/HkNUi9qIakESO2aRM= +github.com/hashicorp/vault/api v1.3.1/go.mod h1:QeJoWxMFt+MsuWcYhmwRLwKEXrjwAFFywzhptMsTIUw= +github.com/hashicorp/vault/sdk v0.3.0 h1:kR3dpxNkhh/wr6ycaJYqp6AFT/i2xaftbfnwZduTKEY= +github.com/hashicorp/vault/sdk v0.3.0/go.mod h1:aZ3fNuL5VNydQk8GcLJ2TV8YCRVvyaakYkhZRoVuhj0= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= @@ -507,17 +451,11 @@ github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47 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.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= -github.com/jarcoal/httpmock v1.0.6/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= -github.com/jarcoal/httpmock v1.0.8 h1:8kI16SoO6LQKgPE7PvQuV+YuD/inwHd7fOOe2zMbo4k= -github.com/jarcoal/httpmock v1.0.8/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= @@ -525,38 +463,29 @@ github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZ github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= 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/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= -github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.11.2 h1:MiK62aErc3gIiVEtyzKfeOHgW7atJb5g/KNX5m3c2nQ= github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -567,35 +496,22 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/likexian/gokit v0.0.0-20190309162924-0a377eecf7aa/go.mod h1:QdfYv6y6qPA9pbBA2qXtoT8BMKha6UyNbxWGWl/9Jfk= -github.com/likexian/gokit v0.0.0-20190418170008-ace88ad0983b/go.mod h1:KKqSnk/VVSW8kEyO2vVCXoanzEutKdlBAPohmGXkxCk= -github.com/likexian/gokit v0.0.0-20190501133040-e77ea8b19cdc/go.mod h1:3kvONayqCaj+UgrRZGpgfXzHdMYCAO0KAt4/8n0L57Y= -github.com/likexian/gokit v0.20.15/go.mod h1:kn+nTv3tqh6yhor9BC4Lfiu58SmH8NmQ2PmEl+uM6nU= -github.com/likexian/simplejson-go v0.0.0-20190409170913-40473a74d76d/go.mod h1:Typ1BfnATYtZ/+/shXfFYLrovhFyuKvzwrdOnIDHlmg= -github.com/likexian/simplejson-go v0.0.0-20190419151922-c1f9f0b4f084/go.mod h1:U4O1vIJvIKwbMZKUJ62lppfdvkCdVd2nfMimHK81eec= -github.com/likexian/simplejson-go v0.0.0-20190502021454-d8787b4bfa0b/go.mod h1:3BWwtmKP9cXWwYCr5bkoVDEfLywacOv0s06OBEDpyt8= -github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82/go.mod h1:y54tfGmO3NKssKveTEFFzH8C/akrSOy/iW9qEAUDV84= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= -github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= -github.com/masterzen/winrm v0.0.0-20200615185753-c42b5136ff88/go.mod h1:a2HXwefeat3evJHxFXSayvRHpYEPJYtErl4uIzfaUqY= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -605,17 +521,12 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-shellwords v1.0.4/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/cli v1.1.1/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -624,7 +535,6 @@ github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HK github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.4 h1:ZU1VNC02qyufSZsjjs7+khruk2fKvbQ3TwRV/IBCeFA= @@ -633,106 +543,100 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZX github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/gox v1.0.1/go.mod h1:ED6BioOGXMswlXa2zxfh/xdd5QhwYliBFn9V18Ap4z4= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/panicwrap v1.0.0/go.mod h1:pKvZHwWrZowLUzftuFq7coarnxbBXU4aQh3N0BJOeeA= -github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo= +github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= +github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/muvaf/typewriter v0.0.0-20210910160850-80e49fe1eb32 h1:yBQlHXLeUJL3TWVmzup5uT3wG5FLxhiTAiTsmNVocys= github.com/muvaf/typewriter v0.0.0-20210910160850-80e49fe1eb32/go.mod h1:SAAdeMEiFXR8LcHffvIdiLI1w243DCH2DuHq7UrA5YQ= +github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7 h1:CxRHKnh1YJXgNKxcos9rrKL6AcmOl1AS/fygmxFDzh4= +github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7/go.mod h1:SAAdeMEiFXR8LcHffvIdiLI1w243DCH2DuHq7UrA5YQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce h1:RPclfga2SEJmgMmz2k+Mg7cowZ8yv4Trqw9UsJby758= github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce/go.mod h1:uFMI8w+ref4v2r9jz+c9i1IfIttS/OkmLfrk1jne5hs= -github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +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/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/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.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.14.0 h1:ep6kpPVwmr/nTbklSx2nrLNSIO62DoYAhnPNIMhK8gI= -github.com/onsi/gomega v1.14.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= -github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk= +github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pierrec/lz4 v2.5.2+incompatible h1:WCjObylUIOlKy/+7Abdn34TLIkXiA4UWUMhxq9m9ZXI= +github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.28.0 h1:vGVfV9KrDTvWt5boZO0I19g2E3CsWfpPPKZM9dt3mEw= +github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= @@ -741,12 +645,13 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -754,25 +659,24 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.8.0 h1:5MmtuhAgYeU6qpa7w7bP0dv6MBYuup0vekhSpSkoq60= +github.com/spf13/afero v1.8.0/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= 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/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -781,9 +685,8 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -792,93 +695,97 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw= -github.com/tencentcloud/tencentcloud-sdk-go v3.0.82+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4= -github.com/tencentyun/cos-go-sdk-v5 v0.0.0-20190808065407-f07404cefc8c/go.mod h1:wk2XFUg6egk4tSDNZtXeKfe2G6690UVyt163PuUxBZk= -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-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tombuildsstuff/giovanni v0.12.0/go.mod h1:qJ5dpiYWkRsuOSXO8wHbee7+wElkLNfWVolcf59N84E= -github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= -github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= -github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= -github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= 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.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.8.2/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.8.4 h1:pwhhz5P+Fjxse7S7UriBrMu6AUJSZM5pKqGem1PjGAs= github.com/zclconf/go-cty v1.8.4/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.9.1 h1:viqrgQwFl5UpSxc046qblj78wZXVDFnSOufaOTER+cc= +github.com/zclconf/go-cty v1.9.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= github.com/zclconf/go-cty-yaml v1.0.2/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= 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.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= +go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= +go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= +go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.18.1 h1:CSUJ2mjFszzEWt4CdKISEuChVIXGBn3lAPwkRGyVrc4= -go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg= 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-20211108221036-ceb1ce70b4fa h1:idItI2DDfCokpg0N51B2VtiLdJ4vAuXC9fnCb2gACo4= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -902,7 +809,6 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu 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/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/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= @@ -912,12 +818,10 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB 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.3.1-0.20200828183125-ce943fd02449/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 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -928,8 +832,6 @@ golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -940,11 +842,8 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL 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-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -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-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/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= @@ -963,16 +862,19 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R 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-20201202161906-c7110b5ffcbb/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-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 h1:ADo5wSpq2gqaCGQWzk7S5vd//0iyyLeAratkEoG5dLE= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a h1:bRuuGXV8wwSdGTB+CtJf+FjgO1APK1CoO39T4BN/XBw= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -984,8 +886,10 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 h1:0Ja1LBD+yisY6RWM/BH7TJVXWsSjs2VwBSmvSX4HdBc= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= 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= @@ -997,7 +901,6 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ 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/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1006,7 +909,6 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1014,12 +916,9 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190509141414-a5b02f93d862/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= @@ -1027,7 +926,6 @@ golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191008105621-543471e840be/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-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1050,6 +948,7 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/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= @@ -1058,6 +957,7 @@ golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1065,37 +965,39 @@ golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/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-20210603081109-ebe580a85c40/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-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211029165221-6e7872819dc8 h1:M69LAlWZCshgp0QSzyDcSsSIejIEeuaCVpmwcKwyLMk= +golang.org/x/sys v0.0.0-20211029165221-6e7872819dc8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 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.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-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-20200416051211-89c76fbcd5d1/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.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1107,7 +1009,6 @@ golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBn 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-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -1121,7 +1022,6 @@ golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtn 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-20191203134012-c197fd4bf371/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-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1153,11 +1053,13 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f 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.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff h1:VX/uD7MK0AHXGiScH3fsieUQUcpmRERPDYtqZdJnA+Q= +golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1187,7 +1089,6 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0 h1:URs6qR1lAxDsqWITsQXI4ZkGiYJ5dHtRNiCpfs2OeKA= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1219,6 +1120,7 @@ google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfG 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-20200423170343-7949de9c1215/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-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1231,18 +1133,21 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D 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-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/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-20201110150050-8816d57aaa9a/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-20210222152913-aa3ee6e6a81c/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 v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2 h1:NHN4wOCScVzKhPenJ2dt+BTs3X/XkBVI/Rh4iDt55T8= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1264,8 +1169,11 @@ google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA5 google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= +google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= 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= @@ -1277,8 +1185,9 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD 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 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1287,22 +1196,20 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1310,7 +1217,6 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= @@ -1328,58 +1234,42 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh 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= -k8s.io/api v0.0.0-20190620084959-7cf5895f2711/go.mod h1:TBhBqb1AWbBQbW3XRusr7n7E4v2+5ZY8r8sAMnyFC5A= -k8s.io/api v0.21.3/go.mod h1:hUgeYHUbBp23Ue4qdX9tR8/ANi/g3ehylAqDn9NWVOg= -k8s.io/api v0.22.0 h1:elCpMZ9UE8dLdYxr55E06TmSeji9I3KH494qH70/y+c= -k8s.io/api v0.22.0/go.mod h1:0AoXXqst47OI/L0oGKq9DG61dvGRPXs7X4/B7KyjBCU= -k8s.io/apiextensions-apiserver v0.21.3 h1:+B6biyUWpqt41kz5x6peIsljlsuwvNAp/oFax/j2/aY= -k8s.io/apiextensions-apiserver v0.21.3/go.mod h1:kl6dap3Gd45+21Jnh6utCx8Z2xxLm8LGDkprcd+KbsE= -k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719/go.mod h1:I4A+glKBHiTgiEjQiCCQfCAIcIMFGt291SmsvcrFzJA= -k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655/go.mod h1:nL6pwRT8NgfF8TT68DBI8uEePRt89cSvoXUVqbkWHq4= -k8s.io/apimachinery v0.21.3/go.mod h1:H/IM+5vH9kZRNJ4l3x/fXP/5bOPJaVP/guptnZPeCFI= -k8s.io/apimachinery v0.22.0 h1:CqH/BdNAzZl+sr3tc0D3VsK3u6ARVSo3GWyLmfIjbP0= -k8s.io/apimachinery v0.22.0/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= -k8s.io/apiserver v0.21.3/go.mod h1:eDPWlZG6/cCCMj/JBcEpDoK+I+6i3r9GsChYBHSbAzU= -k8s.io/client-go v0.22.0 h1:sD6o9O6tCwUKCENw8v+HFsuAbq2jCu8cWC61/ydwA50= -k8s.io/client-go v0.22.0/go.mod h1:GUjIuXR5PiEv/RVK5OODUsm6eZk7wtSWZSaSJbpFdGg= -k8s.io/code-generator v0.21.3/go.mod h1:K3y0Bv9Cz2cOW2vXUrNZlFbflhuPvuadW6JdnN6gGKo= -k8s.io/component-base v0.21.3 h1:4WuuXY3Npa+iFfi2aDRiOz+anhNvRfye0859ZgfC5Og= -k8s.io/component-base v0.21.3/go.mod h1:kkuhtfEHeZM6LkX0saqSK8PbdO7A0HigUngmhhrwfGQ= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.4.0 h1:lCJCxf/LIowc2IGS9TPjWDyXY4nOmdGdfcwwDQCOURQ= -k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/api v0.23.0 h1:WrL1gb73VSC8obi8cuYETJGXEoFNEh3LU0Pt+Sokgro= +k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg= +k8s.io/apiextensions-apiserver v0.23.0 h1:uii8BYmHYiT2ZTAJxmvc3X8UhNYMxl2A0z0Xq3Pm+WY= +k8s.io/apiextensions-apiserver v0.23.0/go.mod h1:xIFAEEDlAZgpVBl/1VSjGDmLoXAWRG40+GsWhKhAxY4= +k8s.io/apimachinery v0.23.0 h1:mIfWRMjBuMdolAWJ3Fd+aPTMv3X9z+waiARMpvvb0HQ= +k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc= +k8s.io/apiserver v0.23.0/go.mod h1:Cec35u/9zAepDPPFyT+UMrgqOCjgJ5qtfVJDxjZYmt4= +k8s.io/client-go v0.23.0 h1:vcsOqyPq7XV3QmQRCBH/t9BICJM9Q1M18qahjv+rebY= +k8s.io/client-go v0.23.0/go.mod h1:hrDnpnK1mSr65lHHcUuIZIXDgEbzc7/683c6hyG4jTA= +k8s.io/code-generator v0.23.0/go.mod h1:vQvOhDXhuzqiVfM/YHp+dmg10WDZCchJVObc9MvowsE= +k8s.io/component-base v0.23.0 h1:UAnyzjvVZ2ZR1lF35YwtNY6VMN94WtOnArcXBu34es8= +k8s.io/component-base v0.23.0/go.mod h1:DHH5uiFvLC1edCpvcTDV++NKULdYYU6pR9Tt3HIKMKI= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM= -k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= -k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/utils v0.0.0-20200411171748-3d5a2fe318e4/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210722164352-7f3ee0f31471 h1:DnzUXII7sVg1FJ/4JX6YDRJfLNAC7idRatPwe07suiI= -k8s.io/utils v0.0.0-20210722164352-7f3ee0f31471/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw= +k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= 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.19/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/controller-runtime v0.9.6 h1:EevVMlgUj4fC1NVM4+DB3iPkWkmGRNarA66neqv9Qew= -sigs.k8s.io/controller-runtime v0.9.6/go.mod h1:q6PpkM5vqQubEKUKOM6qr06oXGzOBcCby1DA9FbyZeA= -sigs.k8s.io/controller-tools v0.6.2 h1:+Y8L0UsAugDipGRw8lrkPoAi6XqlQVZuf1DQHME3PgU= -sigs.k8s.io/controller-tools v0.6.2/go.mod h1:oaeGpjXn6+ZSEIQkUe/+3I40PNiDYp9aeawbt3xTgJ8= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25/go.mod h1:Mlj9PNLmG9bZ6BHFwFKDo5afkpWyUISkb9Me0GnK66I= +sigs.k8s.io/controller-runtime v0.11.0 h1:DqO+c8mywcZLFJWILq4iktoECTyn30Bkj0CwgqMpZWQ= +sigs.k8s.io/controller-runtime v0.11.0/go.mod h1:KKwLiTooNGu+JmLZGn9Sl3Gjmfj66eMbCQznLP5zcqA= +sigs.k8s.io/controller-tools v0.8.0 h1:uUkfTGEwrguqYYfcI2RRGUnC8mYdCFDqfwPKUcNJh1o= +sigs.k8s.io/controller-tools v0.8.0/go.mod h1:qE2DXhVOiEq5ijmINcFbqi9GZrrUjzB1TuJU0xa6eoY= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/structured-merge-diff/v4 v4.2.0 h1:kDvPBbnPk+qYmkHmSo8vKGp438IASWofnbbUKDE/bv0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.0/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/hack/prepare.sh b/hack/prepare.sh new file mode 100755 index 0000000..abb2661 --- /dev/null +++ b/hack/prepare.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# Copyright 2021 The Crossplane 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. + +# Please set ProviderNameLower & ProviderNameUpper environment variables before running this script. +# See: https://github.com/crossplane/terrajet/blob/main/docs/generating-a-provider.md +set -euo pipefail + +REPLACE_FILES='./* ./.github :!build/** :!go.* :!hack/prepare.sh' +# shellcheck disable=SC2086 +git grep -l 'template' -- ${REPLACE_FILES} | xargs sed -i.bak "s/template/${ProviderNameLower}/g" +# shellcheck disable=SC2086 +git grep -l 'Template' -- ${REPLACE_FILES} | xargs sed -i.bak "s/Template/${ProviderNameUpper}/g" +# We need to be careful while replacing "template" keyword in go.mod as it could tamper +# some imported packages under require section. +sed -i.bak "s/provider-jet-template/provider-jet-${ProviderNameLower}/g" go.mod + +# Clean up the .bak files created by sed +git clean -fd + +git mv "internal/clients/template.go" "internal/clients/${ProviderNameLower}.go" +git mv "cluster/images/provider-jet-template" "cluster/images/provider-jet-${ProviderNameLower}" +git mv "cluster/images/provider-jet-template-controller" "cluster/images/provider-jet-${ProviderNameLower}-controller" + +# We need to remove this api folder otherwise first `make generate` fails with +# the following error probably due to some optimizations in go generate with v1.17: +# generate: open /Users/hasanturken/Workspace/crossplane-contrib/provider-jet-template/apis/null/v1alpha1/zz_generated.deepcopy.go: no such file or directory +rm -rf apis/null \ No newline at end of file diff --git a/internal/clients/equinix.go b/internal/clients/equinix.go index 0caf1b2..f00fdb7 100644 --- a/internal/clients/equinix.go +++ b/internal/clients/equinix.go @@ -21,25 +21,14 @@ import ( "encoding/json" "fmt" - "github.com/crossplane-contrib/terrajet/pkg/terraform" "github.com/crossplane/crossplane-runtime/pkg/resource" "github.com/pkg/errors" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/crossplane-contrib/provider-tf-equinix/apis/v1alpha1" -) - -const ( - keyClientID = "client_id" - keyClientSecret = "client_secret" - keyEndpoint = "endpoint" - keyRequestTimeout = "request_timeout" - keyResponseMaxPageSize = "response_max_page_size" + "github.com/crossplane/terrajet/pkg/terraform" - // Equinix credentials environment variable names - envClientID = "EQUINIX_API_CLIENTID" - envClientSecret = "EQUINIX_API_CLIENTSECRET" + "github.com/crossplane-contrib/provider-jet-equinix/apis/v1alpha1" ) const ( @@ -51,6 +40,16 @@ const ( errTrackUsage = "cannot track ProviderConfig usage" errExtractCredentials = "cannot extract credentials" errUnmarshalCredentials = "cannot unmarshal equinix credentials as JSON" + + keyClientID = "client_id" + keyClientSecret = "client_secret" + keyEndpoint = "endpoint" + keyRequestTimeout = "request_timeout" + keyResponseMaxPageSize = "response_max_page_size" + + // Equinix credentials environment variable names + envClientID = "EQUINIX_API_CLIENTID" + envClientSecret = "EQUINIX_API_CLIENTSECRET" ) // TerraformSetupBuilder builds Terraform a terraform.SetupFn function which @@ -88,7 +87,15 @@ func TerraformSetupBuilder(version, providerSource, providerVersion string) terr return ps, errors.Wrap(err, errUnmarshalCredentials) } - // set provider configuration + // set environment variables for sensitive provider configuration + // Deprecated: In shared gRPC mode we do not support injecting + // credentials via the environment variables. You should specify + // credentials via the Terraform main.tf.json instead. + ps.Env = []string{ + fmt.Sprintf(fmtEnvVar, envClientID, equinixCreds[keyClientID]), + fmt.Sprintf(fmtEnvVar, envClientSecret, equinixCreds[keyClientSecret]), + } + // set credentials in Terraform provider configuration ps.Configuration = map[string]interface{}{} for _, key := range []string{ keyEndpoint, @@ -99,11 +106,6 @@ func TerraformSetupBuilder(version, providerSource, providerVersion string) terr ps.Configuration[key] = equinixCreds[key] } } - // set environment variables for sensitive provider configuration - ps.Env = []string{ - fmt.Sprintf(fmtEnvVar, envClientID, equinixCreds[keyClientID]), - fmt.Sprintf(fmtEnvVar, envClientSecret, equinixCreds[keyClientSecret]), - } return ps, nil } } diff --git a/internal/controller/ecx/l2connection/zz_controller.go b/internal/controller/ecx/l2connection/zz_controller.go index d3db17f..4455b0f 100755 --- a/internal/controller/ecx/l2connection/zz_controller.go +++ b/internal/controller/ecx/l2connection/zz_controller.go @@ -21,38 +21,40 @@ package l2connection import ( "time" - "k8s.io/client-go/util/workqueue" - ctrl "sigs.k8s.io/controller-runtime" - + "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "sigs.k8s.io/controller-runtime/pkg/controller" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - tjcontroller "github.com/crossplane-contrib/terrajet/pkg/controller" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/ecx/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/ecx/v1alpha1" ) // Setup adds a controller that reconciles L2Connection managed resources. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, s terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { name := managed.ControllerName(v1alpha1.L2Connection_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.L2Connection_GroupVersionKind), - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), ws, s, cfg.Resources["equinix_ecx_l2_connection"])), - managed.WithLogger(l.WithValues("controller", name)), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_ecx_l2_connection"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), - managed.WithFinalizer(terraform.NewWorkspaceFinalizer(ws, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3*time.Minute), - managed.WithInitializers(), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), ) return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(controller.Options{RateLimiter: rl, MaxConcurrentReconciles: concurrency}). + WithOptions(o.ForControllerRuntime()). For(&v1alpha1.L2Connection{}). - Complete(r) + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/ecx/l2connectionaccepter/zz_controller.go b/internal/controller/ecx/l2connectionaccepter/zz_controller.go index 499e32c..ad7d5ff 100755 --- a/internal/controller/ecx/l2connectionaccepter/zz_controller.go +++ b/internal/controller/ecx/l2connectionaccepter/zz_controller.go @@ -21,38 +21,40 @@ package l2connectionaccepter import ( "time" - "k8s.io/client-go/util/workqueue" - ctrl "sigs.k8s.io/controller-runtime" - + "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "sigs.k8s.io/controller-runtime/pkg/controller" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - tjcontroller "github.com/crossplane-contrib/terrajet/pkg/controller" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/ecx/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/ecx/v1alpha1" ) // Setup adds a controller that reconciles L2ConnectionAccepter managed resources. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, s terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { name := managed.ControllerName(v1alpha1.L2ConnectionAccepter_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.L2ConnectionAccepter_GroupVersionKind), - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), ws, s, cfg.Resources["equinix_ecx_l2_connection_accepter"])), - managed.WithLogger(l.WithValues("controller", name)), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_ecx_l2_connection_accepter"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), - managed.WithFinalizer(terraform.NewWorkspaceFinalizer(ws, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3*time.Minute), - managed.WithInitializers(), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), ) return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(controller.Options{RateLimiter: rl, MaxConcurrentReconciles: concurrency}). + WithOptions(o.ForControllerRuntime()). For(&v1alpha1.L2ConnectionAccepter{}). - Complete(r) + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/ecx/l2serviceprofile/zz_controller.go b/internal/controller/ecx/l2serviceprofile/zz_controller.go index 52c16c5..a2b6e05 100755 --- a/internal/controller/ecx/l2serviceprofile/zz_controller.go +++ b/internal/controller/ecx/l2serviceprofile/zz_controller.go @@ -21,38 +21,40 @@ package l2serviceprofile import ( "time" - "k8s.io/client-go/util/workqueue" - ctrl "sigs.k8s.io/controller-runtime" - + "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "sigs.k8s.io/controller-runtime/pkg/controller" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - tjcontroller "github.com/crossplane-contrib/terrajet/pkg/controller" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/ecx/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/ecx/v1alpha1" ) // Setup adds a controller that reconciles L2Serviceprofile managed resources. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, s terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { name := managed.ControllerName(v1alpha1.L2Serviceprofile_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.L2Serviceprofile_GroupVersionKind), - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), ws, s, cfg.Resources["equinix_ecx_l2_serviceprofile"])), - managed.WithLogger(l.WithValues("controller", name)), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_ecx_l2_serviceprofile"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), - managed.WithFinalizer(terraform.NewWorkspaceFinalizer(ws, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3*time.Minute), - managed.WithInitializers(), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), ) return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(controller.Options{RateLimiter: rl, MaxConcurrentReconciles: concurrency}). + WithOptions(o.ForControllerRuntime()). For(&v1alpha1.L2Serviceprofile{}). - Complete(r) + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/metal/bgpsession/zz_controller.go b/internal/controller/metal/bgpsession/zz_controller.go new file mode 100755 index 0000000..f44735e --- /dev/null +++ b/internal/controller/metal/bgpsession/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package bgpsession + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles BGPSession managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.BGPSession_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.BGPSession_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_bgp_session"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.BGPSession{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/connection/zz_controller.go b/internal/controller/metal/connection/zz_controller.go new file mode 100755 index 0000000..403683e --- /dev/null +++ b/internal/controller/metal/connection/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package connection + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles Connection managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Connection_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Connection_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_connection"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Connection{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/device/zz_controller.go b/internal/controller/metal/device/zz_controller.go new file mode 100755 index 0000000..ca89361 --- /dev/null +++ b/internal/controller/metal/device/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package device + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles Device managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Device_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Device_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_device"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Device{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/devicenetworktype/zz_controller.go b/internal/controller/metal/devicenetworktype/zz_controller.go new file mode 100755 index 0000000..091eb34 --- /dev/null +++ b/internal/controller/metal/devicenetworktype/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package devicenetworktype + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles DeviceNetworkType managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.DeviceNetworkType_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.DeviceNetworkType_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_device_network_type"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.DeviceNetworkType{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/gateway/zz_controller.go b/internal/controller/metal/gateway/zz_controller.go new file mode 100755 index 0000000..ec1dd24 --- /dev/null +++ b/internal/controller/metal/gateway/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package gateway + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles Gateway managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Gateway_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Gateway_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_gateway"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Gateway{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/ipattachment/zz_controller.go b/internal/controller/metal/ipattachment/zz_controller.go new file mode 100755 index 0000000..6d104b8 --- /dev/null +++ b/internal/controller/metal/ipattachment/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package ipattachment + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles IPAttachment managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.IPAttachment_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.IPAttachment_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_ip_attachment"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.IPAttachment{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/organization/zz_controller.go b/internal/controller/metal/organization/zz_controller.go new file mode 100755 index 0000000..7958533 --- /dev/null +++ b/internal/controller/metal/organization/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package organization + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles Organization managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Organization_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Organization_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_organization"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Organization{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/port/zz_controller.go b/internal/controller/metal/port/zz_controller.go new file mode 100755 index 0000000..2d703db --- /dev/null +++ b/internal/controller/metal/port/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package port + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles Port managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Port_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Port_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_port"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Port{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/portvlanattachment/zz_controller.go b/internal/controller/metal/portvlanattachment/zz_controller.go new file mode 100755 index 0000000..2c781f4 --- /dev/null +++ b/internal/controller/metal/portvlanattachment/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package portvlanattachment + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles PortVlanAttachment managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.PortVlanAttachment_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.PortVlanAttachment_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_port_vlan_attachment"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.PortVlanAttachment{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/project/zz_controller.go b/internal/controller/metal/project/zz_controller.go new file mode 100755 index 0000000..9bf7bbc --- /dev/null +++ b/internal/controller/metal/project/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package project + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles Project managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Project_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Project_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_project"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Project{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/projectapikey/zz_controller.go b/internal/controller/metal/projectapikey/zz_controller.go new file mode 100755 index 0000000..bc6e70f --- /dev/null +++ b/internal/controller/metal/projectapikey/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package projectapikey + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles ProjectAPIKey managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ProjectAPIKey_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.ProjectAPIKey_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_project_api_key"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.ProjectAPIKey{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/projectsshkey/zz_controller.go b/internal/controller/metal/projectsshkey/zz_controller.go new file mode 100755 index 0000000..17722b2 --- /dev/null +++ b/internal/controller/metal/projectsshkey/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package projectsshkey + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles ProjectSSHKey managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ProjectSSHKey_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.ProjectSSHKey_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_project_ssh_key"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.ProjectSSHKey{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/reservedipblock/zz_controller.go b/internal/controller/metal/reservedipblock/zz_controller.go new file mode 100755 index 0000000..b0fbc3f --- /dev/null +++ b/internal/controller/metal/reservedipblock/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package reservedipblock + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles ReservedIPBlock managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ReservedIPBlock_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.ReservedIPBlock_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_reserved_ip_block"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.ReservedIPBlock{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/spotmarketrequest/zz_controller.go b/internal/controller/metal/spotmarketrequest/zz_controller.go new file mode 100755 index 0000000..4738cc0 --- /dev/null +++ b/internal/controller/metal/spotmarketrequest/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package spotmarketrequest + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles SpotMarketRequest managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.SpotMarketRequest_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.SpotMarketRequest_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_spot_market_request"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.SpotMarketRequest{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/sshkey/zz_controller.go b/internal/controller/metal/sshkey/zz_controller.go new file mode 100755 index 0000000..a48d611 --- /dev/null +++ b/internal/controller/metal/sshkey/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package sshkey + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles SSHKey managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.SSHKey_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.SSHKey_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_ssh_key"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.SSHKey{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/userapikey/zz_controller.go b/internal/controller/metal/userapikey/zz_controller.go new file mode 100755 index 0000000..34c9a23 --- /dev/null +++ b/internal/controller/metal/userapikey/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package userapikey + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles UserAPIKey managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.UserAPIKey_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.UserAPIKey_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_user_api_key"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.UserAPIKey{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/virtualcircuit/zz_controller.go b/internal/controller/metal/virtualcircuit/zz_controller.go new file mode 100755 index 0000000..0b8d66f --- /dev/null +++ b/internal/controller/metal/virtualcircuit/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package virtualcircuit + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles VirtualCircuit managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.VirtualCircuit_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.VirtualCircuit_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_virtual_circuit"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.VirtualCircuit{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/vlan/zz_controller.go b/internal/controller/metal/vlan/zz_controller.go new file mode 100755 index 0000000..bc06d39 --- /dev/null +++ b/internal/controller/metal/vlan/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package vlan + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles Vlan managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Vlan_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Vlan_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_vlan"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Vlan{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metal/vrf/zz_controller.go b/internal/controller/metal/vrf/zz_controller.go new file mode 100755 index 0000000..ad5cf82 --- /dev/null +++ b/internal/controller/metal/vrf/zz_controller.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The Crossplane 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. +*/ + +// Code generated by terrajet. DO NOT EDIT. + +package vrf + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1" +) + +// Setup adds a controller that reconciles Vrf managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Vrf_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Vrf_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_metal_vrf"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Vrf{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/network/acltemplate/zz_controller.go b/internal/controller/network/acltemplate/zz_controller.go index 70f6ef8..fc5a927 100755 --- a/internal/controller/network/acltemplate/zz_controller.go +++ b/internal/controller/network/acltemplate/zz_controller.go @@ -21,38 +21,40 @@ package acltemplate import ( "time" - "k8s.io/client-go/util/workqueue" - ctrl "sigs.k8s.io/controller-runtime" - + "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "sigs.k8s.io/controller-runtime/pkg/controller" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - tjcontroller "github.com/crossplane-contrib/terrajet/pkg/controller" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/network/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/network/v1alpha1" ) -// Setup adds a controller that reconciles AclTemplate managed resources. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, s terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { - name := managed.ControllerName(v1alpha1.AclTemplate_GroupVersionKind.String()) +// Setup adds a controller that reconciles ACLTemplate managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ACLTemplate_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } r := managed.NewReconciler(mgr, - xpresource.ManagedKind(v1alpha1.AclTemplate_GroupVersionKind), - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), ws, s, cfg.Resources["equinix_network_acl_template"])), - managed.WithLogger(l.WithValues("controller", name)), + xpresource.ManagedKind(v1alpha1.ACLTemplate_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_network_acl_template"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), - managed.WithFinalizer(terraform.NewWorkspaceFinalizer(ws, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3*time.Minute), - managed.WithInitializers(), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), ) return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(controller.Options{RateLimiter: rl, MaxConcurrentReconciles: concurrency}). - For(&v1alpha1.AclTemplate{}). - Complete(r) + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.ACLTemplate{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/network/bgp/zz_controller.go b/internal/controller/network/bgp/zz_controller.go index f89e22a..f8848df 100755 --- a/internal/controller/network/bgp/zz_controller.go +++ b/internal/controller/network/bgp/zz_controller.go @@ -21,38 +21,40 @@ package bgp import ( "time" - "k8s.io/client-go/util/workqueue" - ctrl "sigs.k8s.io/controller-runtime" - + "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "sigs.k8s.io/controller-runtime/pkg/controller" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - tjcontroller "github.com/crossplane-contrib/terrajet/pkg/controller" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/network/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/network/v1alpha1" ) -// Setup adds a controller that reconciles Bgp managed resources. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, s terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { - name := managed.ControllerName(v1alpha1.Bgp_GroupVersionKind.String()) +// Setup adds a controller that reconciles BGP managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.BGP_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } r := managed.NewReconciler(mgr, - xpresource.ManagedKind(v1alpha1.Bgp_GroupVersionKind), - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), ws, s, cfg.Resources["equinix_network_bgp"])), - managed.WithLogger(l.WithValues("controller", name)), + xpresource.ManagedKind(v1alpha1.BGP_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_network_bgp"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), - managed.WithFinalizer(terraform.NewWorkspaceFinalizer(ws, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3*time.Minute), - managed.WithInitializers(), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), ) return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(controller.Options{RateLimiter: rl, MaxConcurrentReconciles: concurrency}). - For(&v1alpha1.Bgp{}). - Complete(r) + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.BGP{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/network/device/zz_controller.go b/internal/controller/network/device/zz_controller.go index 8533567..c55164e 100755 --- a/internal/controller/network/device/zz_controller.go +++ b/internal/controller/network/device/zz_controller.go @@ -21,38 +21,40 @@ package device import ( "time" - "k8s.io/client-go/util/workqueue" - ctrl "sigs.k8s.io/controller-runtime" - + "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "sigs.k8s.io/controller-runtime/pkg/controller" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - tjcontroller "github.com/crossplane-contrib/terrajet/pkg/controller" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/network/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/network/v1alpha1" ) // Setup adds a controller that reconciles Device managed resources. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, s terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { name := managed.ControllerName(v1alpha1.Device_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Device_GroupVersionKind), - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), ws, s, cfg.Resources["equinix_network_device"])), - managed.WithLogger(l.WithValues("controller", name)), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_network_device"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), - managed.WithFinalizer(terraform.NewWorkspaceFinalizer(ws, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3*time.Minute), - managed.WithInitializers(), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), ) return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(controller.Options{RateLimiter: rl, MaxConcurrentReconciles: concurrency}). + WithOptions(o.ForControllerRuntime()). For(&v1alpha1.Device{}). - Complete(r) + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/network/devicelink/zz_controller.go b/internal/controller/network/devicelink/zz_controller.go index 5779315..4f948af 100755 --- a/internal/controller/network/devicelink/zz_controller.go +++ b/internal/controller/network/devicelink/zz_controller.go @@ -21,38 +21,40 @@ package devicelink import ( "time" - "k8s.io/client-go/util/workqueue" - ctrl "sigs.k8s.io/controller-runtime" - + "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "sigs.k8s.io/controller-runtime/pkg/controller" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - tjcontroller "github.com/crossplane-contrib/terrajet/pkg/controller" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/network/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/network/v1alpha1" ) // Setup adds a controller that reconciles DeviceLink managed resources. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, s terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { name := managed.ControllerName(v1alpha1.DeviceLink_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.DeviceLink_GroupVersionKind), - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), ws, s, cfg.Resources["equinix_network_device_link"])), - managed.WithLogger(l.WithValues("controller", name)), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_network_device_link"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), - managed.WithFinalizer(terraform.NewWorkspaceFinalizer(ws, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3*time.Minute), - managed.WithInitializers(), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), ) return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(controller.Options{RateLimiter: rl, MaxConcurrentReconciles: concurrency}). + WithOptions(o.ForControllerRuntime()). For(&v1alpha1.DeviceLink{}). - Complete(r) + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/network/sshkey/zz_controller.go b/internal/controller/network/sshkey/zz_controller.go index a49635c..a4700f9 100755 --- a/internal/controller/network/sshkey/zz_controller.go +++ b/internal/controller/network/sshkey/zz_controller.go @@ -21,38 +21,40 @@ package sshkey import ( "time" - "k8s.io/client-go/util/workqueue" - ctrl "sigs.k8s.io/controller-runtime" - + "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "sigs.k8s.io/controller-runtime/pkg/controller" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - tjcontroller "github.com/crossplane-contrib/terrajet/pkg/controller" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/network/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/network/v1alpha1" ) -// Setup adds a controller that reconciles SshKey managed resources. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, s terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { - name := managed.ControllerName(v1alpha1.SshKey_GroupVersionKind.String()) +// Setup adds a controller that reconciles SSHKey managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.SSHKey_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } r := managed.NewReconciler(mgr, - xpresource.ManagedKind(v1alpha1.SshKey_GroupVersionKind), - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), ws, s, cfg.Resources["equinix_network_ssh_key"])), - managed.WithLogger(l.WithValues("controller", name)), + xpresource.ManagedKind(v1alpha1.SSHKey_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_network_ssh_key"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), - managed.WithFinalizer(terraform.NewWorkspaceFinalizer(ws, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3*time.Minute), - managed.WithInitializers(), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), ) return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(controller.Options{RateLimiter: rl, MaxConcurrentReconciles: concurrency}). - For(&v1alpha1.SshKey{}). - Complete(r) + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.SSHKey{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/network/sshuser/zz_controller.go b/internal/controller/network/sshuser/zz_controller.go index 72ee1f5..e814306 100755 --- a/internal/controller/network/sshuser/zz_controller.go +++ b/internal/controller/network/sshuser/zz_controller.go @@ -21,38 +21,40 @@ package sshuser import ( "time" - "k8s.io/client-go/util/workqueue" - ctrl "sigs.k8s.io/controller-runtime" - + "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "sigs.k8s.io/controller-runtime/pkg/controller" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - tjcontroller "github.com/crossplane-contrib/terrajet/pkg/controller" - "github.com/crossplane-contrib/terrajet/pkg/terraform" + tjcontroller "github.com/crossplane/terrajet/pkg/controller" + "github.com/crossplane/terrajet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/crossplane-contrib/provider-tf-equinix/apis/network/v1alpha1" + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/network/v1alpha1" ) -// Setup adds a controller that reconciles SshUser managed resources. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, s terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { - name := managed.ControllerName(v1alpha1.SshUser_GroupVersionKind.String()) +// Setup adds a controller that reconciles SSHUser managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.SSHUser_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } r := managed.NewReconciler(mgr, - xpresource.ManagedKind(v1alpha1.SshUser_GroupVersionKind), - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), ws, s, cfg.Resources["equinix_network_ssh_user"])), - managed.WithLogger(l.WithValues("controller", name)), + xpresource.ManagedKind(v1alpha1.SSHUser_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_network_ssh_user"])), + managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), - managed.WithFinalizer(terraform.NewWorkspaceFinalizer(ws, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3*time.Minute), - managed.WithInitializers(), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), ) return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(controller.Options{RateLimiter: rl, MaxConcurrentReconciles: concurrency}). - For(&v1alpha1.SshUser{}). - Complete(r) + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.SSHUser{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/providerconfig/config.go b/internal/controller/providerconfig/config.go index 98497b4..8ff412e 100644 --- a/internal/controller/providerconfig/config.go +++ b/internal/controller/providerconfig/config.go @@ -7,11 +7,6 @@ You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -======= -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. @@ -22,32 +17,22 @@ limitations under the License. package providerconfig import ( - "github.com/crossplane-contrib/terrajet/pkg/config" - "github.com/crossplane-contrib/terrajet/pkg/terraform" - "k8s.io/client-go/util/workqueue" ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/source" "github.com/crossplane/crossplane-runtime/pkg/event" - "github.com/crossplane/crossplane-runtime/pkg/logging" - "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/providerconfig" "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/terrajet/pkg/controller" - "github.com/crossplane-contrib/provider-tf-equinix/apis/v1alpha1" + "github.com/crossplane-contrib/provider-jet-equinix/apis/v1alpha1" ) // Setup adds a controller that reconciles ProviderConfigs by accounting for // their current usage. -func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, _ terraform.SetupFn, _ *terraform.WorkspaceStore, _ *config.Provider, concurrency int) error { +func Setup(mgr ctrl.Manager, o controller.Options) error { name := providerconfig.ControllerName(v1alpha1.ProviderConfigGroupKind) - o := controller.Options{ - RateLimiter: ratelimiter.NewController(rl), - MaxConcurrentReconciles: concurrency, - } - of := resource.ProviderConfigKinds{ Config: v1alpha1.ProviderConfigGroupVersionKind, UsageList: v1alpha1.ProviderConfigUsageListGroupVersionKind, @@ -55,10 +40,10 @@ func Setup(mgr ctrl.Manager, l logging.Logger, rl workqueue.RateLimiter, _ terra return ctrl.NewControllerManagedBy(mgr). Named(name). - WithOptions(o). + WithOptions(o.ForControllerRuntime()). For(&v1alpha1.ProviderConfig{}). Watches(&source.Kind{Type: &v1alpha1.ProviderConfigUsage{}}, &resource.EnqueueRequestForProviderConfig{}). Complete(providerconfig.NewReconciler(mgr, of, - providerconfig.WithLogger(l.WithValues("controller", name)), + providerconfig.WithLogger(o.Logger.WithValues("controller", name)), providerconfig.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))))) } diff --git a/internal/controller/zz_setup.go b/internal/controller/zz_setup.go index 9f32905..332bb11 100755 --- a/internal/controller/zz_setup.go +++ b/internal/controller/zz_setup.go @@ -17,42 +17,76 @@ limitations under the License. package controller import ( - "k8s.io/client-go/util/workqueue" ctrl "sigs.k8s.io/controller-runtime" - "github.com/crossplane/crossplane-runtime/pkg/logging" - - tjconfig "github.com/crossplane-contrib/terrajet/pkg/config" - "github.com/crossplane-contrib/terrajet/pkg/terraform" - - l2connection "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/ecx/l2connection" - l2connectionaccepter "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/ecx/l2connectionaccepter" - l2serviceprofile "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/ecx/l2serviceprofile" - acltemplate "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/network/acltemplate" - bgp "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/network/bgp" - device "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/network/device" - devicelink "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/network/devicelink" - sshkey "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/network/sshkey" - sshuser "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/network/sshuser" - providerconfig "github.com/crossplane-contrib/provider-tf-equinix/internal/controller/providerconfig" + "github.com/crossplane/terrajet/pkg/controller" + + l2connection "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/ecx/l2connection" + l2connectionaccepter "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/ecx/l2connectionaccepter" + l2serviceprofile "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/ecx/l2serviceprofile" + bgpsession "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/bgpsession" + connection "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/connection" + device "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/device" + devicenetworktype "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/devicenetworktype" + gateway "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/gateway" + ipattachment "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/ipattachment" + organization "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/organization" + port "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/port" + portvlanattachment "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/portvlanattachment" + project "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/project" + projectapikey "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/projectapikey" + projectsshkey "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/projectsshkey" + reservedipblock "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/reservedipblock" + spotmarketrequest "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/spotmarketrequest" + sshkey "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/sshkey" + userapikey "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/userapikey" + virtualcircuit "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/virtualcircuit" + vlan "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/vlan" + vrf "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/vrf" + acltemplate "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/network/acltemplate" + bgp "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/network/bgp" + devicenetwork "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/network/device" + devicelink "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/network/devicelink" + sshkeynetwork "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/network/sshkey" + sshuser "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/network/sshuser" + providerconfig "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/providerconfig" ) // Setup creates all controllers with the supplied logger and adds them to // the supplied manager. -func Setup(mgr ctrl.Manager, l logging.Logger, wl workqueue.RateLimiter, ps terraform.SetupFn, ws *terraform.WorkspaceStore, cfg *tjconfig.Provider, concurrency int) error { - for _, setup := range []func(ctrl.Manager, logging.Logger, workqueue.RateLimiter, terraform.SetupFn, *terraform.WorkspaceStore, *tjconfig.Provider, int) error{ +func Setup(mgr ctrl.Manager, o controller.Options) error { + for _, setup := range []func(ctrl.Manager, controller.Options) error{ l2connection.Setup, l2connectionaccepter.Setup, l2serviceprofile.Setup, + bgpsession.Setup, + connection.Setup, + device.Setup, + devicenetworktype.Setup, + gateway.Setup, + ipattachment.Setup, + organization.Setup, + port.Setup, + portvlanattachment.Setup, + project.Setup, + projectapikey.Setup, + projectsshkey.Setup, + reservedipblock.Setup, + spotmarketrequest.Setup, + sshkey.Setup, + userapikey.Setup, + virtualcircuit.Setup, + vlan.Setup, + vrf.Setup, acltemplate.Setup, bgp.Setup, - device.Setup, + devicenetwork.Setup, devicelink.Setup, - sshkey.Setup, + sshkeynetwork.Setup, sshuser.Setup, providerconfig.Setup, } { - if err := setup(mgr, l, wl, ps, ws, cfg, concurrency); err != nil { + if err := setup(mgr, o); err != nil { return err } } diff --git a/internal/features/features.go b/internal/features/features.go new file mode 100644 index 0000000..dd2d609 --- /dev/null +++ b/internal/features/features.go @@ -0,0 +1,24 @@ +/* + Copyright 2022 The Crossplane 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 features + +import "github.com/crossplane/crossplane-runtime/pkg/feature" + +// Feature flags. +const ( + // EnableAlphaExternalSecretStores enables alpha support for + // External Secret Stores. See the below design for more details. + // https://github.com/crossplane/crossplane/blob/390ddd/design/design-doc-external-secret-stores.md + EnableAlphaExternalSecretStores feature.Flag = "EnableAlphaExternalSecretStores" +) diff --git a/package/crds/ecx.equinix.jet.crossplane.io_l2connectionaccepters.yaml b/package/crds/ecx.equinix.jet.crossplane.io_l2connectionaccepters.yaml index d38e9c8..f6e6c81 100644 --- a/package/crds/ecx.equinix.jet.crossplane.io_l2connectionaccepters.yaml +++ b/package/crds/ecx.equinix.jet.crossplane.io_l2connectionaccepters.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: l2connectionaccepters.ecx.equinix.jet.crossplane.io spec: @@ -133,12 +134,64 @@ spec: required: - name type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object writeConnectionSecretToRef: description: WriteConnectionSecretToReference specifies the namespace and name of a Secret to which any connection details for this managed resource should be written. Connection details frequently include the endpoint, username, and password required to connect to the - managed resource. + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. properties: name: description: Name of the secret. @@ -161,6 +214,8 @@ spec: properties: awsConnectionId: type: string + id: + type: string type: object conditions: description: Conditions of the resource. diff --git a/package/crds/ecx.equinix.jet.crossplane.io_l2connections.yaml b/package/crds/ecx.equinix.jet.crossplane.io_l2connections.yaml index 2a7fd09..b7d53c8 100644 --- a/package/crds/ecx.equinix.jet.crossplane.io_l2connections.yaml +++ b/package/crds/ecx.equinix.jet.crossplane.io_l2connections.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: l2connections.ecx.equinix.jet.crossplane.io spec: @@ -85,8 +86,7 @@ spec: description: Identifier of network interface on a given device, used for a connection. If not specified then first available interface will be selected - format: int64 - type: integer + type: number deviceUuid: description: Unique identifier of the Network Edge virtual device from which the connection would originate @@ -97,7 +97,9 @@ spec: type: string namedTag: description: The type of peering to set up in case when connecting - to Azure Express Route. One of Public, Private, Microsoft, Manual + to Azure Express Route. One of PRIVATE, MICROSOFT, MANUAL, PUBLIC + (MANUAL and PUBLIC are deprecated and not available for new + connections) type: string notifications: description: A list of email addresses used for sending connection @@ -154,8 +156,7 @@ spec: description: Identifier of network interface on a given device, used for a connection. If not specified then first available interface will be selected - format: int64 - type: integer + type: number deviceUuid: description: Unique identifier of the Network Edge virtual device from which the connection would originate @@ -173,16 +174,20 @@ spec: service profile type: string sellerMetroCode: - description: The metro code that denotes the connection’s + description: The metro code that denotes the connection's remote side (z-side) type: string sellerRegion: description: The region in which the seller port resides type: string + serviceToken: + description: Unique Equinix Fabric key given by a provider + that grants you authorization to enable connectivity from + a shared multi-tenant port (a-side) + type: string speed: description: Speed/Bandwidth to be allocated to the connection - format: int64 - type: integer + type: number speedUnit: description: Unit of the speed/bandwidth to be allocated to the connection @@ -190,28 +195,30 @@ spec: vlanCtag: description: C-Tag/Inner-Tag of the connection, a numeric character ranging from 2 - 4094 - format: int64 - type: integer + type: number vlanStag: description: S-Tag/Outer-Tag of the connection, a numeric character ranging from 2 - 4094 - format: int64 - type: integer + type: number required: - name type: object type: array sellerMetroCode: - description: The metro code that denotes the connection’s remote + description: The metro code that denotes the connection's remote side (z-side) type: string sellerRegion: description: The region in which the seller port resides type: string + serviceToken: + description: Unique Equinix Fabric key given by a provider that + grants you authorization to enable connectivity from a shared + multi-tenant port (a-side) + type: string speed: description: Speed/Bandwidth to be allocated to the connection - format: int64 - type: integer + type: number speedUnit: description: Unit of the speed/bandwidth to be allocated to the connection @@ -219,27 +226,28 @@ spec: vlanCtag: description: C-Tag/Inner-Tag of the connection, a numeric character ranging from 2 - 4094 - format: int64 - type: integer + type: number vlanStag: description: S-Tag/Outer-Tag of the connection, a numeric character ranging from 2 - 4094 - format: int64 - type: integer + type: number zsidePortUuid: description: Unique identifier of the port on the remote side (z-side) type: string + zsideServiceToken: + description: Unique Equinix Fabric key given by a provider that + grants you authorization to enable connectivity to a shared + multi-tenant port (z-side) + type: string zsideVlanCtag: description: C-Tag/Inner-Tag of the connection on the remote side (z-side) - format: int64 - type: integer + type: number zsideVlanStag: description: S-Tag/Outer-Tag of the connection on the remote side (z-side) - format: int64 - type: integer + type: number required: - name - notifications @@ -270,12 +278,64 @@ spec: required: - name type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object writeConnectionSecretToRef: description: WriteConnectionSecretToReference specifies the namespace and name of a Secret to which any connection details for this managed resource should be written. Connection details frequently include the endpoint, username, and password required to connect to the - managed resource. + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. properties: name: description: Name of the secret. @@ -295,16 +355,99 @@ spec: properties: atProvider: properties: + actions: + items: + properties: + message: + type: string + operationId: + type: string + requiredData: + items: + properties: + editable: + type: boolean + key: + type: string + label: + type: string + validationPattern: + type: string + value: + type: string + type: object + type: array + type: + type: string + type: object + type: array + id: + type: string providerStatus: type: string + redundancyGroup: + type: string redundancyType: type: string redundantUuid: type: string + secondaryConnection: + items: + properties: + actions: + items: + properties: + message: + type: string + operationId: + type: string + requiredData: + items: + properties: + editable: + type: boolean + key: + type: string + label: + type: string + validationPattern: + type: string + value: + type: string + type: object + type: array + type: + type: string + type: object + type: array + providerStatus: + type: string + redundancyGroup: + type: string + redundancyType: + type: string + redundantUuid: + type: string + status: + type: string + uuid: + type: string + vendorToken: + type: string + zsidePortUuid: + type: string + zsideVlanCtag: + type: number + zsideVlanStag: + type: number + type: object + type: array status: type: string uuid: type: string + vendorToken: + type: string type: object conditions: description: Conditions of the resource. diff --git a/package/crds/ecx.equinix.jet.crossplane.io_l2serviceprofiles.yaml b/package/crds/ecx.equinix.jet.crossplane.io_l2serviceprofiles.yaml index 255a904..3df1b29 100644 --- a/package/crds/ecx.equinix.jet.crossplane.io_l2serviceprofiles.yaml +++ b/package/crds/ecx.equinix.jet.crossplane.io_l2serviceprofiles.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: l2serviceprofiles.ecx.equinix.jet.crossplane.io spec: @@ -109,7 +110,6 @@ spec: type: boolean required: - allowRemoteConnections - - testProfile type: object type: array integrationId: @@ -182,8 +182,7 @@ spec: speed: description: Speed/bandwidth supported by given service profile - format: int64 - type: integer + type: number speedUnit: description: Unit of the speed/bandwidth supported by given service profile @@ -243,12 +242,64 @@ spec: required: - name type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object writeConnectionSecretToRef: description: WriteConnectionSecretToReference specifies the namespace and name of a Secret to which any connection details for this managed resource should be written. Connection details frequently include the endpoint, username, and password required to connect to the - managed resource. + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. properties: name: description: Name of the secret. @@ -268,6 +319,8 @@ spec: properties: atProvider: properties: + id: + type: string state: type: string uuid: diff --git a/package/crds/equinix.jet.crossplane.io_providerconfigs.yaml b/package/crds/equinix.jet.crossplane.io_providerconfigs.yaml index c36da7c..1e2046e 100644 --- a/package/crds/equinix.jet.crossplane.io_providerconfigs.yaml +++ b/package/crds/equinix.jet.crossplane.io_providerconfigs.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: providerconfigs.equinix.jet.crossplane.io spec: diff --git a/package/crds/equinix.jet.crossplane.io_providerconfigusages.yaml b/package/crds/equinix.jet.crossplane.io_providerconfigusages.yaml index 2ad27b9..5d4acc1 100644 --- a/package/crds/equinix.jet.crossplane.io_providerconfigusages.yaml +++ b/package/crds/equinix.jet.crossplane.io_providerconfigusages.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: providerconfigusages.equinix.jet.crossplane.io spec: diff --git a/package/crds/equinix.jet.crossplane.io_storeconfigs.yaml b/package/crds/equinix.jet.crossplane.io_storeconfigs.yaml new file mode 100644 index 0000000..f451926 --- /dev/null +++ b/package/crds/equinix.jet.crossplane.io_storeconfigs.yaml @@ -0,0 +1,318 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: storeconfigs.equinix.jet.crossplane.io +spec: + group: equinix.jet.crossplane.io + names: + categories: + - crossplane + - store + - gcp + kind: StoreConfig + listKind: StoreConfigList + plural: storeconfigs + singular: storeconfig + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + - jsonPath: .spec.type + name: TYPE + type: string + - jsonPath: .spec.defaultScope + name: DEFAULT-SCOPE + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: A StoreConfig configures how GCP controller should store connection + details. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: A StoreConfigSpec defines the desired state of a ProviderConfig. + properties: + defaultScope: + description: DefaultScope used for scoping secrets for "cluster-scoped" + resources. If store type is "Kubernetes", this would mean the default + namespace to store connection secrets for cluster scoped resources. + In case of "Vault", this would be used as the default parent path. + Typically, should be set as Crossplane installation namespace. + type: string + kubernetes: + description: Kubernetes configures a Kubernetes secret store. If the + "type" is "Kubernetes" but no config provided, in cluster config + will be used. + properties: + auth: + description: Credentials used to connect to the Kubernetes API. + properties: + env: + description: Env is a reference to an environment variable + that contains credentials that must be used to connect to + the provider. + properties: + name: + description: Name is the name of an environment variable. + type: string + required: + - name + type: object + fs: + description: Fs is a reference to a filesystem location that + contains credentials that must be used to connect to the + provider. + properties: + path: + description: Path is a filesystem path. + type: string + required: + - path + type: object + secretRef: + description: A SecretRef is a reference to a secret key that + contains the credentials that must be used to connect to + the provider. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + source: + description: Source of the credentials. + enum: + - None + - Secret + - Environment + - Filesystem + type: string + required: + - source + type: object + required: + - auth + type: object + type: + default: Kubernetes + description: Type configures which secret store to be used. Only the + configuration block for this store will be used and others will + be ignored if provided. Default is Kubernetes. + type: string + vault: + description: Vault configures a Vault secret store. + properties: + auth: + description: Auth configures an authentication method for Vault. + properties: + method: + description: Method configures which auth method will be used. + type: string + token: + description: Token configures Token Auth for Vault. + properties: + env: + description: Env is a reference to an environment variable + that contains credentials that must be used to connect + to the provider. + properties: + name: + description: Name is the name of an environment variable. + type: string + required: + - name + type: object + fs: + description: Fs is a reference to a filesystem location + that contains credentials that must be used to connect + to the provider. + properties: + path: + description: Path is a filesystem path. + type: string + required: + - path + type: object + secretRef: + description: A SecretRef is a reference to a secret key + that contains the credentials that must be used to connect + to the provider. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + source: + description: Source of the credentials. + enum: + - None + - Secret + - Environment + - Filesystem + type: string + required: + - source + type: object + required: + - method + type: object + caBundle: + description: CABundle configures CA bundle for Vault Server. + properties: + env: + description: Env is a reference to an environment variable + that contains credentials that must be used to connect to + the provider. + properties: + name: + description: Name is the name of an environment variable. + type: string + required: + - name + type: object + fs: + description: Fs is a reference to a filesystem location that + contains credentials that must be used to connect to the + provider. + properties: + path: + description: Path is a filesystem path. + type: string + required: + - path + type: object + secretRef: + description: A SecretRef is a reference to a secret key that + contains the credentials that must be used to connect to + the provider. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + source: + description: Source of the credentials. + enum: + - None + - Secret + - Environment + - Filesystem + type: string + required: + - source + type: object + mountPath: + description: MountPath is the mount path of the KV secrets engine. + type: string + server: + description: Server is the url of the Vault server, e.g. "https://vault.acme.org" + type: string + version: + default: v2 + description: Version of the KV Secrets engine of Vault. https://www.vaultproject.io/docs/secrets/kv + type: string + required: + - auth + - mountPath + - server + type: object + required: + - defaultScope + type: object + status: + description: A StoreConfigStatus represents the status of a StoreConfig. + properties: + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_bgpsessions.yaml b/package/crds/metal.equinix.jet.crossplane.io_bgpsessions.yaml new file mode 100644 index 0000000..f9e2762 --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_bgpsessions.yaml @@ -0,0 +1,232 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: bgpsessions.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: BGPSession + listKind: BGPSessionList + plural: bgpsessions + singular: bgpsession + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: BGPSession is the Schema for the BGPSessions API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: BGPSessionSpec defines the desired state of BGPSession + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + addressFamily: + description: ipv4 or ipv6 + type: string + defaultRoute: + description: Boolean flag to set the default route policy. False + by default + type: boolean + deviceId: + description: ID of device + type: string + required: + - addressFamily + - deviceId + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: BGPSessionStatus defines the observed state of BGPSession. + properties: + atProvider: + properties: + id: + type: string + status: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_connections.yaml b/package/crds/metal.equinix.jet.crossplane.io_connections.yaml new file mode 100644 index 0000000..ea5b64f --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_connections.yaml @@ -0,0 +1,360 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: connections.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: Connection + listKind: ConnectionList + plural: connections + singular: connection + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Connection is the Schema for the Connections API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConnectionSpec defines the desired state of Connection + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: Description of the connection resource + type: string + facility: + description: Facility where the connection will be created + type: string + metro: + description: Metro where the connection will be created + type: string + mode: + description: Mode for connections in IBX facilities with the dedicated + type - standard or tunnel + type: string + name: + description: Name of the connection resource + type: string + organizationId: + description: ID of the organization responsible for the connection. + Applicable with type "dedicated" + type: string + organizationIdRef: + description: A Reference to a named object. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + organizationIdSelector: + description: A Selector selects an object. + properties: + matchControllerRef: + description: MatchControllerRef ensures an object with the + same controller reference as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + type: object + projectId: + description: ID of the project where the connection is scoped + to. Required with type "shared" + type: string + projectIdRef: + description: A Reference to a named object. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + projectIdSelector: + description: A Selector selects an object. + properties: + matchControllerRef: + description: MatchControllerRef ensures an object with the + same controller reference as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + type: object + redundancy: + description: Connection redundancy - redundant or primary + type: string + serviceTokenType: + description: Only used with shared connection. Type of service + token to use for the connection, a_side or z_side + type: string + speed: + description: Port speed. Allowed values are 50Mbps, 200Mbps, 500Mbps, + 1Gbps, 2Gbps, 5Gbps, 10Gbps + type: string + tags: + description: Tags attached to the connection + items: + type: string + type: array + type: + description: Connection type - dedicated or shared + type: string + vlans: + description: Only used with shared connection. VLANs to attach. + Pass one vlan for Primary/Single connection and two vlans for + Redundant connection + items: + type: number + type: array + required: + - name + - redundancy + - speed + - type + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: ConnectionStatus defines the observed state of Connection. + properties: + atProvider: + properties: + id: + type: string + ports: + items: + properties: + id: + type: string + linkStatus: + type: string + name: + type: string + role: + type: string + speed: + type: number + status: + type: string + virtualCircuitIds: + items: + type: string + type: array + type: object + type: array + serviceTokens: + items: + properties: + expiresAt: + type: string + id: + type: string + maxAllowedSpeed: + type: string + role: + type: string + state: + type: string + type: + type: string + type: object + type: array + status: + type: string + token: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_devicenetworktypes.yaml b/package/crds/metal.equinix.jet.crossplane.io_devicenetworktypes.yaml new file mode 100644 index 0000000..fe93302 --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_devicenetworktypes.yaml @@ -0,0 +1,228 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: devicenetworktypes.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: DeviceNetworkType + listKind: DeviceNetworkTypeList + plural: devicenetworktypes + singular: devicenetworktype + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: DeviceNetworkType is the Schema for the DeviceNetworkTypes API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DeviceNetworkTypeSpec defines the desired state of DeviceNetworkType + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + deviceId: + description: The ID of the device on which the network type should + be set + type: string + type: + description: Network type to set. Must be one of layer3, hybrid, + hybrid-bonded, layer2-individual, layer2-bonded + type: string + required: + - deviceId + - type + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: DeviceNetworkTypeStatus defines the observed state of DeviceNetworkType. + properties: + atProvider: + properties: + id: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_devices.yaml b/package/crds/metal.equinix.jet.crossplane.io_devices.yaml new file mode 100644 index 0000000..56e1027 --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_devices.yaml @@ -0,0 +1,464 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: devices.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: Device + listKind: DeviceList + plural: devices + singular: device + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Device is the Schema for the Devices API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DeviceSpec defines the desired state of Device + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + alwaysPxe: + description: If true, a device with OS custom_ipxe will + type: boolean + billingCycle: + description: monthly or hourly + type: string + customDataSecretRef: + description: A string of the desired Custom Data for the device + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + description: + description: Description string for the device + type: string + facilities: + description: List of facility codes with deployment preferences. + Equinix Metal API will go through the list and will deploy your + device to first facility with free capacity. List items must + be facility codes or any (a wildcard). To find the facility + code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), + set your API auth token in the top of the page and see JSON + from the API response. Conflicts with metro + items: + type: string + type: array + forceDetachVolumes: + description: Delete device even if it has volumes attached. Only + applies for destroy action + type: boolean + hardwareReservationId: + description: The UUID of the hardware reservation where you want + this device deployed, or next-available if you want to pick + your next available reservation automatically + type: string + hostname: + description: The device hostname used in deployments taking advantage + of Layer3 DHCP or metadata service configuration. + type: string + ipAddress: + description: A list of IP address types for the device (structure + is documented below) + items: + properties: + cidr: + description: CIDR suffix for IP block assigned to this device + type: number + reservationIds: + description: IDs of reservations to pick the blocks from + items: + type: string + type: array + type: + description: one of public_ipv4,private_ipv4,public_ipv6 + type: string + required: + - type + type: object + type: array + ipxeScriptUrl: + description: URL pointing to a hosted iPXE script. More + type: string + metro: + description: Metro area for the new device. Conflicts with facilities + type: string + operatingSystem: + description: The operating system slug. To find the slug, or visit + [Operating Systems API docs](https://metal.equinix.com/developers/api/operatingsystems), + set your API auth token in the top of the page and see JSON + from the API response + type: string + plan: + description: The device plan slug. To find the plan slug, visit + [Device plans API docs](https://metal.equinix.com/developers/api/plans), + set your auth token in the top of the page and see JSON from + the API response + type: string + projectId: + description: The ID of the project in which to create the device + type: string + projectIdRef: + description: A Reference to a named object. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + projectIdSelector: + description: A Selector selects an object. + properties: + matchControllerRef: + description: MatchControllerRef ensures an object with the + same controller reference as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + type: object + projectSshKeyIds: + description: Array of IDs of the project SSH keys which should + be added to the device. If you omit this, SSH keys of all the + members of the parent project will be added to the device. If + you specify this array, only the listed project SSH keys (and + any user_ssh_key_ids) will be added. Project SSH keys can be + created with the [equinix_metal_project_ssh_key](equinix_metal_project_ssh_key.md) + resource + items: + type: string + type: array + reinstall: + items: + properties: + deprovisionFast: + description: Whether the OS disk should be filled with `00h` + bytes before reinstall + type: boolean + enabled: + description: Whether the device should be reinstalled instead + of destroyed + type: boolean + preserveData: + description: Whether the non-OS disks should be kept or + wiped during reinstall + type: boolean + type: object + type: array + storage: + description: JSON for custom partitioning. Only usable on reserved + hardware. More information in in the [Custom Partitioning and + RAID](https://metal.equinix.com/developers/docs/servers/custom-partitioning-raid/) + doc + type: string + tags: + description: Tags attached to the device + items: + type: string + type: array + terminationTime: + description: Timestamp for device termination. For example "2021-09-03T16:32:00+03:00". + If you don't supply timezone info, timestamp is assumed to be + in UTC. + type: string + userDataSecretRef: + description: A string of the desired User Data for the device + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + userSshKeyIds: + description: Array of IDs of the user SSH keys which should be + added to the device. If you omit this, SSH keys of all the members + of the parent project will be added to the device. If you specify + this array, only the listed user SSH keys (and any project_ssh_key_ids) + will be added. User SSH keys can be created with the [equinix_metal_ssh_key](equinix_metal_ssh_key.md) + resource + items: + type: string + type: array + waitForReservationDeprovision: + description: Only used for devices in reserved hardware. If set, + the deletion of this device will block until the hardware reservation + is marked provisionable (about 4 minutes in August 2019) + type: boolean + required: + - operatingSystem + - plan + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: DeviceStatus defines the observed state of Device. + properties: + atProvider: + properties: + accessPrivateIpv4: + type: string + accessPublicIpv4: + type: string + accessPublicIpv6: + type: string + created: + type: string + deployedFacility: + type: string + deployedHardwareReservationId: + type: string + id: + type: string + locked: + type: boolean + network: + items: + properties: + address: + type: string + cidr: + type: number + family: + type: number + gateway: + type: string + public: + type: boolean + type: object + type: array + networkType: + type: string + ports: + items: + properties: + bonded: + type: boolean + id: + type: string + mac: + type: string + name: + type: string + type: + type: string + type: object + type: array + sshKeyIds: + items: + type: string + type: array + state: + type: string + updated: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_gateways.yaml b/package/crds/metal.equinix.jet.crossplane.io_gateways.yaml new file mode 100644 index 0000000..7a233a3 --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_gateways.yaml @@ -0,0 +1,238 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: gateways.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: Gateway + listKind: GatewayList + plural: gateways + singular: gateway + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Gateway is the Schema for the Gateways API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GatewaySpec defines the desired state of Gateway + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + ipReservationId: + description: UUID of the Public or VRF IP Reservation to associate, + must be in the same metro as the VLAN + type: string + privateIpv4SubnetSize: + description: Size of the private IPv4 subnet to create for this + gateway, one of [8 16 32 64 128] + type: number + projectId: + description: UUID of the Project where the Gateway is scoped to + type: string + vlanId: + description: UUID of the VLAN to associate + type: string + required: + - projectId + - vlanId + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: GatewayStatus defines the observed state of Gateway. + properties: + atProvider: + properties: + id: + type: string + state: + type: string + vrfId: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_ipattachments.yaml b/package/crds/metal.equinix.jet.crossplane.io_ipattachments.yaml new file mode 100644 index 0000000..b9dbf6e --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_ipattachments.yaml @@ -0,0 +1,246 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: ipattachments.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: IPAttachment + listKind: IPAttachmentList + plural: ipattachments + singular: ipattachment + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: IPAttachment is the Schema for the IPAttachments API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IPAttachmentSpec defines the desired state of IPAttachment + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + cidrNotation: + type: string + deviceId: + type: string + required: + - cidrNotation + - deviceId + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: IPAttachmentStatus defines the observed state of IPAttachment. + properties: + atProvider: + properties: + address: + type: string + addressFamily: + type: number + cidr: + type: number + gateway: + type: string + global: + type: boolean + id: + type: string + manageable: + type: boolean + management: + type: boolean + netmask: + type: string + network: + type: string + public: + type: boolean + vrfId: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_organizations.yaml b/package/crds/metal.equinix.jet.crossplane.io_organizations.yaml new file mode 100644 index 0000000..ab3dd56 --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_organizations.yaml @@ -0,0 +1,266 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: organizations.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: Organization + listKind: OrganizationList + plural: organizations + singular: organization + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Organization is the Schema for the Organizations API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: OrganizationSpec defines the desired state of Organization + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + address: + description: Address information block + items: + properties: + address: + description: Postal address + type: string + city: + description: City name + type: string + country: + description: Two letter country code (ISO 3166-1 alpha-2), + e.g. US + type: string + state: + description: State name + type: string + zipCode: + description: Zip Code + type: string + required: + - address + - city + - country + - zipCode + type: object + type: array + description: + description: Description string + type: string + logo: + description: Logo URL + type: string + name: + description: The name of the Organization + type: string + twitter: + description: Twitter handle + type: string + website: + description: Website link + type: string + required: + - address + - name + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: OrganizationStatus defines the observed state of Organization. + properties: + atProvider: + properties: + created: + type: string + id: + type: string + updated: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_ports.yaml b/package/crds/metal.equinix.jet.crossplane.io_ports.yaml new file mode 100644 index 0000000..669eb16 --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_ports.yaml @@ -0,0 +1,263 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: ports.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: Port + listKind: PortList + plural: ports + singular: port + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Port is the Schema for the Ports API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PortSpec defines the desired state of Port + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + bonded: + description: Flag indicating whether the port should be bonded + type: boolean + layer2: + description: Flag indicating whether the port is in layer2 (or + layer3) mode + type: boolean + nativeVlanId: + description: UUID of native VLAN of the port + type: string + portId: + description: UUID of the port to lookup + type: string + resetOnDelete: + description: Behavioral setting to reset the port to default settings. + For a bond port it means layer3 without vlans attached, eth + ports will be bonded without native vlan and vlans attached + type: boolean + vlanIds: + description: UUIDs VLANs to attach. To avoid jitter, use the UUID + and not the VXLAN + items: + type: string + type: array + vxlanIds: + description: 'VLAN VXLAN ids to attach (example: [1000])' + items: + type: number + type: array + required: + - bonded + - portId + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: PortStatus defines the observed state of Port. + properties: + atProvider: + properties: + bondId: + type: string + bondName: + type: string + disbondSupported: + type: boolean + id: + type: string + mac: + type: string + name: + type: string + networkType: + type: string + type: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_portvlanattachments.yaml b/package/crds/metal.equinix.jet.crossplane.io_portvlanattachments.yaml new file mode 100644 index 0000000..80c9593 --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_portvlanattachments.yaml @@ -0,0 +1,246 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: portvlanattachments.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: PortVlanAttachment + listKind: PortVlanAttachmentList + plural: portvlanattachments + singular: portvlanattachment + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: PortVlanAttachment is the Schema for the PortVlanAttachments + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PortVlanAttachmentSpec defines the desired state of PortVlanAttachment + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + deviceId: + description: ID of device to be assigned to the VLAN + type: string + forceBond: + description: Add port back to the bond when this resource is removed. + Default is false + type: boolean + native: + description: Mark this VLAN a native VLAN on the port. This can + be used only if this assignment assigns second or further VLAN + to the port. To ensure that this attachment is not first on + a port, you can use depends_on pointing to another equinix_metal_port_vlan_attachment, + just like in the layer2-individual example above + type: boolean + portName: + description: Name of network port to be assigned to the VLAN + type: string + vlanVnid: + description: VXLAN Network Identifier, integer + type: number + required: + - deviceId + - portName + - vlanVnid + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: PortVlanAttachmentStatus defines the observed state of PortVlanAttachment. + properties: + atProvider: + properties: + id: + type: string + portId: + type: string + vlanId: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_projectapikeys.yaml b/package/crds/metal.equinix.jet.crossplane.io_projectapikeys.yaml new file mode 100644 index 0000000..3f41f8c --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_projectapikeys.yaml @@ -0,0 +1,230 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: projectapikeys.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: ProjectAPIKey + listKind: ProjectAPIKeyList + plural: projectapikeys + singular: projectapikey + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ProjectAPIKey is the Schema for the ProjectAPIKeys API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ProjectAPIKeySpec defines the desired state of ProjectAPIKey + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: Description string for the API key + type: string + projectId: + description: UUID of project which the new API key is scoped to + type: string + readOnly: + description: Flag indicating whether the API key shoud be read-only + type: boolean + required: + - description + - projectId + - readOnly + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: ProjectAPIKeyStatus defines the observed state of ProjectAPIKey. + properties: + atProvider: + properties: + id: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_projects.yaml b/package/crds/metal.equinix.jet.crossplane.io_projects.yaml new file mode 100644 index 0000000..440083c --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_projects.yaml @@ -0,0 +1,308 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: projects.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: Project + listKind: ProjectList + plural: projects + singular: project + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Project is the Schema for the Projects API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ProjectSpec defines the desired state of Project + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + backendTransfer: + description: Enable or disable [Backend Transfer](https://metal.equinix.com/developers/docs/networking/backend-transfer/), + default is false + type: boolean + bgpConfig: + description: Optional BGP settings. Refer to [Equinix Metal guide + for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/) + items: + properties: + asn: + description: Autonomous System Number for local BGP deployment + type: number + deploymentType: + description: '"local" or "global", the local is likely to + be usable immediately, the global will need to be review + by Equinix Metal engineers' + type: string + md5SecretRef: + description: Password for BGP session in plaintext (not + a checksum) + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + required: + - asn + - deploymentType + type: object + type: array + name: + description: The name of the project + type: string + organizationId: + description: The UUID of organization under which you want to + create the project. If you leave it out, the project will be + create under your the default organization of your account + type: string + organizationIdRef: + description: A Reference to a named object. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + organizationIdSelector: + description: A Selector selects an object. + properties: + matchControllerRef: + description: MatchControllerRef ensures an object with the + same controller reference as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + type: object + paymentMethodId: + description: The UUID of payment method for this project. The + payment method and the project need to belong to the same organization + (passed with organization_id, or default) + type: string + required: + - name + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: ProjectStatus defines the observed state of Project. + properties: + atProvider: + properties: + bgpConfig: + items: + properties: + maxPrefix: + type: number + status: + type: string + type: object + type: array + created: + type: string + id: + type: string + updated: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_projectsshkeys.yaml b/package/crds/metal.equinix.jet.crossplane.io_projectsshkeys.yaml new file mode 100644 index 0000000..a1505e5 --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_projectsshkeys.yaml @@ -0,0 +1,238 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: projectsshkeys.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: ProjectSSHKey + listKind: ProjectSSHKeyList + plural: projectsshkeys + singular: projectsshkey + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ProjectSSHKey is the Schema for the ProjectSSHKeys API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ProjectSSHKeySpec defines the desired state of ProjectSSHKey + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + name: + description: The name of the SSH key for identification + type: string + projectId: + description: The ID of parent project + type: string + publicKey: + description: The public key. If this is a file, it + type: string + required: + - name + - projectId + - publicKey + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: ProjectSSHKeyStatus defines the observed state of ProjectSSHKey. + properties: + atProvider: + properties: + created: + type: string + fingerprint: + type: string + id: + type: string + ownerId: + type: string + updated: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_reservedipblocks.yaml b/package/crds/metal.equinix.jet.crossplane.io_reservedipblocks.yaml new file mode 100644 index 0000000..dceb18e --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_reservedipblocks.yaml @@ -0,0 +1,292 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: reservedipblocks.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: ReservedIPBlock + listKind: ReservedIPBlockList + plural: reservedipblocks + singular: reservedipblock + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ReservedIPBlock is the Schema for the ReservedIPBlocks API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ReservedIPBlockSpec defines the desired state of ReservedIPBlock + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + cidr: + description: the size of the network to reserve from an existing + vrf ip_range. `cidr` can only be specified with `vrf_id`. Minimum + range is 22-29, with 30-31 supported and necessary for virtual-circuits + type: number + customData: + description: Custom Data is an arbitrary object (submitted in + Terraform as serialized JSON) to assign to the IP Reservation. + This may be helpful for self-managed IPAM. The object must be + valid JSON. + type: string + description: + description: Arbitrary description + type: string + facility: + description: Facility where to allocate the public IP address + block, makes sense only for type==public_ipv4, must be empty + for type==global_ipv4, conflicts with metro + type: string + metro: + description: Metro where to allocate the public IP address block, + makes sense only for type==public_ipv4, must be empty for type==global_ipv4, + conflicts with facility + type: string + network: + description: an unreserved network address from an existing vrf + ip_range. `network` can only be specified with vrf_id + type: string + projectId: + description: The metal project ID where to allocate the address + block + type: string + quantity: + description: The number of allocated /32 addresses, a power of + 2 + type: number + tags: + description: Tags attached to the reserved block + items: + type: string + type: array + type: + description: Either global_ipv4, public_ipv4, or vrf. Defaults + to public_ipv4. + type: string + vrfId: + description: VRF ID for type=vrf reservations + type: string + waitForState: + description: 'Wait for the IP reservation block to reach a desired + state on resource creation. One of: `pending`, `created`. The + `created` state is default and recommended if the addresses + are needed within the configuration. An error will be returned + if a timeout or the `denied` state is encountered.' + type: string + required: + - projectId + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: ReservedIPBlockStatus defines the observed state of ReservedIPBlock. + properties: + atProvider: + properties: + address: + type: string + addressFamily: + type: number + cidrNotation: + type: string + gateway: + type: string + global: + type: boolean + id: + type: string + manageable: + type: boolean + management: + type: boolean + netmask: + type: string + public: + type: boolean + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_spotmarketrequests.yaml b/package/crds/metal.equinix.jet.crossplane.io_spotmarketrequests.yaml new file mode 100644 index 0000000..837e46c --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_spotmarketrequests.yaml @@ -0,0 +1,305 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: spotmarketrequests.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: SpotMarketRequest + listKind: SpotMarketRequestList + plural: spotmarketrequests + singular: spotmarketrequest + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: SpotMarketRequest is the Schema for the SpotMarketRequests API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: SpotMarketRequestSpec defines the desired state of SpotMarketRequest + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + devicesMax: + description: Maximum number devices to be created + type: number + devicesMin: + description: Miniumum number devices to be created + type: number + facilities: + description: Facility IDs where devices should be created + items: + type: string + type: array + instanceParameters: + description: Parameters for devices provisioned from this request. + You can find the parameter description from the [equinix_metal_device + doc](device.md) + items: + properties: + alwaysPxe: + type: boolean + billingCycle: + type: string + customdata: + type: string + description: + type: string + features: + items: + type: string + type: array + hostname: + type: string + ipxeScriptUrl: + type: string + locked: + type: boolean + operatingSystem: + type: string + plan: + type: string + projectSshKeys: + items: + type: string + type: array + tags: + items: + type: string + type: array + userSshKeys: + items: + type: string + type: array + userdata: + type: string + required: + - billingCycle + - hostname + - operatingSystem + - plan + type: object + type: array + maxBidPrice: + description: Maximum price user is willing to pay per hour per + device + type: number + metro: + description: Metro where devices should be created + type: string + projectId: + description: Project ID + type: string + waitForDevices: + description: On resource creation - wait until all desired devices + are active, on resource destruction - wait until devices are + removed + type: boolean + required: + - devicesMax + - devicesMin + - instanceParameters + - maxBidPrice + - projectId + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: SpotMarketRequestStatus defines the observed state of SpotMarketRequest. + properties: + atProvider: + properties: + id: + type: string + instanceParameters: + items: + properties: + termintationTime: + type: string + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_sshkeys.yaml b/package/crds/metal.equinix.jet.crossplane.io_sshkeys.yaml new file mode 100644 index 0000000..a5b8ca8 --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_sshkeys.yaml @@ -0,0 +1,234 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: sshkeys.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: SSHKey + listKind: SSHKeyList + plural: sshkeys + singular: sshkey + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: SSHKey is the Schema for the SSHKeys API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: SSHKeySpec defines the desired state of SSHKey + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + name: + description: The name of the SSH key for identification + type: string + publicKey: + description: The public key. If this is a file, it + type: string + required: + - name + - publicKey + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: SSHKeyStatus defines the observed state of SSHKey. + properties: + atProvider: + properties: + created: + type: string + fingerprint: + type: string + id: + type: string + ownerId: + type: string + updated: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_userapikeys.yaml b/package/crds/metal.equinix.jet.crossplane.io_userapikeys.yaml new file mode 100644 index 0000000..344223c --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_userapikeys.yaml @@ -0,0 +1,228 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: userapikeys.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: UserAPIKey + listKind: UserAPIKeyList + plural: userapikeys + singular: userapikey + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: UserAPIKey is the Schema for the UserAPIKeys API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: UserAPIKeySpec defines the desired state of UserAPIKey + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: Description string for the API key + type: string + readOnly: + description: Flag indicating whether the API key shoud be read-only + type: boolean + required: + - description + - readOnly + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: UserAPIKeyStatus defines the observed state of UserAPIKey. + properties: + atProvider: + properties: + id: + type: string + userId: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_virtualcircuits.yaml b/package/crds/metal.equinix.jet.crossplane.io_virtualcircuits.yaml new file mode 100644 index 0000000..34ddf7d --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_virtualcircuits.yaml @@ -0,0 +1,303 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: virtualcircuits.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: VirtualCircuit + listKind: VirtualCircuitList + plural: virtualcircuits + singular: virtualcircuit + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: VirtualCircuit is the Schema for the VirtualCircuits API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: VirtualCircuitSpec defines the desired state of VirtualCircuit + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + connectionId: + description: UUID of Connection where the VC is scoped to + type: string + customerIp: + description: The Customer IP address which the CSR switch will + peer with. Will default to the other usable IP in the subnet. + type: string + description: + description: Description of the Virtual Circuit resource + type: string + md5SecretRef: + description: The password that can be set for the VRF BGP peer + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + metalIp: + description: The Metal IP address for the SVI (Switch Virtual + Interface) of the VirtualCircuit. Will default to the first + usable IP in the subnet. + type: string + name: + description: Name of the Virtual Circuit resource + type: string + nniVlan: + description: Equinix Metal network-to-network VLAN ID (optional + when the connection has mode=tunnel) + type: number + peerAsn: + description: The BGP ASN of the peer. The same ASN may be the + used across several VCs, but it cannot be the same as the local_asn + of the VRF. + type: number + portId: + description: UUID of the Connection Port where the VC is scoped + to + type: string + projectId: + description: UUID of the Project where the VC is scoped to + type: string + speed: + description: Description of the Virtual Circuit speed. This is + for information purposes and is computed when the connection + type is shared. + type: string + subnet: + description: A subnet from one of the IP blocks associated with + the VRF that we will help create an IP reservation for. Can + only be either a /30 or /31. * For a /31 block, it will only + have two IP addresses, which will be used for the metal_ip and + customer_ip. * For a /30 block, it will have four IP addresses, + but the first and last IP addresses are not usable. We will + default to the first usable IP address for the metal_ip. + type: string + tags: + description: Tags attached to the virtual circuit + items: + type: string + type: array + vlanId: + description: UUID of the VLAN to associate + type: string + vrfId: + description: UUID of the VRF to associate + type: string + required: + - connectionId + - portId + - projectId + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: VirtualCircuitStatus defines the observed state of VirtualCircuit. + properties: + atProvider: + properties: + id: + type: string + nniVnid: + type: number + status: + type: string + vnid: + type: number + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_vlans.yaml b/package/crds/metal.equinix.jet.crossplane.io_vlans.yaml new file mode 100644 index 0000000..05c6fcf --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_vlans.yaml @@ -0,0 +1,233 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: vlans.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: Vlan + listKind: VlanList + plural: vlans + singular: vlan + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Vlan is the Schema for the Vlans API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: VlanSpec defines the desired state of Vlan + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: Description string + type: string + facility: + description: Facility where to create the VLAN + type: string + metro: + type: string + projectId: + description: ID of parent project + type: string + vxlan: + description: VLAN ID, must be unique in metro + type: number + required: + - projectId + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: VlanStatus defines the observed state of Vlan. + properties: + atProvider: + properties: + id: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_vrves.yaml b/package/crds/metal.equinix.jet.crossplane.io_vrves.yaml new file mode 100644 index 0000000..078637c --- /dev/null +++ b/package/crds/metal.equinix.jet.crossplane.io_vrves.yaml @@ -0,0 +1,244 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: vrves.metal.equinix.jet.crossplane.io +spec: + group: metal.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinixjet + kind: Vrf + listKind: VrfList + plural: vrves + singular: vrf + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Vrf is the Schema for the Vrfs API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: VrfSpec defines the desired state of Vrf + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: Description of the VRF + type: string + ipRanges: + description: All IPv4 and IPv6 Ranges that will be available to + BGP Peers. IPv4 addresses must be /8 or smaller with a minimum + size of /29. IPv6 must be /56 or smaller with a minimum size + of /64. Ranges must not overlap other ranges within the VRF. + items: + type: string + type: array + localAsn: + description: The 4-byte ASN set on the VRF. + type: number + metro: + description: Metro Code + type: string + name: + description: User-supplied name of the VRF, unique to the project + type: string + projectId: + description: Project ID + type: string + required: + - metro + - name + - projectId + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: VrfStatus defines the observed state of Vrf. + properties: + atProvider: + properties: + id: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/network.equinix.jet.crossplane.io_acltemplates.yaml b/package/crds/network.equinix.jet.crossplane.io_acltemplates.yaml index dbd78b8..74b7283 100644 --- a/package/crds/network.equinix.jet.crossplane.io_acltemplates.yaml +++ b/package/crds/network.equinix.jet.crossplane.io_acltemplates.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: acltemplates.network.equinix.jet.crossplane.io spec: @@ -12,8 +13,8 @@ spec: - crossplane - managed - equinixjet - kind: AclTemplate - listKind: AclTemplateList + kind: ACLTemplate + listKind: ACLTemplateList plural: acltemplates singular: acltemplate scope: Cluster @@ -34,7 +35,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: AclTemplate is the Schema for the AclTemplates API + description: ACLTemplate is the Schema for the ACLTemplates API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -49,7 +50,7 @@ spec: metadata: type: object spec: - description: AclTemplateSpec defines the desired state of AclTemplate + description: ACLTemplateSpec defines the desired state of ACLTemplate properties: deletionPolicy: default: Delete @@ -63,7 +64,7 @@ spec: forProvider: properties: description: - description: ACL template description + description: ACL template description, up to 200 characters type: string inboundRule: description: One or more rules to specify allowed inbound traffic. @@ -71,6 +72,9 @@ spec: ones. items: properties: + description: + description: Inbound rule description, up to 200 characters + type: string dstPort: description: Inbound traffic destination ports. Either up to 10, comma separated ports or port range or any word @@ -83,6 +87,9 @@ spec: description: Inbound traffic source ports. Either up to 10, comma separated ports or port range or any word type: string + subnet: + description: Inbound traffic source IP subnet in CIDR format + type: string subnets: description: Inbound traffic source IP subnets in CIDR format items: @@ -92,7 +99,6 @@ spec: - dstPort - protocol - srcPort - - subnets type: object type: array metroCode: @@ -103,7 +109,6 @@ spec: type: string required: - inboundRule - - metroCode - name type: object providerConfigRef: @@ -130,12 +135,64 @@ spec: required: - name type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object writeConnectionSecretToRef: description: WriteConnectionSecretToReference specifies the namespace and name of a Secret to which any connection details for this managed resource should be written. Connection details frequently include the endpoint, username, and password required to connect to the - managed resource. + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. properties: name: description: Name of the secret. @@ -151,14 +208,36 @@ spec: - forProvider type: object status: - description: AclTemplateStatus defines the observed state of AclTemplate. + description: ACLTemplateStatus defines the observed state of ACLTemplate. properties: atProvider: properties: deviceAclStatus: type: string + deviceDetails: + items: + properties: + aclStatus: + type: string + name: + type: string + uuid: + type: string + type: object + type: array deviceId: type: string + id: + type: string + inboundRule: + items: + properties: + sequenceNumber: + type: number + sourceType: + type: string + type: object + type: array uuid: type: string type: object diff --git a/package/crds/network.equinix.jet.crossplane.io_bgps.yaml b/package/crds/network.equinix.jet.crossplane.io_bgps.yaml index 8eb66ed..65091e2 100644 --- a/package/crds/network.equinix.jet.crossplane.io_bgps.yaml +++ b/package/crds/network.equinix.jet.crossplane.io_bgps.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: bgps.network.equinix.jet.crossplane.io spec: @@ -12,8 +13,8 @@ spec: - crossplane - managed - equinixjet - kind: Bgp - listKind: BgpList + kind: BGP + listKind: BGPList plural: bgps singular: bgp scope: Cluster @@ -34,7 +35,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: Bgp is the Schema for the Bgps API + description: BGP is the Schema for the BGPs API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -49,7 +50,7 @@ spec: metadata: type: object spec: - description: BgpSpec defines the desired state of Bgp + description: BGPSpec defines the desired state of BGP properties: deletionPolicy: default: Delete @@ -85,15 +86,13 @@ spec: type: string localAsn: description: Local ASN number - format: int64 - type: integer + type: number localIpAddress: description: IP address in CIDR format of a local device type: string remoteAsn: description: Remote ASN number - format: int64 - type: integer + type: number remoteIpAddress: description: IP address of remote peer type: string @@ -128,12 +127,64 @@ spec: required: - name type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object writeConnectionSecretToRef: description: WriteConnectionSecretToReference specifies the namespace and name of a Secret to which any connection details for this managed resource should be written. Connection details frequently include the endpoint, username, and password required to connect to the - managed resource. + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. properties: name: description: Name of the secret. @@ -149,12 +200,14 @@ spec: - forProvider type: object status: - description: BgpStatus defines the observed state of Bgp. + description: BGPStatus defines the observed state of BGP. properties: atProvider: properties: deviceId: type: string + id: + type: string provisioningStatus: type: string state: diff --git a/package/crds/network.equinix.jet.crossplane.io_devicelinks.yaml b/package/crds/network.equinix.jet.crossplane.io_devicelinks.yaml index b441064..bc97e19 100644 --- a/package/crds/network.equinix.jet.crossplane.io_devicelinks.yaml +++ b/package/crds/network.equinix.jet.crossplane.io_devicelinks.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: devicelinks.network.equinix.jet.crossplane.io spec: @@ -67,18 +68,15 @@ spec: properties: asn: description: Device ASN number - format: int64 - type: integer + type: number id: description: Device identifier type: string interfaceId: description: Device network interface identifier to use for device link connection - format: int64 - type: integer + type: number required: - - asn - id type: object type: array @@ -111,9 +109,7 @@ spec: required: - accountNumber - dstMetroCode - - dstZoneCode - srcMetroCode - - srcZoneCode - throughput - throughputUnit type: object @@ -127,7 +123,6 @@ spec: required: - device - name - - subnet type: object providerConfigRef: default: @@ -153,12 +148,64 @@ spec: required: - name type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object writeConnectionSecretToRef: description: WriteConnectionSecretToReference specifies the namespace and name of a Secret to which any connection details for this managed resource should be written. Connection details frequently include the endpoint, username, and password required to connect to the - managed resource. + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. properties: name: description: Name of the secret. @@ -178,6 +225,17 @@ spec: properties: atProvider: properties: + device: + items: + properties: + ipAddress: + type: string + status: + type: string + type: object + type: array + id: + type: string status: type: string uuid: diff --git a/package/crds/network.equinix.jet.crossplane.io_devices.yaml b/package/crds/network.equinix.jet.crossplane.io_devices.yaml index e40e14b..08cbd9d 100644 --- a/package/crds/network.equinix.jet.crossplane.io_devices.yaml +++ b/package/crds/network.equinix.jet.crossplane.io_devices.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: devices.network.equinix.jet.crossplane.io spec: @@ -71,24 +72,270 @@ spec: additionalBandwidth: description: Additional Internet bandwidth, in Mbps, that will be allocated to the device - format: int64 - type: integer + type: number byol: description: 'Boolean value that determines device licensing mode: bring your own license or subscription (default)' type: boolean + clusterDetails: + description: An object that has the cluster details + items: + properties: + clusterName: + description: The name of the cluster device + type: string + node0: + description: An object that has node0 details + items: + properties: + licenseFileIdSecretRef: + description: License file id. This is necessary for + Fortinet and Juniper clusters + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + licenseTokenSecretRef: + description: License token. This is necessary for + Palo Alto clusters + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + vendorConfiguration: + description: An object that has fields relevant to + the vendor of the cluster device + items: + properties: + activationKeySecretRef: + description: Activation key. This is required + for Velocloud clusters + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + adminPasswordSecretRef: + description: The administrative password of + the device. You can use it to log in to the + console. This field is not available for all + device types + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + controller1: + description: System IP Address. Mandatory for + the Fortinet SDWAN cluster device + type: string + controllerFqdn: + description: Controller fqdn. This is required + for Velocloud clusters + type: string + hostname: + description: Hostname. This is necessary for + Palo Alto, Juniper, and Fortinet clusters + type: string + rootPasswordSecretRef: + description: The CLI password of the device. + This field is relevant only for the Velocloud + SDWAN cluster + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + type: object + type: array + type: object + type: array + node1: + description: An object that has node1 details + items: + properties: + licenseFileIdSecretRef: + description: License file id. This is necessary for + Fortinet and Juniper clusters + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + licenseTokenSecretRef: + description: License token. This is necessary for + Palo Alto clusters + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + vendorConfiguration: + description: An object that has fields relevant to + the vendor of the cluster device + items: + properties: + activationKeySecretRef: + description: Activation key. This is required + for Velocloud clusters + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + adminPasswordSecretRef: + description: The administrative password of + the device. You can use it to log in to the + console. This field is not available for all + device types + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + controller1: + description: System IP Address. Mandatory for + the Fortinet SDWAN cluster device + type: string + controllerFqdn: + description: Controller fqdn. This is required + for Velocloud clusters + type: string + hostname: + description: Hostname. This is necessary for + Palo Alto, Juniper, and Fortinet clusters + type: string + rootPasswordSecretRef: + description: The CLI password of the device. + This field is relevant only for the Velocloud + SDWAN cluster + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + type: object + type: array + type: object + type: array + required: + - clusterName + - node0 + - node1 + type: object + type: array coreCount: description: Number of CPU cores used by device - format: int64 - type: integer + type: number hostname: description: Device hostname prefix type: string interfaceCount: description: Number of network interfaces on a device. If not specified, default number for a given device type will be used - format: int64 - type: integer + type: number licenseFile: description: Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL @@ -101,6 +348,9 @@ spec: metroCode: description: Device location metro code type: string + mgmtAclTemplateUuid: + description: Unique identifier of applied MGMT ACL template + type: string name: description: Device name type: string @@ -134,8 +384,7 @@ spec: additionalBandwidth: description: Additional Internet bandwidth, in Mbps, that will be allocated to the device - format: int64 - type: integer + type: number hostname: description: Device hostname prefix type: string @@ -151,6 +400,9 @@ spec: metroCode: description: Device location metro code type: string + mgmtAclTemplateUuid: + description: Unique identifier of applied MGMT ACL template + type: string name: description: Device name type: string @@ -181,7 +433,8 @@ spec: additionalProperties: type: string description: Map of vendor specific configuration parameters - for a device + for a device (controller1, activationKey, managementType, + siteId, systemIpAddress) type: object wanInterfaceId: description: device interface id picked for WAN @@ -216,12 +469,10 @@ spec: type: array termLength: description: Device term length - format: int64 - type: integer + type: number throughput: description: Device license throughput - format: int64 - type: integer + type: number throughputUnit: description: Device license throughput unit (Mbps or Gbps) type: string @@ -232,7 +483,8 @@ spec: additionalProperties: type: string description: Map of vendor specific configuration parameters for - a device + a device (controller1, activationKey, managementType, siteId, + systemIpAddress) type: object version: description: Device software software version @@ -275,12 +527,64 @@ spec: required: - name type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object writeConnectionSecretToRef: description: WriteConnectionSecretToReference specifies the namespace and name of a Secret to which any connection details for this managed resource should be written. Connection details frequently include the endpoint, username, and password required to connect to the - managed resource. + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. properties: name: description: Name of the secret. @@ -301,18 +605,45 @@ spec: atProvider: properties: asn: - format: int64 - type: integer + type: number + clusterDetails: + items: + properties: + clusterId: + type: string + node0: + items: + properties: + name: + type: string + uuid: + type: string + type: object + type: array + node1: + items: + properties: + name: + type: string + uuid: + type: string + type: object + type: array + numOfNodes: + type: number + type: object + type: array ibx: type: string + id: + type: string interface: items: properties: assignedType: type: string id: - format: int64 - type: integer + type: number ipAddress: type: string macAddress: @@ -337,6 +668,56 @@ spec: type: string region: type: string + secondaryDevice: + items: + properties: + asn: + type: number + ibx: + type: string + interface: + items: + properties: + assignedType: + type: string + id: + type: number + ipAddress: + type: string + macAddress: + type: string + name: + type: string + operationalStatus: + type: string + status: + type: string + type: + type: string + type: object + type: array + licenseFileId: + type: string + licenseStatus: + type: string + redundancyType: + type: string + redundantId: + type: string + region: + type: string + sshIpAddress: + type: string + sshIpFqdn: + type: string + status: + type: string + uuid: + type: string + zoneCode: + type: string + type: object + type: array sshIpAddress: type: string sshIpFqdn: diff --git a/package/crds/network.equinix.jet.crossplane.io_sshkeys.yaml b/package/crds/network.equinix.jet.crossplane.io_sshkeys.yaml index 5963060..60e7b60 100644 --- a/package/crds/network.equinix.jet.crossplane.io_sshkeys.yaml +++ b/package/crds/network.equinix.jet.crossplane.io_sshkeys.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: sshkeys.network.equinix.jet.crossplane.io spec: @@ -12,8 +13,8 @@ spec: - crossplane - managed - equinixjet - kind: SshKey - listKind: SshKeyList + kind: SSHKey + listKind: SSHKeyList plural: sshkeys singular: sshkey scope: Cluster @@ -34,7 +35,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: SshKey is the Schema for the SshKeys API + description: SSHKey is the Schema for the SSHKeys API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -49,7 +50,7 @@ spec: metadata: type: object spec: - description: SshKeySpec defines the desired state of SshKey + description: SSHKeySpec defines the desired state of SSHKey properties: deletionPolicy: default: Delete @@ -97,12 +98,64 @@ spec: required: - name type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object writeConnectionSecretToRef: description: WriteConnectionSecretToReference specifies the namespace and name of a Secret to which any connection details for this managed resource should be written. Connection details frequently include the endpoint, username, and password required to connect to the - managed resource. + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. properties: name: description: Name of the secret. @@ -118,10 +171,12 @@ spec: - forProvider type: object status: - description: SshKeyStatus defines the observed state of SshKey. + description: SSHKeyStatus defines the observed state of SSHKey. properties: atProvider: properties: + id: + type: string uuid: type: string type: object diff --git a/package/crds/network.equinix.jet.crossplane.io_sshusers.yaml b/package/crds/network.equinix.jet.crossplane.io_sshusers.yaml index dd97abf..4cd707f 100644 --- a/package/crds/network.equinix.jet.crossplane.io_sshusers.yaml +++ b/package/crds/network.equinix.jet.crossplane.io_sshusers.yaml @@ -1,8 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.2 + controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: sshusers.network.equinix.jet.crossplane.io spec: @@ -12,8 +13,8 @@ spec: - crossplane - managed - equinixjet - kind: SshUser - listKind: SshUserList + kind: SSHUser + listKind: SSHUserList plural: sshusers singular: sshuser scope: Cluster @@ -34,7 +35,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: SshUser is the Schema for the SshUsers API + description: SSHUser is the Schema for the SSHUsers API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -49,7 +50,7 @@ spec: metadata: type: object spec: - description: SshUserSpec defines the desired state of SshUser + description: SSHUserSpec defines the desired state of SSHUser properties: deletionPolicy: default: Delete @@ -117,12 +118,64 @@ spec: required: - name type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object writeConnectionSecretToRef: description: WriteConnectionSecretToReference specifies the namespace and name of a Secret to which any connection details for this managed resource should be written. Connection details frequently include the endpoint, username, and password required to connect to the - managed resource. + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. properties: name: description: Name of the secret. @@ -138,10 +191,12 @@ spec: - forProvider type: object status: - description: SshUserStatus defines the observed state of SshUser. + description: SSHUserStatus defines the observed state of SSHUser. properties: atProvider: properties: + id: + type: string uuid: type: string type: object diff --git a/package/crossplane.yaml b/package/crossplane.yaml index 052a35e..04a4120 100644 --- a/package/crossplane.yaml +++ b/package/crossplane.yaml @@ -1,7 +1,7 @@ apiVersion: meta.pkg.crossplane.io/v1alpha1 kind: Provider metadata: - name: provider-tf-equinix + name: provider-jet-equinix spec: controller: - image: DOCKER_REGISTRY/provider-tf-equinix-controller:VERSION + image: DOCKER_REGISTRY/provider-jet-equinix-controller:VERSION \ No newline at end of file From 9cbb9c689787ff971af3fecf113347b43331b511 Mon Sep 17 00:00:00 2001 From: Marques Johansson Date: Mon, 12 Sep 2022 11:59:28 +0000 Subject: [PATCH 5/8] add sensitive provider configuration for EM auth token credential Signed-off-by: Marques Johansson --- internal/clients/equinix.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/clients/equinix.go b/internal/clients/equinix.go index f00fdb7..008e97d 100644 --- a/internal/clients/equinix.go +++ b/internal/clients/equinix.go @@ -43,6 +43,7 @@ const ( keyClientID = "client_id" keyClientSecret = "client_secret" + keyAuthToken = "auth_token" keyEndpoint = "endpoint" keyRequestTimeout = "request_timeout" keyResponseMaxPageSize = "response_max_page_size" @@ -50,6 +51,7 @@ const ( // Equinix credentials environment variable names envClientID = "EQUINIX_API_CLIENTID" envClientSecret = "EQUINIX_API_CLIENTSECRET" + envAuthToken = "METAL_AUTH_TOKEN" ) // TerraformSetupBuilder builds Terraform a terraform.SetupFn function which @@ -94,6 +96,7 @@ func TerraformSetupBuilder(version, providerSource, providerVersion string) terr ps.Env = []string{ fmt.Sprintf(fmtEnvVar, envClientID, equinixCreds[keyClientID]), fmt.Sprintf(fmtEnvVar, envClientSecret, equinixCreds[keyClientSecret]), + fmt.Sprintf(fmtEnvVar, envAuthToken, equinixCreds[keyAuthToken]), } // set credentials in Terraform provider configuration ps.Configuration = map[string]interface{}{} From 8228ca3ce33f6a335abbaf63165ee5fb95135b8f Mon Sep 17 00:00:00 2001 From: Marques Johansson Date: Fri, 16 Sep 2022 00:45:01 +0000 Subject: [PATCH 6/8] add examples for Metal and ECX Signed-off-by: Marques Johansson --- examples/ecx/l2connection.yaml | 18 ++++++++++++++++++ examples/metal/device.yaml | 20 ++++++++++++++++++++ examples/metal/project.yaml | 9 +++++++++ examples/providerconfig/secret.yaml.tmpl | 8 ++++++-- 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 examples/ecx/l2connection.yaml create mode 100644 examples/metal/device.yaml create mode 100644 examples/metal/project.yaml diff --git a/examples/ecx/l2connection.yaml b/examples/ecx/l2connection.yaml new file mode 100644 index 0000000..a186709 --- /dev/null +++ b/examples/ecx/l2connection.yaml @@ -0,0 +1,18 @@ +apiVersion: ecx.equinix.jet.crossplane.io/v1alpha1 +kind: L2Connection +metadata: + name: example +spec: + forProvider: + name: "equinix-crossplane-jet-example" + profileUuid: "" + speed: "" + speedUnit: "" + notifications: "" + deviceUuid: "" + portUuid: "" + vlanStag: "" + sellerMetroCode: "" + authorizationKey: "" + providerConfigRef: + name: default diff --git a/examples/metal/device.yaml b/examples/metal/device.yaml new file mode 100644 index 0000000..652b944 --- /dev/null +++ b/examples/metal/device.yaml @@ -0,0 +1,20 @@ +apiVersion: metal.equinix.jet.crossplane.io/v1alpha1 +kind: Device +metadata: + name: terrajet-example +spec: + forProvider: + projectIdRef: + name: terrajet-example-project + metro: da + hostname: terrajet-example + plan: t3.small.x86 + operatingSystem: ubuntu_20_04 + billingCycle: hourly + tags: + - crossplane + providerConfigRef: + name: default + writeConnectionSecretToRef: + name: terrajet-example + namespace: crossplane-system diff --git a/examples/metal/project.yaml b/examples/metal/project.yaml new file mode 100644 index 0000000..7ac1dcb --- /dev/null +++ b/examples/metal/project.yaml @@ -0,0 +1,9 @@ +apiVersion: metal.equinix.jet.crossplane.io/v1alpha1 +kind: Project +metadata: + name: terrajet-example-project +spec: + forProvider: + name: terrajet-example-project + providerConfigRef: + name: default diff --git a/examples/providerconfig/secret.yaml.tmpl b/examples/providerconfig/secret.yaml.tmpl index 6dfa5c8..f1381b0 100644 --- a/examples/providerconfig/secret.yaml.tmpl +++ b/examples/providerconfig/secret.yaml.tmpl @@ -7,6 +7,10 @@ type: Opaque stringData: credentials: | { - "username": "admin", - "password": "t0ps3cr3t11" + "client_id": "PlaceYour32CharacterClientIDHere", + "client_secret": "t0ps3cr3t11", + "auth_token": "M3talS3cr3+", + "request_timeout": "30", + "response_max_page_size": "100", + "endpoint": "https://api.equinix.com" } From dcc3378bc30317d8463a0207d93a726bc72d430c Mon Sep 17 00:00:00 2001 From: Marques Johansson Date: Fri, 16 Sep 2022 20:21:36 +0000 Subject: [PATCH 7/8] update Terraform to 1.2.9, Equinix to 1.9.0 Signed-off-by: Marques Johansson --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index caaa380..0be024b 100644 --- a/Makefile +++ b/Makefile @@ -5,12 +5,12 @@ PROJECT_NAME := provider-jet-equinix PROJECT_REPO := github.com/crossplane-contrib/$(PROJECT_NAME) GOLANGCILINT_VERSION ?= 1.48.0 -export TERRAFORM_VERSION := 1.1.6 +export TERRAFORM_VERSION := 1.2.9 export TERRAFORM_PROVIDER_SOURCE := equinix/equinix -export TERRAFORM_PROVIDER_VERSION := 1.8.0 +export TERRAFORM_PROVIDER_VERSION := 1.9.0 export TERRAFORM_PROVIDER_DOWNLOAD_NAME := terraform-provider-equinix -export TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX := https://releases.hashicorp.com/terraform-provider-equinix/1.8.0 +export TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX := https://releases.hashicorp.com/terraform-provider-equinix/1.9.0 #export TERRAFORM_NATIVE_PROVIDER_BINARY := terraform-provider-null_v3.1.0_x5 PLATFORMS ?= linux_amd64 linux_arm64 From 4207b01512adbd013522969c6410cfe6b10e62c8 Mon Sep 17 00:00:00 2001 From: Marques Johansson Date: Fri, 16 Sep 2022 22:35:45 -0400 Subject: [PATCH 8/8] skip late initialization on conflicting metro and facilities fields Signed-off-by: Marques Johansson --- apis/metal/v1alpha1/zz_device_types.go | 2 +- apis/metal/v1alpha1/zz_generated_terraformed.go | 2 ++ config/metal/device/config.go | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/apis/metal/v1alpha1/zz_device_types.go b/apis/metal/v1alpha1/zz_device_types.go index 869d39c..9347e2f 100755 --- a/apis/metal/v1alpha1/zz_device_types.go +++ b/apis/metal/v1alpha1/zz_device_types.go @@ -110,7 +110,7 @@ type DeviceParameters struct { Plan *string `json:"plan" tf:"plan,omitempty"` // The ID of the project in which to create the device - // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Project + // +crossplane:generate:reference:type=Project // +kubebuilder:validation:Optional ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` diff --git a/apis/metal/v1alpha1/zz_generated_terraformed.go b/apis/metal/v1alpha1/zz_generated_terraformed.go index 5380049..bf12337 100755 --- a/apis/metal/v1alpha1/zz_generated_terraformed.go +++ b/apis/metal/v1alpha1/zz_generated_terraformed.go @@ -237,6 +237,8 @@ func (tr *Device) LateInitialize(attrs []byte) (bool, error) { return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") } opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + opts = append(opts, resource.WithNameFilter("Facilities")) + opts = append(opts, resource.WithNameFilter("Metro")) li := resource.NewGenericLateInitializer(opts...) return li.LateInitialize(&tr.Spec.ForProvider, params) diff --git a/config/metal/device/config.go b/config/metal/device/config.go index 432ff02..438faf5 100644 --- a/config/metal/device/config.go +++ b/config/metal/device/config.go @@ -16,13 +16,24 @@ limitations under the License. package device -import "github.com/crossplane/terrajet/pkg/config" +import ( + "github.com/crossplane/terrajet/pkg/config" +) // Configure the device group with references to other resources func Configure(p *config.Provider) { p.AddResourceConfigurator("equinix_metal_device", func(r *config.Resource) { r.References["project_id"] = config.Reference{ - Type: "github.com/crossplane-contrib/provider-jet-equinix/apis/metal/v1alpha1.Project", + Type: "Project", + } + + r.LateInitializer = config.LateInitializer{ + // NOTE(displague): These are ignored because they conflict with each other. + // See the following for more details: https://github.com/crossplane/terrajet/issues/107 + IgnoredFields: []string{ + "metro", + "facilities", + }, } }) }