diff --git a/Makefile b/Makefile index 96ded47b..0a7dbd83 100644 --- a/Makefile +++ b/Makefile @@ -129,17 +129,14 @@ mocks: $(MOCKGEN) # clean mocks @find . -name '*_mock.go' -delete || true - # API mocks - @$(MOCKGEN) -destination ./pkg/mock/loadbalancer/loadbalancer.go -package loadbalancer github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api DefaultAPI - @$(MOCKGEN) -destination ./pkg/mock/iaas/iaas.go -package iaas github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api DefaultAPI - # client mocks - @$(MOCKGEN) -destination ./pkg/stackit/iaas_mock.go -package stackit ./pkg/stackit IaasClient - @$(MOCKGEN) -destination ./pkg/stackit/loadbalancer_mock.go -package stackit ./pkg/stackit LoadbalancerClient - @$(MOCKGEN) -destination ./pkg/stackit/server_mock.go -package stackit ./pkg/stackit NodeClient @$(MOCKGEN) -destination ./pkg/stackit/metadata/metadata_mock.go -package metadata ./pkg/stackit/metadata IMetadata @$(MOCKGEN) -destination ./pkg/csi/util/mount/mount_mock.go -package mount ./pkg/csi/util/mount IMount + @$(MOCKGEN) -destination ./pkg/stackit/client/mock/iaas_mock.go -package client ./pkg/stackit/client IaaSClient + @$(MOCKGEN) -destination ./pkg/stackit/client/mock/loadbalancer_mock.go -package client ./pkg/stackit/client LoadBalancingClient + @$(MOCKGEN) -destination ./pkg/stackit/client/mock/mock.go -package client ./pkg/stackit/client Factory + .PHONY: generate generate: mocks go generate ./... diff --git a/cmd/stackit-csi-plugin/main.go b/cmd/stackit-csi-plugin/main.go index d952bd60..7510d185 100644 --- a/cmd/stackit-csi-plugin/main.go +++ b/cmd/stackit-csi-plugin/main.go @@ -6,15 +6,16 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "k8s.io/component-base/cli" - "k8s.io/klog/v2" - "github.com/stackitcloud/cloud-provider-stackit/pkg/csi" "github.com/stackitcloud/cloud-provider-stackit/pkg/csi/blockstorage" "github.com/stackitcloud/cloud-provider-stackit/pkg/csi/util/mount" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" + "github.com/stackitcloud/cloud-provider-stackit/pkg/metrics" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/metadata" "github.com/stackitcloud/cloud-provider-stackit/pkg/version" + sdkconfig "github.com/stackitcloud/stackit-sdk-go/core/config" + "k8s.io/component-base/cli" + "k8s.io/klog/v2" ) var ( @@ -73,7 +74,7 @@ func main() { cmd.PersistentFlags().BoolVar(&provideNodeService, "provide-node-service", true, "If set to true then the CSI driver does provide the node service (default: true)") - stackit.AddExtraFlags(pflag.CommandLine) + stackitclient.AddExtraFlags(pflag.CommandLine) code := cli.Run(cmd) os.Exit(code) @@ -89,29 +90,32 @@ func handle() { if provideControllerService { var err error - cfg, err := stackit.GetConfigFromFile(cloudConfig) + cfg, err := stackitclient.GetConfigFromFile(cloudConfig) if err != nil { klog.Fatal(err) } - iaasClient, err := stackit.CreateIaaSClient(&cfg) - if err != nil { - klog.Fatalf("Failed to create IaaS client: %v", err) + iaasOpts := []sdkconfig.ConfigurationOption{ + sdkconfig.WithHTTPClient(metrics.NewInstrumentedHTTPClient()), // TODO: Ask if this is needed or not + } + + if cfg.Global.APIEndpoints.IaasAPI != "" { + iaasOpts = append(iaasOpts, sdkconfig.WithEndpoint(cfg.Global.APIEndpoints.IaasAPI)) } - stackitProvider, err := stackit.CreateSTACKITProvider(iaasClient, &cfg) + iaasClient, err := stackitclient.New(cfg.Global.Region, cfg.Global.ProjectID).IaaS(iaasOpts) if err != nil { - klog.Fatalf("Failed to create STACKIT provider: %v", err) + klog.Fatalf("Failed to create STACKIT stackitclient: %v", err) } - d.SetupControllerService(stackitProvider) + d.SetupControllerService(iaasClient) } if provideNodeService { // Initialize mount mountProvider := mount.GetMountProvider() - cfg, err := stackit.GetConfigFromFile(cloudConfig) + cfg, err := stackitclient.GetConfigFromFile(cloudConfig) if err != nil { klog.Fatal(err) } diff --git a/go.mod b/go.mod index e4280dea..46cea4fc 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.26.1 require ( github.com/container-storage-interface/spec v1.12.0 + github.com/gardener/gardener v1.139.1 github.com/go-viper/mapstructure/v2 v2.5.0 github.com/google/uuid v1.6.0 github.com/kubernetes-csi/csi-lib-utils v0.23.2 @@ -13,6 +14,7 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 + github.com/stackitcloud/gardener-extension-provider-stackit/v2 v2.10.0 github.com/stackitcloud/stackit-sdk-go/core v0.26.0 github.com/stackitcloud/stackit-sdk-go/services/iaas v1.10.2 github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.12.2 @@ -30,110 +32,214 @@ require ( k8s.io/klog/v2 v2.140.0 k8s.io/mount-utils v0.36.0 k8s.io/utils v0.0.0-20260319190234-28399d86e0b5 + sigs.k8s.io/controller-runtime v0.23.3 ) replace k8s.io/cloud-provider => github.com/stackitcloud/cloud-provider v0.36.0-ske-1 require ( cel.dev/expr v0.25.1 // indirect + dario.cat/mergo v1.0.2 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect + github.com/BurntSushi/toml v1.6.0 // indirect + github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect + github.com/Masterminds/sprig/v3 v3.3.0 // indirect github.com/NYTimes/gziphandler v1.1.1 // indirect + github.com/PaesslerAG/gval v1.2.4 // indirect + github.com/PaesslerAG/jsonpath v0.1.2-0.20240726212847-3a740cf7976f // indirect + github.com/VictoriaMetrics/VictoriaLogs v1.36.2-0.20251008164716-21c0fb3de84d // indirect + github.com/VictoriaMetrics/VictoriaMetrics v1.131.0 // indirect + github.com/VictoriaMetrics/easyproto v0.1.4 // indirect + github.com/VictoriaMetrics/metrics v1.40.2 // indirect + github.com/VictoriaMetrics/metricsql v0.84.8 // indirect + github.com/VictoriaMetrics/operator/api v0.66.1 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect + github.com/aws/aws-sdk-go-v2 v1.39.6 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // indirect + github.com/aws/smithy-go v1.24.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect + github.com/bmatcuk/doublestar/v4 v4.10.0 // indirect + github.com/brunoga/deep v1.3.1 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.7.0 // indirect + github.com/cyphar/filepath-securejoin v0.6.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/elliotchance/orderedmap/v3 v3.1.0 // indirect github.com/emicklei/go-restful/v3 v3.13.0 // indirect + github.com/evanphx/json-patch/v5 v5.9.11 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fluent/fluent-operator/v3 v3.7.0 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect + github.com/gardener/cert-management v0.19.0 // indirect + github.com/gardener/etcd-druid/api v0.36.1 // indirect + github.com/gardener/gardener/pkg/apis v1.139.1 // indirect + github.com/gardener/machine-controller-manager v0.61.3 // indirect + github.com/go-jose/go-jose/v4 v4.1.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.22.1 // indirect - github.com/go-openapi/jsonreference v0.21.2 // indirect - github.com/go-openapi/swag v0.25.1 // indirect - github.com/go-openapi/swag/cmdutils v0.25.1 // indirect - github.com/go-openapi/swag/conv v0.25.1 // indirect - github.com/go-openapi/swag/fileutils v0.25.1 // indirect - github.com/go-openapi/swag/jsonname v0.25.1 // indirect - github.com/go-openapi/swag/jsonutils v0.25.1 // indirect - github.com/go-openapi/swag/loading v0.25.1 // indirect - github.com/go-openapi/swag/mangling v0.25.1 // indirect - github.com/go-openapi/swag/netutils v0.25.1 // indirect - github.com/go-openapi/swag/stringutils v0.25.1 // indirect - github.com/go-openapi/swag/typeutils v0.25.1 // indirect - github.com/go-openapi/swag/yamlutils v0.25.1 // indirect + github.com/go-openapi/errors v0.22.6 // indirect + github.com/go-openapi/jsonpointer v0.22.4 // indirect + github.com/go-openapi/jsonreference v0.21.4 // indirect + github.com/go-openapi/swag v0.25.4 // indirect + github.com/go-openapi/swag/cmdutils v0.25.4 // indirect + github.com/go-openapi/swag/conv v0.25.4 // indirect + github.com/go-openapi/swag/fileutils v0.25.4 // indirect + github.com/go-openapi/swag/jsonname v0.25.4 // indirect + github.com/go-openapi/swag/jsonutils v0.25.4 // indirect + github.com/go-openapi/swag/loading v0.25.4 // indirect + github.com/go-openapi/swag/mangling v0.25.4 // indirect + github.com/go-openapi/swag/netutils v0.25.4 // indirect + github.com/go-openapi/swag/stringutils v0.25.4 // indirect + github.com/go-openapi/swag/typeutils v0.25.4 // indirect + github.com/go-openapi/swag/yamlutils v0.25.4 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-yaml v1.19.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.1 // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/cel-go v0.26.0 // indirect - github.com/google/gnostic-models v0.7.0 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/cel-go v0.27.0 // indirect + github.com/google/gnostic-models v0.7.1 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect + github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/huandu/xstrings v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect + github.com/jpillora/backoff v1.0.0 // indirect + github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 // indirect + github.com/klauspost/compress v1.18.4 // indirect + github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect + github.com/labstack/echo/v4 v4.15.1 // indirect + github.com/labstack/gommon v0.4.2 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/spdystream v0.5.1 // indirect github.com/moby/sys/mountinfo v0.7.2 // indirect github.com/moby/term v0.5.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect + github.com/muhlemmer/gu v0.3.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect + github.com/nexucis/lamenv v0.5.2 // indirect + github.com/perses/common v0.30.2 // indirect + github.com/perses/perses v0.53.0 // indirect + github.com/perses/perses-operator v0.3.2 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.89.0 // indirect + github.com/prometheus/alertmanager v0.29.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect - github.com/prometheus/procfs v0.19.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect + github.com/prometheus/procfs v0.20.1 // indirect + github.com/prometheus/sigv4 v0.3.0 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect + github.com/shopspring/decimal v1.4.0 // indirect + github.com/sirupsen/logrus v1.9.4 // indirect + github.com/spf13/cast v1.10.0 // indirect github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.22.1 // indirect - github.com/stoewer/go-strcase v1.3.1 // indirect github.com/stretchr/objx v0.5.3 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fastjson v1.6.4 // indirect + github.com/valyala/fastrand v1.1.0 // indirect + github.com/valyala/fasttemplate v1.2.2 // indirect + github.com/valyala/gozstd v1.24.0 // indirect + github.com/valyala/histogram v1.2.0 // indirect + github.com/valyala/quicktemplate v1.8.0 // indirect github.com/x448/float16 v0.8.4 // indirect + github.com/zitadel/oidc/v3 v3.45.4 // indirect + github.com/zitadel/schema v1.3.2 // indirect go.etcd.io/etcd/api/v3 v3.6.8 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.8 // indirect go.etcd.io/etcd/client/v3 v3.6.8 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect - go.opentelemetry.io/otel v1.41.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect - go.opentelemetry.io/otel/metric v1.41.0 // indirect - go.opentelemetry.io/otel/sdk v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.41.0 // indirect - go.opentelemetry.io/proto/otlp v1.9.0 // indirect + go.opentelemetry.io/contrib/otelconf v0.22.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.64.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.18.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.42.0 // indirect + go.opentelemetry.io/otel/log v0.19.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/sdk v1.43.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.19.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect + go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.47.0 // indirect - golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect - golang.org/x/mod v0.32.0 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/oauth2 v0.34.0 // indirect - golang.org/x/term v0.39.0 // indirect - golang.org/x/text v0.33.0 // indirect - golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.41.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect + go.yaml.in/yaml/v4 v4.0.0-rc.2 // indirect + golang.org/x/crypto v0.50.0 // indirect + golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect + golang.org/x/mod v0.35.0 // indirect + golang.org/x/net v0.53.0 // indirect + golang.org/x/oauth2 v0.35.0 // indirect + golang.org/x/term v0.42.0 // indirect + golang.org/x/text v0.36.0 // indirect + golang.org/x/time v0.15.0 // indirect + golang.org/x/tools v0.44.0 // indirect + gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect + helm.sh/helm/v3 v3.20.2 // indirect + istio.io/api v1.27.8 // indirect + istio.io/client-go v1.27.2 // indirect + k8s.io/apiextensions-apiserver v0.35.3 // indirect k8s.io/apiserver v0.36.0 // indirect + k8s.io/autoscaler/vertical-pod-autoscaler v1.5.1 // indirect k8s.io/component-helpers v0.36.0 // indirect k8s.io/controller-manager v0.36.0 // indirect k8s.io/kms v0.36.0 // indirect + k8s.io/kube-aggregator v0.35.3 // indirect k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a // indirect + k8s.io/kubelet v0.35.3 // indirect + k8s.io/metrics v0.35.3 // indirect + k8s.io/pod-security-admission v0.35.3 // indirect k8s.io/streaming v0.36.0 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 // indirect + sigs.k8s.io/gateway-api v1.3.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v6 v6.3.2 // indirect diff --git a/go.sum b/go.sum index b3b6bc7f..351eb115 100644 --- a/go.sum +++ b/go.sum @@ -1,21 +1,119 @@ cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= +github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= +github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= +github.com/PaesslerAG/gval v1.2.2/go.mod h1:XRFLwvmkTEdYziLdaCeCa5ImcGVrfQbeNUbVR+C6xac= +github.com/PaesslerAG/gval v1.2.4 h1:rhX7MpjJlcxYwL2eTTYIOBUyEKZ+A96T9vQySWkVUiU= +github.com/PaesslerAG/gval v1.2.4/go.mod h1:XRFLwvmkTEdYziLdaCeCa5ImcGVrfQbeNUbVR+C6xac= +github.com/PaesslerAG/jsonpath v0.1.0/go.mod h1:4BzmtoM/PI8fPO4aQGIusjGxGir2BzcV0grWtFzq1Y8= +github.com/PaesslerAG/jsonpath v0.1.2-0.20240726212847-3a740cf7976f h1:TxDCeKRCgHea2hUiMOjWwqzWmrIGqSOZYkEPuClXzDo= +github.com/PaesslerAG/jsonpath v0.1.2-0.20240726212847-3a740cf7976f/go.mod h1:zTyVtYhYjcHpfCtqnCMxejgp0pEEwb/xJzhn05NrkJk= +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/VictoriaMetrics/VictoriaLogs v1.36.2-0.20251008164716-21c0fb3de84d h1:fV15mhBCGpCCBbuOAbOflO8Air+tLklMt8bG35FimzQ= +github.com/VictoriaMetrics/VictoriaLogs v1.36.2-0.20251008164716-21c0fb3de84d/go.mod h1:JKZK8LZ9O38pW3+CbBSqL64nswBg6nJ0GE788b0Ps/8= +github.com/VictoriaMetrics/VictoriaMetrics v1.131.0 h1:OHO0EnZ8zEm0cOtxzMFiQWJV6sn0+gnd0WbdBy00eUE= +github.com/VictoriaMetrics/VictoriaMetrics v1.131.0/go.mod h1:p/uiDZSYawWaSgIbZrcbuzjNObxcrZ/u42zYSv40kCY= +github.com/VictoriaMetrics/easyproto v0.1.4 h1:r8cNvo8o6sR4QShBXQd1bKw/VVLSQma/V2KhTBPf+Sc= +github.com/VictoriaMetrics/easyproto v0.1.4/go.mod h1:QlGlzaJnDfFd8Lk6Ci/fuLxfTo3/GThPs2KH23mv710= +github.com/VictoriaMetrics/metrics v1.40.2 h1:OVSjKcQEx6JAwGeu8/KQm9Su5qJ72TMEW4xYn5vw3Ac= +github.com/VictoriaMetrics/metrics v1.40.2/go.mod h1:XE4uudAAIRaJE614Tl5HMrtoEU6+GDZO4QTnNSsZRuA= +github.com/VictoriaMetrics/metricsql v0.84.8 h1:5JXrvPJiYkYNqJVT7+hMZmpAwRHd3txBdlVIw4rJ1VM= +github.com/VictoriaMetrics/metricsql v0.84.8/go.mod h1:d4EisFO6ONP/HIGDYTAtwrejJBBeKGQYiRl095bS4QQ= +github.com/VictoriaMetrics/operator/api v0.66.1 h1:VY8ijXLN50q6BmfLqqhI1CdwuNvhBMVIp0m/Z5SWv78= +github.com/VictoriaMetrics/operator/api v0.66.1/go.mod h1:p9TBiBsCOqyIWuHeBtQaWdZ8IbqH7lI/9Jdru3F621M= +github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= +github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk= +github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE= +github.com/aws/aws-sdk-go-v2/config v1.31.17 h1:QFl8lL6RgakNK86vusim14P2k8BFSxjvUkcWLDjgz9Y= +github.com/aws/aws-sdk-go-v2/config v1.31.17/go.mod h1:V8P7ILjp/Uef/aX8TjGk6OHZN6IKPM5YW6S78QnRD5c= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21 h1:56HGpsgnmD+2/KpG0ikvvR8+3v3COCwaF4r+oWwOeNA= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21/go.mod h1:3YELwedmQbw7cXNaII2Wywd+YY58AmLPwX4LzARgmmA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 h1:T1brd5dR3/fzNFAQch/iBKeX07/ffu/cLu+q+RuzEWk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 h1:0JPwLz1J+5lEOfy/g0SURC9cxhbQ1lIMHMa+AHZSzz0= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 h1:OWs0/j2UYR5LOGi88sD5/lhN6TDLG6SfA7CqsQO9zF0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 h1:mLlUgHn02ue8whiR4BmxxGJLR2gwU6s6ZzJ5wDamBUs= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk= +github.com/aws/smithy-go v1.24.0 h1:LpilSUItNPFr1eY85RYgTIg5eIEPtvFbskaFcmmIUnk= +github.com/aws/smithy-go v1.24.0/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= 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/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bmatcuk/doublestar/v4 v4.10.0 h1:zU9WiOla1YA122oLM6i4EXvGW62DvKZVxIe6TYWexEs= +github.com/bmatcuk/doublestar/v4 v4.10.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/brunoga/deep v1.3.1 h1:bSrL6FhAZa6JlVv4vsi7Hg8SLwroDb1kgDERRVipBCo= +github.com/brunoga/deep v1.3.1/go.mod h1:GDV6dnXqn80ezsLSZ5Wlv1PdKAWAO4L5PnKYtv2dgaI= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/container-storage-interface/spec v1.12.0 h1:zrFOEqpR5AghNaaDG4qyedwPBqU2fU0dWjLQMP/azK0= github.com/container-storage-interface/spec v1.12.0/go.mod h1:txsm+MA2B2WDa5kW69jNbqPnvTtfvZma7T/zsAZ9qX8= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -25,26 +123,67 @@ github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7 github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= +github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= +github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= +github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +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 v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elliotchance/orderedmap/v3 v3.1.0 h1:j4DJ5ObEmMBt/lcwIecKcoRxIQUEnw0L804lXYDt/pg= +github.com/elliotchance/orderedmap/v3 v3.1.0/go.mod h1:G+Hc2RwaZvJMcS4JpGCOyViCnGeKf0bTYCGTO4uhjSo= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8= +github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU= +github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fluent/fluent-operator/v3 v3.7.0 h1:eBjHm9CoKtjNBqQmV3ttqlQfLOKGugATJ9MiK1lyiZo= +github.com/fluent/fluent-operator/v3 v3.7.0/go.mod h1:gXzrUINbapW1YRVYm3m8z8pxs34kltOeC4H9RT3XPng= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= +github.com/gardener/cert-management v0.19.0 h1:BNumdw748Pg9798NzxHmmpKuXFRLHSPuvcPKQHOiFcw= +github.com/gardener/cert-management v0.19.0/go.mod h1:u5OKwiDyUdCuW9vhDV92ozCVkynXUBrYCMHr4rVNiCY= +github.com/gardener/etcd-druid/api v0.36.1 h1:vO4WISqEW7T/s9vgrbVkfdyEfvQ9fiZgQOJQBmiM8hk= +github.com/gardener/etcd-druid/api v0.36.1/go.mod h1:RwZzKp8K415AS0zg8VoODjBxYepCAUYyLgXnZc1bmbo= +github.com/gardener/gardener v1.139.1 h1:e3q4HTJI0j1vDEfZBlG7ApXm/XJytQnbDkUJ+X9b08Q= +github.com/gardener/gardener v1.139.1/go.mod h1:iRY1IXXz+lSPuStOJsdh/ztA/5zEQ+rB0EnI0SUZBb8= +github.com/gardener/gardener/pkg/apis v1.139.1 h1:yxHSs1y393/FesGAVBORnDbc7isi3cLMLMIJmCzmZhk= +github.com/gardener/gardener/pkg/apis v1.139.1/go.mod h1:3Tbqw9dx7KaJ7Fikkna+WVGjRCyTTdlZEAy0GV6u4Gc= +github.com/gardener/machine-controller-manager v0.61.3 h1:w0JuHCKLmcK7B8E7mx3TvE3e0hSYwikchsMSiMhocqw= +github.com/gardener/machine-controller-manager v0.61.3/go.mod h1:8eE1qLztrWIbOM71mHSQGaC6Q+pl5lvOyN08qP39D7o= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= github.com/gkampitakis/go-snaps v0.5.15 h1:amyJrvM1D33cPHwVrjo9jQxX8g/7E2wYdZ+01KS3zGE= github.com/gkampitakis/go-snaps v0.5.15/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA= +github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= +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 v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -52,97 +191,202 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/jsonpointer v0.22.1 h1:sHYI1He3b9NqJ4wXLoJDKmUmHkWy/L7rtEo92JUxBNk= -github.com/go-openapi/jsonpointer v0.22.1/go.mod h1:pQT9OsLkfz1yWoMgYFy4x3U5GY5nUlsOn1qSBH5MkCM= -github.com/go-openapi/jsonreference v0.21.2 h1:Wxjda4M/BBQllegefXrY/9aq1fxBA8sI5M/lFU6tSWU= -github.com/go-openapi/jsonreference v0.21.2/go.mod h1:pp3PEjIsJ9CZDGCNOyXIQxsNuroxm8FAJ/+quA0yKzQ= -github.com/go-openapi/swag v0.25.1 h1:6uwVsx+/OuvFVPqfQmOOPsqTcm5/GkBhNwLqIR916n8= -github.com/go-openapi/swag v0.25.1/go.mod h1:bzONdGlT0fkStgGPd3bhZf1MnuPkf2YAys6h+jZipOo= -github.com/go-openapi/swag/cmdutils v0.25.1 h1:nDke3nAFDArAa631aitksFGj2omusks88GF1VwdYqPY= -github.com/go-openapi/swag/cmdutils v0.25.1/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= -github.com/go-openapi/swag/conv v0.25.1 h1:+9o8YUg6QuqqBM5X6rYL/p1dpWeZRhoIt9x7CCP+he0= -github.com/go-openapi/swag/conv v0.25.1/go.mod h1:Z1mFEGPfyIKPu0806khI3zF+/EUXde+fdeksUl2NiDs= -github.com/go-openapi/swag/fileutils v0.25.1 h1:rSRXapjQequt7kqalKXdcpIegIShhTPXx7yw0kek2uU= -github.com/go-openapi/swag/fileutils v0.25.1/go.mod h1:+NXtt5xNZZqmpIpjqcujqojGFek9/w55b3ecmOdtg8M= -github.com/go-openapi/swag/jsonname v0.25.1 h1:Sgx+qbwa4ej6AomWC6pEfXrA6uP2RkaNjA9BR8a1RJU= -github.com/go-openapi/swag/jsonname v0.25.1/go.mod h1:71Tekow6UOLBD3wS7XhdT98g5J5GR13NOTQ9/6Q11Zo= -github.com/go-openapi/swag/jsonutils v0.25.1 h1:AihLHaD0brrkJoMqEZOBNzTLnk81Kg9cWr+SPtxtgl8= -github.com/go-openapi/swag/jsonutils v0.25.1/go.mod h1:JpEkAjxQXpiaHmRO04N1zE4qbUEg3b7Udll7AMGTNOo= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.1 h1:DSQGcdB6G0N9c/KhtpYc71PzzGEIc/fZ1no35x4/XBY= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.1/go.mod h1:kjmweouyPwRUEYMSrbAidoLMGeJ5p6zdHi9BgZiqmsg= -github.com/go-openapi/swag/loading v0.25.1 h1:6OruqzjWoJyanZOim58iG2vj934TysYVptyaoXS24kw= -github.com/go-openapi/swag/loading v0.25.1/go.mod h1:xoIe2EG32NOYYbqxvXgPzne989bWvSNoWoyQVWEZicc= -github.com/go-openapi/swag/mangling v0.25.1 h1:XzILnLzhZPZNtmxKaz/2xIGPQsBsvmCjrJOWGNz/ync= -github.com/go-openapi/swag/mangling v0.25.1/go.mod h1:CdiMQ6pnfAgyQGSOIYnZkXvqhnnwOn997uXZMAd/7mQ= -github.com/go-openapi/swag/netutils v0.25.1 h1:2wFLYahe40tDUHfKT1GRC4rfa5T1B4GWZ+msEFA4Fl4= -github.com/go-openapi/swag/netutils v0.25.1/go.mod h1:CAkkvqnUJX8NV96tNhEQvKz8SQo2KF0f7LleiJwIeRE= -github.com/go-openapi/swag/stringutils v0.25.1 h1:Xasqgjvk30eUe8VKdmyzKtjkVjeiXx1Iz0zDfMNpPbw= -github.com/go-openapi/swag/stringutils v0.25.1/go.mod h1:JLdSAq5169HaiDUbTvArA2yQxmgn4D6h4A+4HqVvAYg= -github.com/go-openapi/swag/typeutils v0.25.1 h1:rD/9HsEQieewNt6/k+JBwkxuAHktFtH3I3ysiFZqukA= -github.com/go-openapi/swag/typeutils v0.25.1/go.mod h1:9McMC/oCdS4BKwk2shEB7x17P6HmMmA6dQRtAkSnNb8= -github.com/go-openapi/swag/yamlutils v0.25.1 h1:mry5ez8joJwzvMbaTGLhw8pXUnhDK91oSJLDPF1bmGk= -github.com/go-openapi/swag/yamlutils v0.25.1/go.mod h1:cm9ywbzncy3y6uPm/97ysW8+wZ09qsks+9RS8fLWKqg= +github.com/go-openapi/errors v0.22.6 h1:eDxcf89O8odEnohIXwEjY1IB4ph5vmbUsBMsFNwXWPo= +github.com/go-openapi/errors v0.22.6/go.mod h1:z9S8ASTUqx7+CP1Q8dD8ewGH/1JWFFLX/2PmAYNQLgk= +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-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.22.4 h1:dZtK82WlNpVLDW2jlA1YCiVJFVqkED1MegOUy9kR5T4= +github.com/go-openapi/jsonpointer v0.22.4/go.mod h1:elX9+UgznpFhgBuaMQ7iu4lvvX1nvNsesQ3oxmYTw80= +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/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.21.4 h1:24qaE2y9bx/q3uRK/qN+TDwbok1NhbSmGjjySRCHtC8= +github.com/go-openapi/jsonreference v0.21.4/go.mod h1:rIENPTjDbLpzQmQWCj5kKj3ZlmEh+EFVbz3RTUh30/4= +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/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/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU= +github.com/go-openapi/swag v0.25.4/go.mod h1:zNfJ9WZABGHCFg2RnY0S4IOkAcVTzJ6z2Bi+Q4i6qFQ= +github.com/go-openapi/swag/cmdutils v0.25.4 h1:8rYhB5n6WawR192/BfUu2iVlxqVR9aRgGJP6WaBoW+4= +github.com/go-openapi/swag/cmdutils v0.25.4/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= +github.com/go-openapi/swag/conv v0.25.4 h1:/Dd7p0LZXczgUcC/Ikm1+YqVzkEeCc9LnOWjfkpkfe4= +github.com/go-openapi/swag/conv v0.25.4/go.mod h1:3LXfie/lwoAv0NHoEuY1hjoFAYkvlqI/Bn5EQDD3PPU= +github.com/go-openapi/swag/fileutils v0.25.4 h1:2oI0XNW5y6UWZTC7vAxC8hmsK/tOkWXHJQH4lKjqw+Y= +github.com/go-openapi/swag/fileutils v0.25.4/go.mod h1:cdOT/PKbwcysVQ9Tpr0q20lQKH7MGhOEb6EwmHOirUk= +github.com/go-openapi/swag/jsonname v0.25.4 h1:bZH0+MsS03MbnwBXYhuTttMOqk+5KcQ9869Vye1bNHI= +github.com/go-openapi/swag/jsonname v0.25.4/go.mod h1:GPVEk9CWVhNvWhZgrnvRA6utbAltopbKwDu8mXNUMag= +github.com/go-openapi/swag/jsonutils v0.25.4 h1:VSchfbGhD4UTf4vCdR2F4TLBdLwHyUDTd1/q4i+jGZA= +github.com/go-openapi/swag/jsonutils v0.25.4/go.mod h1:7OYGXpvVFPn4PpaSdPHJBtF0iGnbEaTk8AvBkoWnaAY= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4 h1:IACsSvBhiNJwlDix7wq39SS2Fh7lUOCJRmx/4SN4sVo= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4/go.mod h1:Mt0Ost9l3cUzVv4OEZG+WSeoHwjWLnarzMePNDAOBiM= +github.com/go-openapi/swag/loading v0.25.4 h1:jN4MvLj0X6yhCDduRsxDDw1aHe+ZWoLjW+9ZQWIKn2s= +github.com/go-openapi/swag/loading v0.25.4/go.mod h1:rpUM1ZiyEP9+mNLIQUdMiD7dCETXvkkC30z53i+ftTE= +github.com/go-openapi/swag/mangling v0.25.4 h1:2b9kBJk9JvPgxr36V23FxJLdwBrpijI26Bx5JH4Hp48= +github.com/go-openapi/swag/mangling v0.25.4/go.mod h1:6dxwu6QyORHpIIApsdZgb6wBk/DPU15MdyYj/ikn0Hg= +github.com/go-openapi/swag/netutils v0.25.4 h1:Gqe6K71bGRb3ZQLusdI8p/y1KLgV4M/k+/HzVSqT8H0= +github.com/go-openapi/swag/netutils v0.25.4/go.mod h1:m2W8dtdaoX7oj9rEttLyTeEFFEBvnAx9qHd5nJEBzYg= +github.com/go-openapi/swag/stringutils v0.25.4 h1:O6dU1Rd8bej4HPA3/CLPciNBBDwZj9HiEpdVsb8B5A8= +github.com/go-openapi/swag/stringutils v0.25.4/go.mod h1:GTsRvhJW5xM5gkgiFe0fV3PUlFm0dr8vki6/VSRaZK0= +github.com/go-openapi/swag/typeutils v0.25.4 h1:1/fbZOUN472NTc39zpa+YGHn3jzHWhv42wAJSN91wRw= +github.com/go-openapi/swag/typeutils v0.25.4/go.mod h1:Ou7g//Wx8tTLS9vG0UmzfCsjZjKhpjxayRKTHXf2pTE= +github.com/go-openapi/swag/yamlutils v0.25.4 h1:6jdaeSItEUb7ioS9lFoCZ65Cne1/RZtPBZ9A56h92Sw= +github.com/go-openapi/swag/yamlutils v0.25.4/go.mod h1:MNzq1ulQu+yd8Kl7wPOut/YHAAU/H6hL91fF+E2RFwc= +github.com/go-openapi/testify/enable/yaml/v2 v2.0.2 h1:0+Y41Pz1NkbTHz8NngxTuAXxEodtNSI1WG1c/m5Akw4= +github.com/go-openapi/testify/enable/yaml/v2 v2.0.2/go.mod h1:kme83333GCtJQHXQ8UKX3IBZu6z8T5Dvy5+CW3NLUUg= +github.com/go-openapi/testify/v2 v2.0.2 h1:X999g3jeLcoY8qctY/c/Z8iBHTbwLz7R2WXd6Ub6wls= +github.com/go-openapi/testify/v2 v2.0.2/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= -github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= +github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +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.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/cel-go v0.26.0 h1:DPGjXackMpJWH680oGY4lZhYjIameYmR+/6RBdDGmaI= -github.com/google/cel-go v0.26.0/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= -github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= -github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= +github.com/google/cel-go v0.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= +github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= +github.com/google/gnostic-models v0.7.1 h1:SisTfuFKJSKM5CPZkffwi6coztzzeYUhc3v4yxLWH8c= +github.com/google/gnostic-models v0.7.1/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc= github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo= github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +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-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/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/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= +github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/joshdk/go-junit v1.0.0 h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE= github.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung= -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/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 h1:9Nu54bhS/H/Kgo2/7xNSUuC5G28VR8ljfrLKU2G4IjU= +github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12/go.mod h1:TBzl5BIHNXfS9+C35ZyJaklL7mLDbgUkcgXzSLa8Tk0= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/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.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= +github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kubernetes-csi/csi-lib-utils v0.23.2 h1:+x9W4RRyuRnJcTiSHKEFpl0cYUeLUqshM5ioPeYPRXw= github.com/kubernetes-csi/csi-lib-utils v0.23.2/go.mod h1:aIcqnC6EyesZpe7kX5PxHUZePw1tKrYFKwg7RaqlPh8= github.com/kubernetes-csi/csi-test/v5 v5.4.0 h1:u5DgYNIreSNO2+u4Nq2Wpl+bbakRSjNyxZHmDTAqnYA= github.com/kubernetes-csi/csi-test/v5 v5.4.0/go.mod h1:anAJKFUb/SdHhIHECgSKxC5LSiLzib+1I6mrWF5Hve8= +github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 h1:nHHjmvjitIiyPlUHk/ofpgvBcNcawJLtf4PYHORLjAA= +github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0/go.mod h1:YBCo4DoEeDndqvAn6eeu0vWM7QdXmHEeI9cFWplmBys= 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/labstack/echo/v4 v4.15.1 h1:S9keusg26gZpjMmPqB5hOEvNKnmd1lNmcHrbbH2lnFs= +github.com/labstack/echo/v4 v4.15.1/go.mod h1:xmw1clThob0BSVRX1CRQkGQ/vjwcpOMjQZSZa9fKA/c= +github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= +github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= +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/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mfridman/tparse v0.18.0 h1:wh6dzOKaIwkUGyKgOntDW4liXSo37qg5AXbIhkMV3vE= github.com/mfridman/tparse v0.18.0/go.mod h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= +github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= +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.5.1 h1:9sNYeYZUcci9R6/w7KDaFWEWeV4LStVG78Mpyq/Zm/Y= +github.com/moby/spdystream v0.5.1/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg= github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4= github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= @@ -150,40 +394,88 @@ github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFL github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/muhlemmer/gu v0.3.1 h1:7EAqmFrW7n3hETvuAdmFmn4hS8W+z3LgKtrnow+YzNM= +github.com/muhlemmer/gu v0.3.1/go.mod h1:YHtHR+gxM+bKEIIs7Hmi9sPT3ZDUvTN/i88wQpZkrdM= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +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/nexucis/lamenv v0.5.2 h1:tK/u3XGhCq9qIoVNcXsK9LZb8fKopm0A5weqSRvHd7M= +github.com/nexucis/lamenv v0.5.2/go.mod h1:HusJm6ltmmT7FMG8A750mOLuME6SHCsr2iFYxp5fFi0= +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.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo/v2 v2.28.2 h1:DTrMfpqxiNUyQ3Y0zhn1n3cOO2euFgQPYIpkWwxVFps= github.com/onsi/ginkgo/v2 v2.28.2/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= +github.com/perses/common v0.30.2 h1:RAiVxUpX76lTCb4X7pfcXSvYdXQmZwKi4oDKAEO//u0= +github.com/perses/common v0.30.2/go.mod h1:DFtur1QPah2/ChXbKKhw7djYdwNgz27s5fPKpiK0Xao= +github.com/perses/perses v0.53.0 h1:gh0m/OE3yTG4jCkseORuT3B1qAL3VlsnBckJSbpFjPs= +github.com/perses/perses v0.53.0/go.mod h1:HsCfkI+EZta2UEDCFa//HUyLRY0Z0fElJkpAWdARbGs= +github.com/perses/perses-operator v0.3.2 h1:Uur1GqvKVvnj26Hq/FPmXCTCsN8JAfr/6VZVbzSr+4I= +github.com/perses/perses-operator v0.3.2/go.mod h1:FdIK7zSTf1WvqIo3xgIGpsOIEM5LjB4epKpKzFxjo7w= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.89.0 h1:nZ9Ov2SbA8pWcyWKpf6AbQipG5Negg5CfDKWOEtnnwc= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.89.0/go.mod h1:IJwk1oNs212afqGbNnE84GAB95OHtJR/BuI1rKESiYk= +github.com/prometheus/alertmanager v0.29.0 h1:/ET4NmAGx2Dv9kStrXIBqBgHyiSgIk4OetY+hoZRfgc= +github.com/prometheus/alertmanager v0.29.0/go.mod h1:SjI2vhrfdWg10UaRUxTz27rgdJVG3HXrhI5WFjCdBgs= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= -github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= -github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= +github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= +github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= +github.com/prometheus/sigv4 v0.3.0 h1:QIG7nTbu0JTnNidGI1Uwl5AGVIChWUACxn2B/BQ1kms= +github.com/prometheus/sigv4 v0.3.0/go.mod h1:fKtFYDus2M43CWKMNtGvFNHGXnAJJEGZbiYCmVp/F8I= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= +github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= +github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= +github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stackitcloud/cloud-provider v0.36.0-ske-1 h1:CZaL+8FH1rOjPnlPkhmvfKUkIX2r3MFOjfACdV8iFeo= github.com/stackitcloud/cloud-provider v0.36.0-ske-1/go.mod h1:y/3sksoC0taJZR0PcAAYUqVyD6Jzu2X0lD4yCEPXPuI= +github.com/stackitcloud/gardener-extension-provider-stackit/v2 v2.10.0 h1:crQ4MYtLQTVH+PUMPFgeIX2PvsHc/h8Kc6h5OAR7oME= +github.com/stackitcloud/gardener-extension-provider-stackit/v2 v2.10.0/go.mod h1:XxTQ+6q9QrTjUZgcivH9zahXCn71RZWfE+cq21jpvSk= github.com/stackitcloud/stackit-sdk-go/core v0.26.0 h1:jQEb9gkehfp6VCP6TcYk7BI10cz4l0KM2L6hqYBH2QA= github.com/stackitcloud/stackit-sdk-go/core v0.26.0/go.mod h1:WU1hhxnjXw2EV7CYa1nlEvNpMiRY6CvmIOaHuL3pOaA= github.com/stackitcloud/stackit-sdk-go/services/iaas v1.10.2 h1:UXW2OtgflJPN+58W7tX27CbJdpXg03RxM39DwXSrW5s= @@ -192,17 +484,15 @@ github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.12.2 h1:3Xnt5lnM github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.12.2/go.mod h1:+Ld3dn648I+YKcBV3fEkYpDSr3fel421+LurJGywSBs= github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.22.1 h1:J7EqPLrdfEWhEw5bH3StHbKtrSwJ6Gdjw5RwzsHXGf0= github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.22.1/go.mod h1:hczoIYoLKu7vL+iunL1AlhQ2MqQXckPlqiozrqdZrWQ= -github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= -github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= @@ -215,6 +505,20 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= +github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= +github.com/valyala/fastrand v1.1.0 h1:f+5HkLW4rsgzdNoleUOB69hyT9IlD2ZQh9GyDMfb5G8= +github.com/valyala/fastrand v1.1.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002oeRzjapQ= +github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= +github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/valyala/gozstd v1.24.0 h1:M/9L3h7bVwbj2gZwrmuoaxzwVrmBUvos2jG9cZtuhlc= +github.com/valyala/gozstd v1.24.0/go.mod h1:y5Ew47GLlP37EkTB+B4s7r6A5rdaeB7ftbl9zoYiIPQ= +github.com/valyala/histogram v1.2.0 h1:wyYGAZZt3CpwUiIb9AU/Zbllg1llXyrtApRS815OLoQ= +github.com/valyala/histogram v1.2.0/go.mod h1:Hb4kBwb4UxsaNbbbh+RRz8ZR6pdodR57tzWUS3BUzXY= +github.com/valyala/quicktemplate v1.8.0 h1:zU0tjbIqTRgKQzFY1L42zq0qR3eh4WoQQdIdqCysW5k= +github.com/valyala/quicktemplate v1.8.0/go.mod h1:qIqW8/igXt8fdrUln5kOSb+KWMaJ4Y8QUsfd1k6L2jM= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= @@ -222,6 +526,10 @@ github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/zitadel/oidc/v3 v3.45.4 h1:GKyWaPRVQ8sCu9XgJ3NgNGtG52FzwVJpzXjIUG2+YrI= +github.com/zitadel/oidc/v3 v3.45.4/go.mod h1:XALmFXS9/kSom9B6uWin1yJ2WTI/E4Ti5aXJdewAVEs= +github.com/zitadel/schema v1.3.2 h1:gfJvt7dOMfTmxzhscZ9KkapKo3Nei3B6cAxjav+lyjI= +github.com/zitadel/schema v1.3.2/go.mod h1:IZmdfF9Wu62Zu6tJJTH3UsArevs3Y4smfJIj3L8fzxw= go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= go.etcd.io/etcd/api/v3 v3.6.8 h1:gqb1VN92TAI6G2FiBvWcqKtHiIjr4SU2GdXxTwyexbM= @@ -236,28 +544,57 @@ go.etcd.io/etcd/server/v3 v3.6.8 h1:U2strdSEy1U8qcSzRIdkYpvOPtBy/9i/IfaaCI9flZ4= go.etcd.io/etcd/server/v3 v3.6.8/go.mod h1:88dCtwUnSirkUoJbflQxxWXqtBSZa6lSG0Kuej+dois= go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb7sGddAr30RRS6xjKy7AZ2JtTOPA3oolgVSw8= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= -go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= -go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= -go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= +go.opentelemetry.io/contrib/otelconf v0.22.0 h1:+kpcfczGOFM85zDZyqQCzWefhovegfn24D0WwmQz0n4= +go.opentelemetry.io/contrib/otelconf v0.22.0/go.mod h1:ojdbOukO+JRDJQmJY2PRIZEg0UYVzcOuZR59hp7xffc= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0 h1:deI9UQMoGFgrg5iLPgzueqFPHevDl+28YKfSpPTI6rY= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0/go.mod h1:PFx9NgpNUKXdf7J4Q3agRxMs3Y07QhTCVipKmLsMKnU= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 h1:HIBTQ3VO5aupLKjC90JgMqpezVXwFuq6Ryjn0/izoag= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0/go.mod h1:ji9vId85hMxqfvICA0Jt8JqEdrXaAkcpkI9HPXya0ro= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 h1:MdKucPl/HbzckWWEisiNqMPhRrAOQX8r4jTuGr636gk= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0/go.mod h1:RolT8tWtfHcjajEH5wFIZ4Dgh5jpPdFXYV9pTAk/qjc= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 h1:w1K+pCJoPpQifuVpsKamUdn9U0zM3xUziVOqsGksUrY= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0/go.mod h1:HBy4BjzgVE8139ieRI75oXm3EcDN+6GhD88JT1Kjvxg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= +go.opentelemetry.io/otel/exporters/prometheus v0.64.0 h1:g0LRDXMX/G1SEZtK8zl8Chm4K6GBwRkjPKE36LxiTYs= +go.opentelemetry.io/otel/exporters/prometheus v0.64.0/go.mod h1:UrgcjnarfdlBDP3GjDIJWe6HTprwSazNjwsI+Ru6hro= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.18.0 h1:KJVjPD3rcPb98rIs3HznyJlrfx9ge5oJvxxlGR+P/7s= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.18.0/go.mod h1:K3kRa2ckmHWQaTWQdPRHc7qGXASuVuoEQXzrvlA98Ws= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.42.0 h1:lSZHgNHfbmQTPfuTmWVkEu8J8qXaQwuV30pjCcAUvP8= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.42.0/go.mod h1:so9ounLcuoRDu033MW/E0AD4hhUjVqswrMF5FoZlBcw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.42.0 h1:s/1iRkCKDfhlh1JF26knRneorus8aOwVIDhvYx9WoDw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.42.0/go.mod h1:UI3wi0FXg1Pofb8ZBiBLhtMzgoTm1TYkMvn71fAqDzs= +go.opentelemetry.io/otel/log v0.19.0 h1:KUZs/GOsw79TBBMfDWsXS+KZ4g2Ckzksd1ymzsIEbo4= +go.opentelemetry.io/otel/log v0.19.0/go.mod h1:5DQYeGmxVIr4n0/BcJvF4upsraHjg6vudJJpnkL6Ipk= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/log v0.19.0 h1:scYVLqT22D2gqXItnWiocLUKGH9yvkkeql5dBDiXyko= +go.opentelemetry.io/otel/sdk/log v0.19.0/go.mod h1:vFBowwXGLlW9AvpuF7bMgnNI95LiW10szrOdvzBHlAg= +go.opentelemetry.io/otel/sdk/log/logtest v0.19.0 h1:BEbF7ZBB6qQloV/Ub1+3NQoOUnVtcGkU3XX4Ws3GQfk= +go.opentelemetry.io/otel/sdk/log/logtest v0.19.0/go.mod h1:Lua81/3yM0wOmoHTokLj9y9ADeA02v1naRrVrkAZuKk= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= +go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= @@ -270,119 +607,293 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +go.yaml.in/yaml/v4 v4.0.0-rc.2 h1:/FrI8D64VSr4HtGIlUtlFMGsm7H7pWTbj6vOLVZcA6s= +go.yaml.in/yaml/v4 v4.0.0-rc.2/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= -golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0= -golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa h1:Zt3DZoOFFYkKhDT3v7Lm9FDMEV06GpzjG2jrqW+QTE0= +golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa/go.mod h1:K79w1Vqn7PoiZn+TkNpx3BUWUQksGO3JcVX6qIjytmA= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= +golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= +golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/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-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= -golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +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= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= +golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/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= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/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-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= -golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= +golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY= +golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +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.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= 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= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= -golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= +golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0= +gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= -google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA= +google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo= gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +helm.sh/helm/v3 v3.20.2 h1:binM4rvPx5DcNsa1sIt7UZi55lRbu3pZUFmQkSoRh48= +helm.sh/helm/v3 v3.20.2/go.mod h1:Fl1kBaWCpkUrM6IYXPjQ3bdZQfFrogKArqptvueZ6Ww= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +istio.io/api v1.27.8 h1:Mx2l/P6Q1FsJ+A/OMZr05MirYe6FTwsyJuKduwAAU8I= +istio.io/api v1.27.8/go.mod h1:DTVGH6CLXj5W8FF9JUD3Tis78iRgT1WeuAnxfTz21Wg= +istio.io/client-go v1.27.2 h1:4IsF7UAdV5Yg0iq6ONyWZpjFr3z2ahkIbLWyzOHCAwA= +istio.io/client-go v1.27.2/go.mod h1:zgT5R1USl6rwYK1eb2kisPuiji05TQJE7CQHU253iAg= +k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw= k8s.io/api v0.36.0 h1:SgqDhZzHdOtMk40xVSvCXkP9ME0H05hPM3p9AB1kL80= k8s.io/api v0.36.0/go.mod h1:m1LVrGPNYax5NBHdO+QuAedXyuzTt4RryI/qnmNvs34= +k8s.io/apiextensions-apiserver v0.35.3 h1:2fQUhEO7P17sijylbdwt0nBdXP0TvHrHj0KeqHD8FiU= +k8s.io/apiextensions-apiserver v0.35.3/go.mod h1:tK4Kz58ykRpwAEkXUb634HD1ZAegEElktz/B3jgETd8= +k8s.io/apimachinery v0.19.0/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apimachinery v0.36.0 h1:jZyPzhd5Z+3h9vJLt0z9XdzW9VzNzWAUw+P1xZ9PXtQ= k8s.io/apimachinery v0.36.0/go.mod h1:FklypaRJt6n5wUIwWXIP6GJlIpUizTgfo1T/As+Tyxc= k8s.io/apiserver v0.36.0 h1:Jg5OFAENUACByUCg15CmhZAYrr5ZyJ+jodyA1mHl3YE= k8s.io/apiserver v0.36.0/go.mod h1:mHvwdHf+qKEm+1/hYm756SV+oREOKSPnsjagOpx6Vho= +k8s.io/autoscaler/vertical-pod-autoscaler v1.5.1 h1:LlVtM3IKqIVHz1ZXC3ahe/mAtDWb7Eob0tyTzqFULqg= +k8s.io/autoscaler/vertical-pod-autoscaler v1.5.1/go.mod h1:znhUnV0Yn+CkZu3TZ2HVqd8GFRMkPj/CXszX1gdBjTU= +k8s.io/client-go v0.19.0/go.mod h1:H9E/VT95blcFQnlyShFgnFT9ZnJOAceiUHM3MlRC+mU= k8s.io/client-go v0.36.0 h1:pOYi7C4RHChYjMiHpZSpSbIM6ZxVbRXBy7CuiIwqA3c= k8s.io/client-go v0.36.0/go.mod h1:ZKKcpwF0aLYfkHFCjillCKaTK/yBkEDHTDXCFY6AS9Y= +k8s.io/code-generator v0.19.0/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= k8s.io/component-base v0.36.0 h1:hFjEktssxiJhrK1zfybkH4kJOi8iZuF+mIDCqS5+jRo= k8s.io/component-base v0.36.0/go.mod h1:JZvIfcNHk+uck+8LhJzhSBtydWXaZNQwX2OdL+Mnwsk= k8s.io/component-helpers v0.36.0 h1:KznLAOD7oPxjaeheW4SOQijz9UtMO8Nvp89+lR8FYks= k8s.io/component-helpers v0.36.0/go.mod h1:BqZG+01Z97KR8GN9Stb8SiRmtn/EpZogriuQtpMCsLg= k8s.io/controller-manager v0.36.0 h1:SQoi2QplC2mI7v+rRRVeHtlQcGJVdz8qE86AN+uIT34= k8s.io/controller-manager v0.36.0/go.mod h1:rrUnt0k8dWeeA8acpBE1kakFwetMJfjfgJuFtWRk54U= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog/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.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kms v0.36.0 h1:DPy0VDWi6hCgFMgzV5cNuSDrIROMRcJpTZ1GnB+D368= k8s.io/kms v0.36.0/go.mod h1:g91diTD9h0oJCCHkTb00krlF+Qm5HTnkWLi9Q/TpRoc= +k8s.io/kube-aggregator v0.35.3 h1:erIo8Dfapd0Fg44XAbgCNioJMtr3Z5mI/G1PSpj9B7Q= +k8s.io/kube-aggregator v0.35.3/go.mod h1:lOLyWTEuiKT2kS/Wkj0foq+P+Xt4gs/xkrhz2r33lAQ= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a h1:xCeOEAOoGYl2jnJoHkC3hkbPJgdATINPMAxaynU2Ovg= k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a/go.mod h1:uGBT7iTA6c6MvqUvSXIaYZo9ukscABYi2btjhvgKGZ0= +k8s.io/kubelet v0.35.3 h1:Y6b9+U/aTBmou9JZ6qv18O4dpFbJOfl7cBe+ZksT7RY= +k8s.io/kubelet v0.35.3/go.mod h1:aWoMogtyUEf/mTl8VjqHbSkW5ZZkB8vTkrg9Fi6TKwE= +k8s.io/metrics v0.35.3 h1:WonA18pEwrtb7a6XfhFg1ZY1Le0RFkcEw7CFApMTZos= +k8s.io/metrics v0.35.3/go.mod h1:/O8UBb5QVyAekR2QvL/WWxskpdV1wVSEl4MSLAy4Ql4= k8s.io/mount-utils v0.36.0 h1:ufsqGyCoPDh7p+6OIa1wv6oH9GqkQQ8XIfEOVfCV3g0= k8s.io/mount-utils v0.36.0/go.mod h1:+I47UOG6FiUGVSy7VanjU/mQXLShMo3M7xBpGLzCub8= +k8s.io/pod-security-admission v0.35.3 h1:clkLLfPs4BI/aZ4iQtJCtVBPS+Fhz1byvVRJ0+2dSs8= +k8s.io/pod-security-admission v0.35.3/go.mod h1:KBMkZoQaOB58v0VUtiPn8S79lVMngm3al9IjxneIT7c= k8s.io/streaming v0.36.0 h1:agnTxU+NFulUrtYzXUGKO3ndEa8jKwht1Kwn9nu9x+4= k8s.io/streaming v0.36.0/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20260319190234-28399d86e0b5 h1:kBawHLSnx/mYHmRnNUf9d4CpjREbeZuxoSGOX/J+aYM= k8s.io/utils v0.0.0-20260319190234-28399d86e0b5/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= +sigs.k8s.io/controller-runtime v0.23.3 h1:VjB/vhoPoA9l1kEKZHBMnQF33tdCLQKJtydy4iqwZ80= +sigs.k8s.io/controller-runtime v0.23.3/go.mod h1:B6COOxKptp+YaUT5q4l6LqUJTRpizbgf9KSRNdQGns0= +sigs.k8s.io/gateway-api v1.3.0 h1:q6okN+/UKDATola4JY7zXzx40WO4VISk7i9DIfOvr9M= +sigs.k8s.io/gateway-api v1.3.0/go.mod h1:d8NV8nJbaRbEKem+5IuxkL8gJGOZ+FJ+NvOIltV8gDk= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v6 v6.3.2 h1:kwVWMx5yS1CrnFWA/2QHyRVJ8jM6dBA80uLmm0wJkk8= sigs.k8s.io/structured-merge-diff/v6 v6.3.2/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/pkg/ccm/instances.go b/pkg/ccm/instances.go index fedc143b..2a28be15 100644 --- a/pkg/ccm/instances.go +++ b/pkg/ccm/instances.go @@ -24,9 +24,8 @@ import ( "strings" "github.com/stackitcloud/cloud-provider-stackit/pkg/labels" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - corev1 "k8s.io/api/core/v1" cloudprovider "k8s.io/cloud-provider" "k8s.io/klog/v2" @@ -47,12 +46,12 @@ var oldProviderIDRegexp = regexp.MustCompile(`^` + oldProviderName + `://([^/]*) // Instances encapsulates an implementation of Instances for OpenStack. type Instances struct { regionProviderID bool - iaasClient stackit.NodeClient + iaasClient stackitclient.IaaSClient projectID string region string } -func NewInstance(client stackit.NodeClient, projectID, region string) (*Instances, error) { +func NewInstance(client stackitclient.IaaSClient, projectID, region string) (*Instances, error) { return &Instances{ iaasClient: client, projectID: projectID, @@ -203,8 +202,8 @@ func instanceIDFromProviderID(providerID string) (instanceID, region string, err } } -func getServerByName(ctx context.Context, client stackit.NodeClient, name, projectID, region string) (*iaas.Server, error) { - servers, err := client.ListServers(ctx, projectID, region) +func getServerByName(ctx context.Context, client stackitclient.IaaSClient, name, projectID, region string) (*iaas.Server, error) { + servers, err := client.ListServers(ctx) if err != nil { return nil, fmt.Errorf("failed to list servers: %w", err) } @@ -239,8 +238,8 @@ func (i *Instances) getInstance(ctx context.Context, node *corev1.Node) (*iaas.S return nil, fmt.Errorf("ProviderID \"%s\" didn't match supported region \"%s\"", node.Spec.ProviderID, i.region) } - server, err := i.iaasClient.GetServer(ctx, i.projectID, i.region, instanceID) - if stackit.IsNotFound(err) { + server, err := i.iaasClient.GetServer(ctx, instanceID) + if stackitclient.IsNotFound(err) { return nil, cloudprovider.InstanceNotFound } if err != nil { diff --git a/pkg/ccm/instances_test.go b/pkg/ccm/instances_test.go index 4f022ac0..ad384c1b 100644 --- a/pkg/ccm/instances_test.go +++ b/pkg/ccm/instances_test.go @@ -23,9 +23,9 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" + stackitclientmock "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client/mock" iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - "go.uber.org/mock/gomock" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -33,7 +33,7 @@ import ( var _ = Describe("Node Controller", func() { var ( - nodeMockClient *stackit.MockNodeClient + nodeMockClient *stackitclientmock.MockIaaSClient instance *Instances projectID string @@ -47,7 +47,7 @@ var _ = Describe("Node Controller", func() { serverID = "my-server" ctrl := gomock.NewController(GinkgoT()) - nodeMockClient = stackit.NewMockNodeClient(ctrl) + nodeMockClient = stackitclientmock.NewMockIaaSClient(ctrl) var err error instance, err = NewInstance(nodeMockClient, projectID, "eu01") @@ -68,7 +68,7 @@ var _ = Describe("Node Controller", func() { Describe("InstanceExists", func() { It("does not error if instance not found", func() { - nodeMockClient.EXPECT().ListServers(gomock.Any(), projectID, region).Return(&[]iaas.Server{}, nil) + nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(&[]iaas.Server{}, nil) node := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, @@ -80,7 +80,7 @@ var _ = Describe("Node Controller", func() { }) It("successfully get the instance when provider ID not there", func() { - nodeMockClient.EXPECT().ListServers(gomock.Any(), projectID, region).Return(&[]iaas.Server{ + nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(&[]iaas.Server{ { Name: "foo", }, @@ -96,7 +96,7 @@ var _ = Describe("Node Controller", func() { }) It("successfully get the instance when provider ID is there", func() { - nodeMockClient.EXPECT().GetServer(gomock.Any(), projectID, region, serverID).Return(&iaas.Server{ + nodeMockClient.EXPECT().GetServer(gomock.Any(), serverID).Return(&iaas.Server{ Name: "foo", }, nil) @@ -113,7 +113,7 @@ var _ = Describe("Node Controller", func() { }) It("successfully get the instance when old provider ID is there", func() { - nodeMockClient.EXPECT().GetServer(gomock.Any(), projectID, region, serverID).Return(&iaas.Server{ + nodeMockClient.EXPECT().GetServer(gomock.Any(), serverID).Return(&iaas.Server{ Name: "foo", }, nil) @@ -130,7 +130,7 @@ var _ = Describe("Node Controller", func() { }) It("successfully get the instance when old regional provider ID is there", func() { - nodeMockClient.EXPECT().GetServer(gomock.Any(), projectID, region, serverID).Return(&iaas.Server{ + nodeMockClient.EXPECT().GetServer(gomock.Any(), serverID).Return(&iaas.Server{ Name: "foo", }, nil) @@ -147,7 +147,7 @@ var _ = Describe("Node Controller", func() { }) It("error when list server fails", func() { - nodeMockClient.EXPECT().ListServers(gomock.Any(), projectID, region).Return(nil, fmt.Errorf("failed due to some reason")) + nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(nil, fmt.Errorf("failed due to some reason")) node := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, @@ -158,7 +158,7 @@ var _ = Describe("Node Controller", func() { }) It("does not error when get server instance not found", func() { - nodeMockClient.EXPECT().GetServer(gomock.Any(), projectID, region, serverID).Return(nil, stackit.ErrorNotFound) + nodeMockClient.EXPECT().GetServer(gomock.Any(), serverID).Return(nil, stackitclient.ErrorNotFound) node := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, @@ -175,7 +175,7 @@ var _ = Describe("Node Controller", func() { Describe("InstanceShutdown", func() { It("successfully gets the instance status with provider ID", func() { - nodeMockClient.EXPECT().ListServers(gomock.Any(), projectID, region).Return(&[]iaas.Server{ + nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(&[]iaas.Server{ { Name: "foo", Status: new(instanceStopping), @@ -192,7 +192,7 @@ var _ = Describe("Node Controller", func() { }) It("successfully gets the instance status without provider ID", func() { - nodeMockClient.EXPECT().GetServer(gomock.Any(), projectID, region, serverID).Return(&iaas.Server{ + nodeMockClient.EXPECT().GetServer(gomock.Any(), serverID).Return(&iaas.Server{ Name: "foo", Status: new("ACTIVE"), }, nil) @@ -210,7 +210,7 @@ var _ = Describe("Node Controller", func() { }) It("fails if server not found", func() { - nodeMockClient.EXPECT().ListServers(gomock.Any(), projectID, region).Return(nil, stackit.ErrorNotFound) + nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(nil, stackitclient.ErrorNotFound) node := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, @@ -224,7 +224,7 @@ var _ = Describe("Node Controller", func() { Describe("InstanceMetadata", func() { It("does not error if instance not found", func() { - nodeMockClient.EXPECT().ListServers(gomock.Any(), projectID, region).Return(&[]iaas.Server{}, nil) + nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(&[]iaas.Server{}, nil) node := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, @@ -236,7 +236,7 @@ var _ = Describe("Node Controller", func() { }) It("successfully get all the metadata values", func() { - nodeMockClient.EXPECT().ListServers(gomock.Any(), projectID, region).Return(&[]iaas.Server{ + nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(&[]iaas.Server{ { Name: "foo", Id: new(serverID), @@ -271,7 +271,7 @@ var _ = Describe("Node Controller", func() { }) It("errors when list server fails", func() { - nodeMockClient.EXPECT().ListServers(gomock.Any(), projectID, region).Return(nil, fmt.Errorf("failed due to some reason")) + nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(nil, fmt.Errorf("failed due to some reason")) node := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, diff --git a/pkg/ccm/loadbalancer.go b/pkg/ccm/loadbalancer.go index 46f485e1..7231efd2 100644 --- a/pkg/ccm/loadbalancer.go +++ b/pkg/ccm/loadbalancer.go @@ -7,6 +7,8 @@ import ( "strings" "time" + "github.com/stackitcloud/cloud-provider-stackit/pkg/cmp" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" lbwait "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api/wait" @@ -14,9 +16,6 @@ import ( "k8s.io/client-go/tools/record" cloudprovider "k8s.io/cloud-provider" "k8s.io/cloud-provider/api" - - "github.com/stackitcloud/cloud-provider-stackit/pkg/cmp" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" ) const ( @@ -40,7 +39,7 @@ type MetricsRemoteWrite struct { // LoadBalancer is used for creating and maintaining load balancers. type LoadBalancer struct { - client stackit.LoadbalancerClient + client stackitclient.LoadBalancingClient recorder record.EventRecorder // set in CloudControllerManager.Initialize projectID string opts stackitconfig.LoadBalancerOpts @@ -50,7 +49,7 @@ type LoadBalancer struct { var _ cloudprovider.LoadBalancer = (*LoadBalancer)(nil) -func NewLoadBalancer(client stackit.LoadbalancerClient, projectID string, opts stackitconfig.LoadBalancerOpts, metricsRemoteWrite *MetricsRemoteWrite) (*LoadBalancer, error) { //nolint:lll // looks weird when shortened +func NewLoadBalancer(client stackitclient.LoadBalancingClient, projectID string, opts stackitconfig.LoadBalancerOpts, metricsRemoteWrite *MetricsRemoteWrite) (*LoadBalancer, error) { //nolint:lll // looks weird when shortened // LoadBalancer.recorder is set in CloudControllerManager.Initialize return &LoadBalancer{ client: client, @@ -67,9 +66,9 @@ func NewLoadBalancer(client stackit.LoadbalancerClient, projectID string, opts s func (l *LoadBalancer) GetLoadBalancer(ctx context.Context, clusterName string, service *corev1.Service) ( status *corev1.LoadBalancerStatus, exists bool, err error, ) { - lb, err := l.client.GetLoadBalancer(ctx, l.projectID, l.GetLoadBalancerName(ctx, clusterName, service)) + lb, err := l.client.GetLoadBalancer(ctx, l.GetLoadBalancerName(ctx, clusterName, service)) switch { - case stackit.IsNotFound(err): + case stackitclient.IsNotFound(err): // Also for non-STACKIT load balancers in "update" & "updateAndCreate" mode return with no error if not found. return nil, false, nil case err != nil: @@ -112,11 +111,11 @@ func (l *LoadBalancer) EnsureLoadBalancer( //nolint:gocyclo // not really comple nodes []*corev1.Node, ) (*corev1.LoadBalancerStatus, error) { name := l.GetLoadBalancerName(ctx, clusterName, service) - lb, err := l.client.GetLoadBalancer(ctx, l.projectID, name) - if err != nil && !stackit.IsNotFound(err) { + lb, err := l.client.GetLoadBalancer(ctx, name) + if err != nil && !stackitclient.IsNotFound(err) { return nil, err } - if stackit.IsNotFound(err) { + if stackitclient.IsNotFound(err) { return l.createLoadBalancer(ctx, clusterName, service, nodes) } @@ -148,7 +147,7 @@ func (l *LoadBalancer) EnsureLoadBalancer( //nolint:gocyclo // not really comple // However, we need to copy over the version because it is required on every update. spec.Version = lb.Version spec.Name = &name - updatePayload := &loadbalancer.UpdateLoadBalancerPayload{ + updatePayload := loadbalancer.UpdateLoadBalancerPayload{ Errors: spec.Errors, ExternalAddress: spec.ExternalAddress, Listeners: spec.Listeners, @@ -163,8 +162,7 @@ func (l *LoadBalancer) EnsureLoadBalancer( //nolint:gocyclo // not really comple TargetPools: spec.TargetPools, Version: spec.Version, } - lb, err = l.client.UpdateLoadBalancer(ctx, l.projectID, name, updatePayload) - if err != nil { + if err := l.client.UpdateLoadBalancer(ctx, name, updatePayload); err != nil { return nil, fmt.Errorf("failed to update load balancer: %w", err) } // Clean up observability credentials if Argus extension is enabled. @@ -172,7 +170,7 @@ func (l *LoadBalancer) EnsureLoadBalancer( //nolint:gocyclo // not really comple // At the latest, they will be removed when the service is deleted or Argus is enabled again. // This is preferred over listing all credentials in the project on each reconciliation. if l.metricsRemoteWrite == nil && credentialsRefBeforeUpdate != nil { - err = l.client.DeleteCredentials(ctx, l.projectID, *credentialsRefBeforeUpdate) + err = l.client.DeleteCredentials(ctx, *credentialsRefBeforeUpdate) if err != nil { return nil, fmt.Errorf("delete metricsRemoteWrite credentials %q: %w", *credentialsRefBeforeUpdate, err) } @@ -217,7 +215,7 @@ func (l *LoadBalancer) createLoadBalancer(ctx context.Context, clusterName strin } spec.Name = &name - lb, createErr := l.client.CreateLoadBalancer(ctx, l.projectID, spec) + lb, createErr := l.client.CreateLoadBalancer(ctx, *spec) if createErr != nil { return nil, createErr } @@ -247,7 +245,7 @@ func (l *LoadBalancer) UpdateLoadBalancer(ctx context.Context, clusterName strin } for _, pool := range spec.TargetPools { - err := l.client.UpdateTargetPool(ctx, l.projectID, l.GetLoadBalancerName(ctx, clusterName, service), *pool.Name, loadbalancer.UpdateTargetPoolPayload(pool)) + err := l.client.UpdateTargetPool(ctx, l.GetLoadBalancerName(ctx, clusterName, service), *pool.Name, loadbalancer.UpdateTargetPoolPayload(pool)) if err != nil { return fmt.Errorf("failed to update target pool %q: %w", *pool.Name, err) } @@ -269,9 +267,9 @@ func (l *LoadBalancer) EnsureLoadBalancerDeleted( ) error { name := l.GetLoadBalancerName(ctx, clusterName, service) - lb, err := l.client.GetLoadBalancer(ctx, l.projectID, name) + lb, err := l.client.GetLoadBalancer(ctx, name) switch { - case stackit.IsNotFound(err): + case stackitclient.IsNotFound(err): return nil case err != nil: return err @@ -309,11 +307,11 @@ func (l *LoadBalancer) EnsureLoadBalancerDeleted( PlanId: lb.PlanId, Labels: lb.Labels, } - _, err = l.client.UpdateLoadBalancer(ctx, l.projectID, name, payload) + err = l.client.UpdateLoadBalancer(ctx, name, *payload) if err != nil { return fmt.Errorf("failed to update load balancer: %w", err) } - if err = l.client.DeleteCredentials(ctx, l.projectID, *credentialsRef); err != nil { + if err = l.client.DeleteCredentials(ctx, *credentialsRef); err != nil { return fmt.Errorf("delete metricsRemoteWrite credentials %q: %w", *credentialsRef, err) } } @@ -329,7 +327,7 @@ func (l *LoadBalancer) EnsureLoadBalancerDeleted( return fmt.Errorf("failed to clean up orphaned observability credentials: %w", err) } - err = l.client.DeleteLoadBalancer(ctx, l.projectID, name) + err = l.client.DeleteLoadBalancer(ctx, name) // Deleting a load balancer doesn't return an error if the load balancer cannot be found. if err != nil { return err @@ -367,7 +365,7 @@ func (l *LoadBalancer) reconcileObservabilityCredentials( Username: &l.metricsRemoteWrite.username, Password: &l.metricsRemoteWrite.password, } - c, err := l.client.CreateCredentials(ctx, l.projectID, payload) + c, err := l.client.CreateCredentials(ctx, payload) if err != nil { return nil, fmt.Errorf("create credentials: %w", err) } @@ -385,7 +383,7 @@ func (l *LoadBalancer) reconcileObservabilityCredentials( Username: &l.metricsRemoteWrite.username, Password: &l.metricsRemoteWrite.password, } - if err := l.client.UpdateCredentials(ctx, l.projectID, *credentialsRef, payload); err != nil { + if err := l.client.UpdateCredentials(ctx, *credentialsRef, payload); err != nil { return nil, fmt.Errorf("update credentials %q: %w", *credentialsRef, err) } return &loadbalancer.LoadbalancerOptionObservability{ @@ -400,13 +398,13 @@ func (l *LoadBalancer) reconcileObservabilityCredentials( // This call is expensive. // Make sure that no credentials are referenced, otherwise the deletion fails. func (l *LoadBalancer) cleanUpCredentials(ctx context.Context, name string) error { - res, err := l.client.ListCredentials(ctx, l.projectID) + res, err := l.client.ListCredentials(ctx) if err != nil { return fmt.Errorf("failed to list credentials: %w", err) } for _, credentials := range res.Credentials { if credentials.DisplayName != nil && *credentials.DisplayName == name { - err = l.client.DeleteCredentials(ctx, l.projectID, *credentials.CredentialsRef) + err = l.client.DeleteCredentials(ctx, *credentials.CredentialsRef) if err != nil { return fmt.Errorf("failed to delete credentials %q: %w", *credentials.CredentialsRef, err) } diff --git a/pkg/ccm/loadbalancer_test.go b/pkg/ccm/loadbalancer_test.go index 6a26d6a1..667efe4b 100644 --- a/pkg/ccm/loadbalancer_test.go +++ b/pkg/ccm/loadbalancer_test.go @@ -7,6 +7,8 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" + stackitclientmock "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client/mock" stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" lbwait "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api/wait" @@ -14,8 +16,6 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/cloud-provider/api" - - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" ) var notYetReadyError = api.NewRetryError("waiting for load balancer to become ready. This error is normal while the load balancer starts.", 10*time.Second).Error() @@ -27,7 +27,7 @@ const ( var _ = Describe("LoadBalancer", func() { var ( - mockClient *stackit.MockLoadbalancerClient + mockClient *stackitclientmock.MockLoadBalancingClient lbInModeIgnoreAndObs *LoadBalancer loadBalancer *LoadBalancer clusterName string @@ -41,7 +41,7 @@ var _ = Describe("LoadBalancer", func() { lbOpts = stackitconfig.LoadBalancerOpts{NetworkID: "my-network"} ctrl := gomock.NewController(GinkgoT()) - mockClient = stackit.NewMockLoadbalancerClient(ctrl) + mockClient = stackitclientmock.NewMockLoadBalancingClient(ctrl) var err error lbInModeIgnoreAndObs, err = NewLoadBalancer(mockClient, projectID, lbOpts, &MetricsRemoteWrite{ endpoint: "test-endpoint", @@ -100,7 +100,7 @@ var _ = Describe("LoadBalancer", func() { Describe("GetLoadBalancer", func() { It("should report LB does not exist", func() { - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(nil, stackit.ErrorNotFound) + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound) svc := minimalLoadBalancerService() @@ -133,7 +133,7 @@ var _ = Describe("LoadBalancer", func() { // LB has no external address yet myLb.ExternalAddress = nil } - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(myLb, nil) + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(myLb, nil) status, found, err := loadBalancer.GetLoadBalancer(context.Background(), clusterName, svc) Expect(err).NotTo(HaveOccurred()) @@ -170,7 +170,7 @@ var _ = Describe("LoadBalancer", func() { if hasPrivateAddress { myLb.PrivateAddress = new("10.20.30.40") } - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(myLb, nil) + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(myLb, nil) status, found, err := loadBalancer.GetLoadBalancer(context.Background(), clusterName, svc) Expect(err).NotTo(HaveOccurred()) @@ -190,8 +190,8 @@ var _ = Describe("LoadBalancer", func() { Describe("EnsureLoadBalancer", func() { It("ensure load balancer should trigger load balancer creation if LB doesn't exist", func() { - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(nil, stackit.ErrorNotFound) - mockClient.EXPECT().CreateLoadBalancer(gomock.Any(), projectID, gomock.Any()).MinTimes(1).Return(&loadbalancer.LoadBalancer{}, nil) + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound) + mockClient.EXPECT().CreateLoadBalancer(gomock.Any(), gomock.Any()).MinTimes(1).Return(&loadbalancer.LoadBalancer{}, nil) _, err := loadBalancer.EnsureLoadBalancer(context.Background(), clusterName, minimalLoadBalancerService(), []*corev1.Node{}) Expect(err).To(MatchError(notYetReadyError)) @@ -199,12 +199,12 @@ var _ = Describe("LoadBalancer", func() { }) It("should create a load balancer with observability configured", func() { - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(nil, stackit.ErrorNotFound) - mockClient.EXPECT().ListCredentials(gomock.Any(), projectID).Return(&loadbalancer.ListCredentialsResponse{ + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound) + mockClient.EXPECT().ListCredentials(gomock.Any()).Return(&loadbalancer.ListCredentialsResponse{ Credentials: []loadbalancer.CredentialsResponse{}, }, nil) // TODO: match payload - mockClient.EXPECT().CreateCredentials(gomock.Any(), projectID, gomock.Any()).MinTimes(1). + mockClient.EXPECT().CreateCredentials(gomock.Any(), gomock.Any()).MinTimes(1). DoAndReturn(func(_ context.Context, _ string, payload loadbalancer.CreateCredentialsPayload) (*loadbalancer.CreateCredentialsResponse, error) { return &loadbalancer.CreateCredentialsResponse{ Credential: &loadbalancer.CredentialsResponse{ @@ -214,7 +214,7 @@ var _ = Describe("LoadBalancer", func() { }, }, nil }) - mockClient.EXPECT().CreateLoadBalancer(gomock.Any(), projectID, gomock.Any()).MinTimes(1).Return(&loadbalancer.LoadBalancer{}, nil) + mockClient.EXPECT().CreateLoadBalancer(gomock.Any(), gomock.Any()).MinTimes(1).Return(&loadbalancer.LoadBalancer{}, nil) _, err := lbInModeIgnoreAndObs.EnsureLoadBalancer(context.Background(), clusterName, minimalLoadBalancerService(), []*corev1.Node{}) Expect(err).To(MatchError(notYetReadyError)) @@ -245,8 +245,8 @@ var _ = Describe("LoadBalancer", func() { PlanId: new("p10"), } - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(myLb, nil) - mockClient.EXPECT().UpdateCredentials(gomock.Any(), projectID, sampleCredentialsRef, gomock.Any()).MinTimes(1).Return(nil) + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(myLb, nil) + mockClient.EXPECT().UpdateCredentials(gomock.Any(), sampleCredentialsRef, gomock.Any()).MinTimes(1).Return(nil) _, err = lbInModeIgnoreAndObs.EnsureLoadBalancer(context.Background(), clusterName, svc, []*corev1.Node{}) Expect(err).NotTo(HaveOccurred()) @@ -274,7 +274,6 @@ var _ = Describe("LoadBalancer", func() { // For simplicity, we return the original load balancer. In reality, the updated load balancer should be returned. mockClient.EXPECT().UpdateLoadBalancer( gomock.Any(), - projectID, loadBalancer.GetLoadBalancerName(context.Background(), clusterName, svc), versionMatcher("current-version"), ).MinTimes(1).Return(myLb, nil) @@ -328,11 +327,10 @@ var _ = Describe("LoadBalancer", func() { Version: new("current-version"), } - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(myLb, nil) + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(myLb, nil) // For simplicity, we return the original load balancer. In reality, the updated load balancer should be returned. mockClient.EXPECT().UpdateLoadBalancer( gomock.Any(), - projectID, loadBalancer.GetLoadBalancerName(context.Background(), clusterName, svc), versionMatcher("current-version"), ).MinTimes(1).Return(myLb, nil) @@ -364,21 +362,20 @@ var _ = Describe("LoadBalancer", func() { Version: new("current-version"), } - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(myLb, nil) + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(myLb, nil) // Check order to ensure that the reference is removed before the credentials are removed. // The API rejects deletions of used credentials. gomock.InOrder( // For simplicity, we return the original load balancer. In reality, the updated load balancer should be returned. mockClient.EXPECT().UpdateLoadBalancer( gomock.Any(), - projectID, loadBalancer.GetLoadBalancerName(context.Background(), clusterName, svc), gomock.All( versionMatcher("current-version"), hasNoObservabilityConfigured(), ), ).MinTimes(1).Return(myLb, nil), - mockClient.EXPECT().DeleteCredentials(gomock.Any(), projectID, gomock.Any()).MinTimes(1).Return(nil), + mockClient.EXPECT().DeleteCredentials(gomock.Any(), gomock.Any()).MinTimes(1).Return(nil), ) _, err = loadBalancer.EnsureLoadBalancer(context.Background(), clusterName, svc, []*corev1.Node{}) @@ -390,11 +387,11 @@ var _ = Describe("LoadBalancer", func() { Describe("EnsureLoadBalancerDeleted", func() { It("should trigger load balancer deletion", func() { - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(&loadbalancer.LoadBalancer{}, nil) - mockClient.EXPECT().ListCredentials(gomock.Any(), projectID).Return(&loadbalancer.ListCredentialsResponse{ + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(&loadbalancer.LoadBalancer{}, nil) + mockClient.EXPECT().ListCredentials(gomock.Any()).Return(&loadbalancer.ListCredentialsResponse{ Credentials: []loadbalancer.CredentialsResponse{}, }, nil) - mockClient.EXPECT().DeleteLoadBalancer(gomock.Any(), projectID, gomock.Any()).MinTimes(1).Return(nil) + mockClient.EXPECT().DeleteLoadBalancer(gomock.Any(), gomock.Any()).MinTimes(1).Return(nil) err := loadBalancer.EnsureLoadBalancerDeleted(context.Background(), clusterName, minimalLoadBalancerService()) Expect(err).NotTo(HaveOccurred()) @@ -402,7 +399,7 @@ var _ = Describe("LoadBalancer", func() { }) It("should finalize deletion if LB API returns not found", func() { - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(nil, stackit.ErrorNotFound) + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound) err := loadBalancer.EnsureLoadBalancerDeleted(context.Background(), clusterName, minimalLoadBalancerService()) Expect(err).NotTo(HaveOccurred()) @@ -410,7 +407,7 @@ var _ = Describe("LoadBalancer", func() { }) It("should finalize deletion if load balancer is state terminating", func() { - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(&loadbalancer.LoadBalancer{ + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(&loadbalancer.LoadBalancer{ Status: new(lbwait.LOADBALANCERSTATUS_TERMINATING), }, nil) @@ -420,7 +417,7 @@ var _ = Describe("LoadBalancer", func() { }) It("should report no error if LB not found", func() { - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(nil, stackit.ErrorNotFound) + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound) svc := minimalLoadBalancerService() @@ -429,11 +426,11 @@ var _ = Describe("LoadBalancer", func() { }) It("should trigger load balancer deletion", func() { - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(&loadbalancer.LoadBalancer{}, nil) - mockClient.EXPECT().ListCredentials(gomock.Any(), projectID).Return(&loadbalancer.ListCredentialsResponse{ + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(&loadbalancer.LoadBalancer{}, nil) + mockClient.EXPECT().ListCredentials(gomock.Any()).Return(&loadbalancer.ListCredentialsResponse{ Credentials: []loadbalancer.CredentialsResponse{}, }, nil) - mockClient.EXPECT().DeleteLoadBalancer(gomock.Any(), projectID, gomock.Any()).MinTimes(1).Return(nil) + mockClient.EXPECT().DeleteLoadBalancer(gomock.Any(), gomock.Any()).MinTimes(1).Return(nil) svc := minimalLoadBalancerService() @@ -446,7 +443,7 @@ var _ = Describe("LoadBalancer", func() { svc := minimalLoadBalancerService() name := loadBalancer.GetLoadBalancerName(context.Background(), "", svc) - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(&loadbalancer.LoadBalancer{ + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(&loadbalancer.LoadBalancer{ Options: &loadbalancer.LoadBalancerOptions{ Observability: &loadbalancer.LoadbalancerOptionObservability{ Metrics: &loadbalancer.LoadbalancerOptionMetrics{ @@ -460,14 +457,14 @@ var _ = Describe("LoadBalancer", func() { Listeners: []loadbalancer.Listener{}, }, nil) gomock.InOrder( - mockClient.EXPECT().UpdateLoadBalancer(gomock.Any(), projectID, name, gomock.All( + mockClient.EXPECT().UpdateLoadBalancer(gomock.Any(), name, gomock.All( hasNoObservabilityConfigured(), externalAddressSet("8.8.4.4"), )).MinTimes(1).Return(&loadbalancer.LoadBalancer{}, nil), - mockClient.EXPECT().DeleteCredentials(gomock.Any(), projectID, sampleCredentialsRef).MinTimes(1).Return(nil), - mockClient.EXPECT().ListCredentials(gomock.Any(), projectID).Return(&loadbalancer.ListCredentialsResponse{ + mockClient.EXPECT().DeleteCredentials(gomock.Any(), sampleCredentialsRef).MinTimes(1).Return(nil), + mockClient.EXPECT().ListCredentials(gomock.Any()).Return(&loadbalancer.ListCredentialsResponse{ Credentials: []loadbalancer.CredentialsResponse{}, }, nil), - mockClient.EXPECT().DeleteLoadBalancer(gomock.Any(), projectID, name).MinTimes(1).Return(nil), + mockClient.EXPECT().DeleteLoadBalancer(gomock.Any(), name).MinTimes(1).Return(nil), ) err := loadBalancer.EnsureLoadBalancerDeleted(context.Background(), clusterName, svc) @@ -480,7 +477,7 @@ var _ = Describe("LoadBalancer", func() { delete(svc.Annotations, externalIPAnnotation) name := loadBalancer.GetLoadBalancerName(context.Background(), "", svc) - mockClient.EXPECT().GetLoadBalancer(gomock.Any(), projectID, gomock.Any()).Return(&loadbalancer.LoadBalancer{ + mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(&loadbalancer.LoadBalancer{ Options: &loadbalancer.LoadBalancerOptions{ Observability: &loadbalancer.LoadbalancerOptionObservability{ Metrics: &loadbalancer.LoadbalancerOptionMetrics{ @@ -494,14 +491,14 @@ var _ = Describe("LoadBalancer", func() { Listeners: []loadbalancer.Listener{}, }, nil) gomock.InOrder( - mockClient.EXPECT().UpdateLoadBalancer(gomock.Any(), projectID, name, gomock.All( + mockClient.EXPECT().UpdateLoadBalancer(gomock.Any(), name, gomock.All( hasNoObservabilityConfigured(), externalAddressNotSet(), ephemeralAddress(), )).MinTimes(1).Return(&loadbalancer.LoadBalancer{}, nil), - mockClient.EXPECT().DeleteCredentials(gomock.Any(), projectID, sampleCredentialsRef).MinTimes(1).Return(nil), - mockClient.EXPECT().ListCredentials(gomock.Any(), projectID).Return(&loadbalancer.ListCredentialsResponse{ + mockClient.EXPECT().DeleteCredentials(gomock.Any(), sampleCredentialsRef).MinTimes(1).Return(nil), + mockClient.EXPECT().ListCredentials(gomock.Any()).Return(&loadbalancer.ListCredentialsResponse{ Credentials: []loadbalancer.CredentialsResponse{}, }, nil), - mockClient.EXPECT().DeleteLoadBalancer(gomock.Any(), projectID, name).MinTimes(1).Return(nil), + mockClient.EXPECT().DeleteLoadBalancer(gomock.Any(), name).MinTimes(1).Return(nil), ) err := loadBalancer.EnsureLoadBalancerDeleted(context.Background(), clusterName, svc) @@ -511,7 +508,7 @@ var _ = Describe("LoadBalancer", func() { Describe("UpdateLoadBalancer", func() { It("should update targets", func() { - mockClient.EXPECT().UpdateTargetPool(gomock.Any(), projectID, gomock.Any(), "my-port", gomock.Any()).MinTimes(1) + mockClient.EXPECT().UpdateTargetPool(gomock.Any(), gomock.Any(), "my-port", gomock.Any()).MinTimes(1) svc := &corev1.Service{ ObjectMeta: metav1.ObjectMeta{ @@ -546,7 +543,7 @@ var _ = Describe("LoadBalancer", func() { It("should update credentials if they exist", func() { pushURL := "test-endpoint" - mockClient.EXPECT().UpdateCredentials(gomock.Any(), projectID, sampleCredentialsRef, gomock.Any()).MinTimes(1).Return(nil) + mockClient.EXPECT().UpdateCredentials(gomock.Any(), sampleCredentialsRef, gomock.Any()).MinTimes(1).Return(nil) credentialRef, err := lbInModeIgnoreAndObs.reconcileObservabilityCredentials(context.Background(), &loadbalancer.LoadBalancer{ Name: new(sampleLBName), Options: &loadbalancer.LoadBalancerOptions{ @@ -568,7 +565,7 @@ var _ = Describe("LoadBalancer", func() { It("should try to update credentials if they exist", func() { errTest := errors.New("update credentials test error") - mockClient.EXPECT().UpdateCredentials(gomock.Any(), projectID, sampleCredentialsRef, gomock.Any()).MinTimes(1).Return(errTest) + mockClient.EXPECT().UpdateCredentials(gomock.Any(), sampleCredentialsRef, gomock.Any()).MinTimes(1).Return(errTest) credentialRef, err := lbInModeIgnoreAndObs.reconcileObservabilityCredentials(context.Background(), &loadbalancer.LoadBalancer{ Name: new(sampleLBName), Options: &loadbalancer.LoadBalancerOptions{ @@ -584,10 +581,10 @@ var _ = Describe("LoadBalancer", func() { }) It("should create credentials if they do not exist", func() { - mockClient.EXPECT().ListCredentials(gomock.Any(), projectID).Return(&loadbalancer.ListCredentialsResponse{ + mockClient.EXPECT().ListCredentials(gomock.Any()).Return(&loadbalancer.ListCredentialsResponse{ Credentials: []loadbalancer.CredentialsResponse{}, }, nil) - mockClient.EXPECT().CreateCredentials(gomock.Any(), projectID, gomock.Any()).MinTimes(1).Return(&loadbalancer.CreateCredentialsResponse{ + mockClient.EXPECT().CreateCredentials(gomock.Any(), gomock.Any()).MinTimes(1).Return(&loadbalancer.CreateCredentialsResponse{ Credential: &loadbalancer.CredentialsResponse{ CredentialsRef: new(sampleCredentialsRef), DisplayName: new(sampleLBName), @@ -607,11 +604,11 @@ var _ = Describe("LoadBalancer", func() { }) It("should return error if creating new credentials fails", func() { - mockClient.EXPECT().ListCredentials(gomock.Any(), projectID).Return(&loadbalancer.ListCredentialsResponse{ + mockClient.EXPECT().ListCredentials(gomock.Any()).Return(&loadbalancer.ListCredentialsResponse{ Credentials: []loadbalancer.CredentialsResponse{}, }, nil) errTest := errors.New("delete credentials test error") - mockClient.EXPECT().CreateCredentials(gomock.Any(), projectID, gomock.Any()).MinTimes(1).Return(nil, errTest) + mockClient.EXPECT().CreateCredentials(gomock.Any(), gomock.Any()).MinTimes(1).Return(nil, errTest) credentialRef, err := lbInModeIgnoreAndObs.reconcileObservabilityCredentials(context.Background(), &loadbalancer.LoadBalancer{ Name: new(sampleLBName), }, sampleLBName) @@ -623,7 +620,7 @@ var _ = Describe("LoadBalancer", func() { Describe("cleanUpCredentials", func() { It("should delete matching and only matching observability credentials", func() { gomock.InOrder( - mockClient.EXPECT().ListCredentials(gomock.Any(), projectID).Return(&loadbalancer.ListCredentialsResponse{ + mockClient.EXPECT().ListCredentials(gomock.Any()).Return(&loadbalancer.ListCredentialsResponse{ Credentials: []loadbalancer.CredentialsResponse{ { CredentialsRef: new("matching-1"), @@ -647,8 +644,8 @@ var _ = Describe("LoadBalancer", func() { }, }, }, nil).MinTimes(1), - mockClient.EXPECT().DeleteCredentials(gomock.Any(), projectID, "matching-1").MinTimes(1), - mockClient.EXPECT().DeleteCredentials(gomock.Any(), projectID, "matching-2").MinTimes(1), + mockClient.EXPECT().DeleteCredentials(gomock.Any(), "matching-1").MinTimes(1), + mockClient.EXPECT().DeleteCredentials(gomock.Any(), "matching-2").MinTimes(1), ) Expect(lbInModeIgnoreAndObs.cleanUpCredentials(context.Background(), "my-loadbalancer")).To(Succeed()) }) diff --git a/pkg/ccm/stackit.go b/pkg/ccm/stackit.go index 94e72246..d405425b 100644 --- a/pkg/ccm/stackit.go +++ b/pkg/ccm/stackit.go @@ -6,10 +6,9 @@ import ( "io" "os" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" sdkconfig "github.com/stackitcloud/stackit-sdk-go/core/config" - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" "gopkg.in/yaml.v3" corev1 "k8s.io/api/core/v1" "k8s.io/client-go/kubernetes/scheme" @@ -19,7 +18,6 @@ import ( "k8s.io/klog/v2" "github.com/stackitcloud/cloud-provider-stackit/pkg/metrics" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" ) const ( @@ -135,13 +133,9 @@ func NewCloudControllerManager(cfg *stackitconfig.CCMConfig, obs *MetricsRemoteW lbOpts = append(lbOpts, sdkconfig.WithToken(lbEmergencyAPIToken)) } - innerClient, err := loadbalancer.NewAPIClient(lbOpts...) + loadbalancingClient, err := stackitclient.New(cfg.Global.Region, cfg.Global.ProjectID).LoadBalancing(lbOpts) if err != nil { - return nil, err - } - client, err := stackit.NewLoadbalancerClient(innerClient.DefaultAPI, cfg.Global.Region) - if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create Load Balancing stackitclient: %v", err) } iaasOpts := []sdkconfig.ConfigurationOption{ @@ -152,20 +146,17 @@ func NewCloudControllerManager(cfg *stackitconfig.CCMConfig, obs *MetricsRemoteW iaasOpts = append(iaasOpts, sdkconfig.WithEndpoint(cfg.Global.APIEndpoints.IaasAPI)) } - iaasInnerClient, err := iaas.NewAPIClient(iaasOpts...) + iaasClient, err := stackitclient.New(cfg.Global.Region, cfg.Global.ProjectID).IaaS(iaasOpts) if err != nil { - return nil, fmt.Errorf("failed to create IaaS client: %v", err) + return nil, fmt.Errorf("failed to create IaaS stackitclient: %v", err) } - nodeClient, err := stackit.NewNodeClient(iaasInnerClient) - if err != nil { - return nil, fmt.Errorf("failed to create Node client: %v", err) - } - instances, err := NewInstance(nodeClient, cfg.Global.ProjectID, cfg.Global.Region) + + instances, err := NewInstance(iaasClient, cfg.Global.ProjectID, cfg.Global.Region) if err != nil { return nil, err } - lb, err := NewLoadBalancer(client, cfg.Global.ProjectID, cfg.LoadBalancer, obs) + lb, err := NewLoadBalancer(loadbalancingClient, cfg.Global.ProjectID, cfg.LoadBalancer, obs) if err != nil { return nil, err } diff --git a/pkg/csi/blockstorage/controllerserver.go b/pkg/csi/blockstorage/controllerserver.go index 8de6237e..da2a5ab8 100644 --- a/pkg/csi/blockstorage/controllerserver.go +++ b/pkg/csi/blockstorage/controllerserver.go @@ -26,7 +26,10 @@ import ( "github.com/container-storage-interface/spec/lib/go/csi" "github.com/go-viper/mapstructure/v2" "github.com/kubernetes-csi/csi-lib-utils/protosanitizer" + sharedcsi "github.com/stackitcloud/cloud-provider-stackit/pkg/csi" "github.com/stackitcloud/cloud-provider-stackit/pkg/csi/util" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" + "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/stackiterrors" iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -34,15 +37,11 @@ import ( "k8s.io/apimachinery/pkg/util/wait" "k8s.io/klog/v2" "k8s.io/utils/ptr" - - sharedcsi "github.com/stackitcloud/cloud-provider-stackit/pkg/csi" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/stackiterrors" ) type controllerServer struct { Driver *Driver - Instance stackit.IaasClient + Instance stackitclient.IaaSClient csi.UnimplementedControllerServer } @@ -127,7 +126,7 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol if volSizeGB != *vols[0].Size { return nil, status.Error(codes.AlreadyExists, "Volume Already exists with same name and different capacity") } - if *vols[0].Status != stackit.VolumeAvailableStatus { + if *vols[0].Status != stackitclient.VolumeAvailableStatus { return nil, status.Error(codes.Internal, fmt.Sprintf("Volume %s is not in available state", *vols[0].Id)) } klog.V(4).Infof("Volume %s already exists in Availability Zone: %s of size %d GiB", *vols[0].Id, vols[0].AvailabilityZone, *vols[0].Size) @@ -151,21 +150,21 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol var sourceVolID string var sourceBackupID string var sourceSnapshotID string - var volumeSourceType stackit.VolumeSourceTypes + var volumeSourceType stackitclient.VolumeSourceTypes if content != nil && content.GetSnapshot() != nil { // Backups and Snapshots are the same for Kubernetes sourceSnapshotID = content.GetSnapshot().GetSnapshotId() sourceBackupID = content.GetSnapshot().GetSnapshotId() // By default, we try to clone volumes from snapshots - volumeSourceType = stackit.SnapshotSource + volumeSourceType = stackitclient.SnapshotSource - snap, err := cloud.GetSnapshotByID(ctx, sourceSnapshotID) + snap, err := cloud.GetSnapshot(ctx, sourceSnapshotID) if stackiterrors.IgnoreNotFound(err) != nil { return nil, status.Errorf(codes.Internal, "Failed to retrieve the source snapshot %s: %v", sourceSnapshotID, err) } // If the snapshot exists but is not yet available, fail. - if err == nil && *snap.Status != stackit.SnapshotReadyStatus { + if err == nil && *snap.Status != stackitclient.SnapshotReadyStatus { return nil, status.Errorf(codes.Unavailable, "VolumeContentSource Snapshot %s is not yet available. status: %s", sourceSnapshotID, *snap.Status) } // Only continue checking if the Snapshot is found @@ -184,17 +183,17 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol // check if a Backup with the same ID exists if stackiterrors.IsNotFound(err) { var back *iaas.Backup - back, err = cloud.GetBackupByID(ctx, sourceBackupID) + back, err = cloud.GetBackup(ctx, sourceBackupID) if err != nil { // If there is an error getting the backup as well, fail. return nil, status.Errorf(codes.NotFound, "VolumeContentSource Snapshot or Backup with ID %s not found", sourceBackupID) } - if *back.Status != stackit.SnapshotReadyStatus { + if *back.Status != stackitclient.SnapshotReadyStatus { // If the backup exists but is not yet available, fail. return nil, status.Errorf(codes.Unavailable, "VolumeContentSource Backup %s is not yet available. status: %s", sourceBackupID, *back.Status) } // If an available backup is found, create the volume from the backup. Implies that a Snapshot was not found. - volumeSourceType = stackit.BackupSource + volumeSourceType = stackitclient.BackupSource } } @@ -211,7 +210,7 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol if volAvailability != sourceVolume.AvailabilityZone { return nil, status.Errorf(codes.ResourceExhausted, "Volume must be in the same availability zone as source Volume. Got %s Required: %s", volAvailability, sourceVolume.AvailabilityZone) } - volumeSourceType = stackit.VolumeSource + volumeSourceType = stackitclient.VolumeSource } opts := &iaas.CreateVolumePayload{ @@ -225,7 +224,7 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol // Only set CreateVolumePayload.Source when actually creating volume from source/snapshot/backup if volumeSourceType != "" { - if volumeSourceType == stackit.SnapshotSource || volumeSourceType == stackit.VolumeSource { + if volumeSourceType == stackitclient.SnapshotSource || volumeSourceType == stackitclient.VolumeSource { // Changing the performance class while restoring from Snapshot or Volume is not supported opts.PerformanceClass = nil } @@ -241,7 +240,7 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol // The encryption config is already set for volumes created from snapshot or volume. We MUST never set it when // restoring from snapshot or volume. // TODO: Unclear if BackupSource is the same as the above or is actually changeable. IaaS is testing. - if volParams.Encrypted != nil && (volumeSourceType == "" || volumeSourceType == stackit.BackupSource) { + if volParams.Encrypted != nil && (volumeSourceType == "" || volumeSourceType == stackitclient.BackupSource) { encrypted, err := strconv.ParseBool(*volParams.Encrypted) if err != nil { return nil, status.Error(codes.InvalidArgument, "parameter encrypted must be of type boolean") @@ -253,13 +252,13 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol } } - vol, err := cloud.CreateVolume(ctx, opts) + vol, err := cloud.CreateVolume(ctx, *opts) if err != nil { klog.Errorf("Failed to CreateVolume: %v", err) return nil, status.Errorf(codes.Internal, "CreateVolume failed with error %v", err) } - targetStatus := []string{stackit.VolumeAvailableStatus} + targetStatus := []string{stackitclient.VolumeAvailableStatus} // Recheck after: 0s (immediate), 20s, 45.6s, 78.36s, 120.31s err = cloud.WaitVolumeTargetStatusWithCustomBackoff(ctx, *vol.Id, targetStatus, &wait.Backoff{ @@ -360,7 +359,7 @@ func (cs *controllerServer) ControllerPublishVolume(ctx context.Context, req *cs return nil, status.Errorf(codes.Internal, "[ControllerPublishVolume] get volume failed with error %v", err) } - _, err = cloud.GetInstanceByID(ctx, instanceID) + _, err = cloud.GetServer(ctx, instanceID) if err != nil { if stackiterrors.IsNotFound(err) { return nil, status.Errorf(codes.NotFound, "[ControllerPublishVolume] Instance %s not found", instanceID) @@ -368,7 +367,10 @@ func (cs *controllerServer) ControllerPublishVolume(ctx context.Context, req *cs return nil, status.Errorf(codes.Internal, "[ControllerPublishVolume] GetInstanceByID failed with error %v", err) } - _, err = cloud.AttachVolume(ctx, instanceID, volumeID) + payload := iaas.AddVolumeToServerPayload{ + DeleteOnTermination: new(false), + } + _, err = cloud.AttachVolume(ctx, instanceID, volumeID, payload) if err != nil { klog.Errorf("Failed to AttachVolume: %v", err) return nil, status.Errorf(codes.Internal, "[ControllerPublishVolume] Attach Volume failed with error %v", err) @@ -397,7 +399,7 @@ func (cs *controllerServer) ControllerUnpublishVolume(ctx context.Context, req * if volumeID == "" { return nil, status.Error(codes.InvalidArgument, "[ControllerUnpublishVolume] Volume ID must be provided") } - _, err := cloud.GetInstanceByID(ctx, instanceID) + _, err := cloud.GetServer(ctx, instanceID) if err != nil { if stackiterrors.IsNotFound(err) { klog.V(3).Infof("ControllerUnpublishVolume assuming volume %s is detached, because node %s does not exist", volumeID, instanceID) @@ -449,7 +451,7 @@ func (cs *controllerServer) ListVolumes(ctx context.Context, req *csi.ListVolume var volumeList []iaas.Volume // TODO: There is not pagination for listing volumes so we will just pass empty to startingToken // It's not used anyway. - volumeList, _, err = cloud.ListVolumes(ctx, maxEntries, "") + volumeList, err = cloud.ListVolumes(ctx, maxEntries, "") if err != nil { klog.Errorf("Failed to ListVolumes: %v", err) if stackiterrors.IsInvalidError(err) { @@ -474,9 +476,9 @@ func (cs *controllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateS name := req.Name volumeID := req.GetSourceVolumeId() - snapshotType := req.Parameters[stackit.SnapshotType] + snapshotType := req.Parameters[stackitclient.SnapshotType] filters := map[string]string{"Name": name} - backupMaxDurationSecondsPerGB := stackit.BackupMaxDurationSecondsPerGBDefault + backupMaxDurationSecondsPerGB := stackitclient.BackupMaxDurationSecondsPerGBDefault // Current time, used for CreatedAt var ctime *timestamppb.Timestamp @@ -535,7 +537,7 @@ func (cs *controllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateS } // Get the max duration to wait in seconds per GB of snapshot and fail if parsing fails - if item, ok := (req.Parameters)[stackit.BackupMaxDurationPerGB]; ok { + if item, ok := (req.Parameters)[stackitclient.BackupMaxDurationPerGB]; ok { backupMaxDurationSecondsPerGB, err = strconv.Atoi(item) if err != nil { klog.Errorf("Setting backup-max-duration-seconds-per-gb failed due to a parsing error: %v", err) @@ -546,7 +548,7 @@ func (cs *controllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateS // Create the snapshot if the backup does not already exist and wait for it to be ready if !backupAlreadyExists { - snap, err = cs.createSnapshot(ctx, cloud, name, volumeID, req.Parameters) + snap, err = cs.createSnapshot(ctx, name, volumeID, req.Parameters) if err != nil { return nil, err } @@ -599,7 +601,7 @@ func (cs *controllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateS } // Necessary to get all the backup information, including size. - backup, err = cloud.GetBackupByID(ctx, *backup.Id) + backup, err = cloud.GetBackup(ctx, *backup.Id) if err != nil { klog.Errorf("Failed to GetBackupByID after backup creation: %v", err) return nil, status.Error(codes.Internal, fmt.Sprintf("GetBackupByID failed with error %v", err)) @@ -622,12 +624,12 @@ func (cs *controllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateS }, nil } -func (cs *controllerServer) createSnapshot(ctx context.Context, cloud stackit.IaasClient, name, volumeID string, parameters map[string]string) (*iaas.Snapshot, error) { //nolint:lll // looks weird when shortened +func (cs *controllerServer) createSnapshot(ctx context.Context, name, volumeID string, parameters map[string]string) (*iaas.Snapshot, error) { //nolint:lll // looks weird when shortened filters := map[string]string{} filters["Name"] = name // List existing snapshots with the same name - snapshots, _, err := cloud.ListSnapshots(ctx, filters) + snapshots, err := cs.Instance.ListSnapshots(ctx, filters) if err != nil { klog.Errorf("Failed to query for existing Snapshot during CreateSnapshot: %v", err) return nil, status.Error(codes.Internal, "Failed to get snapshots") @@ -665,7 +667,15 @@ func (cs *controllerServer) createSnapshot(ctx context.Context, cloud stackit.Ia } } - snap, err := cloud.CreateSnapshot(ctx, name, volumeID, properties) + payload := iaas.CreateSnapshotPayload{ + Name: new(name), + VolumeId: volumeID, + } + if properties != nil { + payload.Labels = stackitclient.LabelsFromTags(properties) + } + + snap, err := cs.Instance.CreateSnapshot(ctx, payload) if err != nil { klog.Errorf("Failed to Create snapshot: %v", err) return nil, status.Errorf(codes.Internal, "CreateSnapshot failed with error %v", err) @@ -676,7 +686,7 @@ func (cs *controllerServer) createSnapshot(ctx context.Context, cloud stackit.Ia return snap, nil } -func (cs *controllerServer) createBackup(ctx context.Context, cloud stackit.IaasClient, name, volumeID string, snap *iaas.Snapshot, parameters map[string]string) (*iaas.Backup, error) { //nolint:lll // looks weird when shortened +func (cs *controllerServer) createBackup(ctx context.Context, cloud stackitclient.IaaSClient, name, volumeID string, snap *iaas.Snapshot, parameters map[string]string) (*iaas.Backup, error) { //nolint:lll // looks weird when shortened // Add cluster ID to the snapshot metadata // TODO: Use once IaaS has extended the label regex to allow for forward slashes and dots // properties := map[string]string{blockStorageCSIClusterIDKey: cs.Driver.clusterID} @@ -684,7 +694,7 @@ func (cs *controllerServer) createBackup(ctx context.Context, cloud stackit.Iaas // see https://github.com/kubernetes-csi/external-snapshotter/pull/375/ // Also, we don't want to tag every param, but we do honor the RecognizedCSISnapshotterParams - for _, mKey := range append(sharedcsi.RecognizedCSISnapshotterParams, stackit.SnapshotType) { + for _, mKey := range append(sharedcsi.RecognizedCSISnapshotterParams, stackitclient.SnapshotType) { if v, ok := parameters[mKey]; ok { properties[mKey] = v } @@ -712,7 +722,7 @@ func (cs *controllerServer) DeleteSnapshot(ctx context.Context, req *csi.DeleteS } // If volumeSnapshot object was linked to a cinder backup, delete the backup. - back, err := cloud.GetBackupByID(ctx, id) + back, err := cloud.GetBackup(ctx, id) if err == nil && back != nil { err = cloud.DeleteBackup(ctx, id) if err != nil { @@ -739,7 +749,7 @@ func (cs *controllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnap snapshotID := req.GetSnapshotId() if snapshotID != "" { - snap, err := cloud.GetSnapshotByID(ctx, snapshotID) + snap, err := cloud.GetSnapshot(ctx, snapshotID) if err != nil { if stackiterrors.IsNotFound(err) { klog.V(3).Infof("Snapshot %s not found", snapshotID) @@ -781,8 +791,8 @@ func (cs *controllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnap } // Only retrieve snapshots that are available - filters["Status"] = stackit.SnapshotReadyStatus - slist, nextPageToken, err = cloud.ListSnapshots(ctx, filters) + filters["Status"] = stackitclient.SnapshotReadyStatus + slist, err = cloud.ListSnapshots(ctx, filters) if err != nil { klog.Errorf("Failed to ListSnapshots: %v", err) return nil, status.Errorf(codes.Internal, "ListSnapshots failed with error %v", err) @@ -940,13 +950,16 @@ func (cs *controllerServer) ControllerExpandVolume(ctx context.Context, req *csi }, nil } - err = cloud.ExpandVolume(ctx, volumeID, *volume.Status, volSizeGB) + payload := iaas.ResizeVolumePayload{ + Size: volSizeGB, + } + err = cloud.ExpandVolume(ctx, volumeID, *volume.Status, payload) if err != nil { return nil, status.Errorf(codes.Internal, "Could not resize volume %q to size %v: %v", volumeID, volSizeGB, err) } // we need wait for the volume to be available or InUse, it might be error_extending in some scenario - targetStatus := []string{stackit.VolumeAvailableStatus, stackit.VolumeAttachedStatus} + targetStatus := []string{stackitclient.VolumeAvailableStatus, stackitclient.VolumeAttachedStatus} err = cloud.WaitVolumeTargetStatus(ctx, volumeID, targetStatus) if err != nil { klog.Errorf("Failed to WaitVolumeTargetStatus of volume %s: %v", volumeID, err) @@ -963,13 +976,13 @@ func (cs *controllerServer) ControllerExpandVolume(ctx context.Context, req *csi func getCreateVolumeResponse(vol *iaas.Volume) *csi.CreateVolumeResponse { var volsrc *csi.VolumeContentSource - var volumeSourceType stackit.VolumeSourceTypes + var volumeSourceType stackitclient.VolumeSourceTypes volCnx := map[string]string{} if vol.Source != nil { - volumeSourceType = stackit.VolumeSourceTypes(vol.Source.Type) + volumeSourceType = stackitclient.VolumeSourceTypes(vol.Source.Type) switch volumeSourceType { - case stackit.VolumeSource: + case stackitclient.VolumeSource: volCnx[ResizeRequired] = "true" volsrc = &csi.VolumeContentSource{ @@ -979,7 +992,7 @@ func getCreateVolumeResponse(vol *iaas.Volume) *csi.CreateVolumeResponse { }, }, } - case stackit.BackupSource: + case stackitclient.BackupSource: volCnx[ResizeRequired] = "true" volsrc = &csi.VolumeContentSource{ @@ -989,7 +1002,7 @@ func getCreateVolumeResponse(vol *iaas.Volume) *csi.CreateVolumeResponse { }, }, } - case stackit.SnapshotSource: + case stackitclient.SnapshotSource: volCnx[ResizeRequired] = "true" volsrc = &csi.VolumeContentSource{ @@ -1021,14 +1034,14 @@ func getCreateVolumeResponse(vol *iaas.Volume) *csi.CreateVolumeResponse { return resp } -// determineSourceIDForSourceType returns the correct sourceID for the given stackit.VolumeSourceTypes -func determineSourceIDForSourceType(srcType stackit.VolumeSourceTypes, sourceSnapshotID, sourceVolID string) string { +// determineSourceIDForSourceType returns the correct sourceID for the given stackitclient.VolumeSourceTypes +func determineSourceIDForSourceType(srcType stackitclient.VolumeSourceTypes, sourceSnapshotID, sourceVolID string) string { switch srcType { - case stackit.BackupSource: + case stackitclient.BackupSource: return sourceSnapshotID - case stackit.SnapshotSource: + case stackitclient.SnapshotSource: return sourceSnapshotID - case stackit.VolumeSource: + case stackitclient.VolumeSource: return sourceVolID default: return "" diff --git a/pkg/csi/blockstorage/controllerserver_test.go b/pkg/csi/blockstorage/controllerserver_test.go index f745c2d9..7ffd8526 100644 --- a/pkg/csi/blockstorage/controllerserver_test.go +++ b/pkg/csi/blockstorage/controllerserver_test.go @@ -11,23 +11,23 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "github.com/stackitcloud/cloud-provider-stackit/pkg/csi/util" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" + stackitclientmock "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client/mock" "github.com/stackitcloud/stackit-sdk-go/core/oapierror" iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" "go.uber.org/mock/gomock" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/timestamppb" - - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" ) var _ = Describe("ControllerServer test", Ordered, func() { var ( fakeCs *controllerServer - iaasClient *stackit.MockIaasClient + iaasClient *stackitclientmock.MockIaaSClient FakeEndpoint = "tcp://127.0.0.1:10000" FakeCluster = "cluster" - expandTargetStatus = []string{stackit.VolumeAvailableStatus, stackit.VolumeAttachedStatus} + expandTargetStatus = []string{stackitclient.VolumeAvailableStatus, stackitclient.VolumeAttachedStatus} stdCapRange = &csi.CapacityRange{ RequiredBytes: util.GIBIBYTE * 20, } @@ -51,7 +51,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { d := NewDriver(&DriverOpts{Endpoint: FakeEndpoint, ClusterID: FakeCluster}) mockCtrl := gomock.NewController(GinkgoT()) - iaasClient = stackit.NewMockIaasClient(mockCtrl) + iaasClient = stackitclientmock.NewMockIaaSClient(mockCtrl) fakeCs = NewControllerServer(d, iaasClient) }) @@ -188,7 +188,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { Id: new("existing-available-volume-id"), Name: new("new volume"), Size: new(int64(20)), - Status: new(stackit.VolumeAvailableStatus), + Status: new(stackitclient.VolumeAvailableStatus), AvailabilityZone: "eu01", }, }, nil) @@ -212,7 +212,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { Id: new("existing-available-volume-id"), Name: new("new volume"), Size: new(int64(30)), - Status: new(stackit.VolumeAvailableStatus), + Status: new(stackitclient.VolumeAvailableStatus), AvailabilityZone: "eu01", }, }, nil) @@ -234,7 +234,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { Id: new("existing-available-volume-id"), Name: new("new volume"), Size: new(int64(20)), - Status: new(stackit.VolumeAttachedStatus), + Status: new(stackitclient.VolumeAttachedStatus), AvailabilityZone: "eu01", }, }, nil) @@ -296,7 +296,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { }, } - iaasClient.EXPECT().GetSnapshotByID(gomock.Any(), "snapshot-id").Return(&iaas.Snapshot{ + iaasClient.EXPECT().GetSnapshot(gomock.Any(), "snapshot-id").Return(&iaas.Snapshot{ Id: new("snapshot-id"), Status: new("AVAILABLE"), VolumeId: "snapshot-volume-id", @@ -331,7 +331,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { }, } - iaasClient.EXPECT().GetSnapshotByID(gomock.Any(), "snapshot-id").Return(nil, fmt.Errorf("injected error")) + iaasClient.EXPECT().GetSnapshot(gomock.Any(), "snapshot-id").Return(nil, fmt.Errorf("injected error")) _, err := fakeCs.CreateVolume(context.Background(), req) Expect(err).To(HaveOccurred()) @@ -347,7 +347,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { }, } - iaasClient.EXPECT().GetSnapshotByID(gomock.Any(), "snapshot-id").Return(&iaas.Snapshot{ + iaasClient.EXPECT().GetSnapshot(gomock.Any(), "snapshot-id").Return(&iaas.Snapshot{ Id: new("snapshot-id"), Status: new("creating"), }, nil) @@ -367,11 +367,11 @@ var _ = Describe("ControllerServer test", Ordered, func() { }, } - iaasClient.EXPECT().GetSnapshotByID(gomock.Any(), "snapshot-id").Return(nil, + iaasClient.EXPECT().GetSnapshot(gomock.Any(), "snapshot-id").Return(nil, &oapierror.GenericOpenAPIError{ StatusCode: http.StatusNotFound, }) - iaasClient.EXPECT().GetBackupByID(gomock.Any(), "snapshot-id").Return(&iaas.Backup{ + iaasClient.EXPECT().GetBackup(gomock.Any(), "snapshot-id").Return(&iaas.Backup{ Status: new("AVAILABLE"), AvailabilityZone: new("eu01"), }, nil) @@ -406,7 +406,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { }, } - iaasClient.EXPECT().GetSnapshotByID(gomock.Any(), "snapshot-id").Return(&iaas.Snapshot{ + iaasClient.EXPECT().GetSnapshot(gomock.Any(), "snapshot-id").Return(&iaas.Snapshot{ Id: new("snapshot-id"), VolumeId: "volume-id", Status: new("AVAILABLE"), @@ -432,11 +432,11 @@ var _ = Describe("ControllerServer test", Ordered, func() { }, } - iaasClient.EXPECT().GetSnapshotByID(gomock.Any(), "snapshot-id").Return(nil, + iaasClient.EXPECT().GetSnapshot(gomock.Any(), "snapshot-id").Return(nil, &oapierror.GenericOpenAPIError{ StatusCode: http.StatusNotFound, }) - iaasClient.EXPECT().GetBackupByID(gomock.Any(), "snapshot-id").Return(nil, + iaasClient.EXPECT().GetBackup(gomock.Any(), "snapshot-id").Return(nil, &oapierror.GenericOpenAPIError{ StatusCode: http.StatusNotFound, }) @@ -456,11 +456,11 @@ var _ = Describe("ControllerServer test", Ordered, func() { }, } - iaasClient.EXPECT().GetSnapshotByID(gomock.Any(), "snapshot-id").Return(nil, + iaasClient.EXPECT().GetSnapshot(gomock.Any(), "snapshot-id").Return(nil, &oapierror.GenericOpenAPIError{ StatusCode: http.StatusNotFound, }) - iaasClient.EXPECT().GetBackupByID(gomock.Any(), "snapshot-id").Return(&iaas.Backup{ + iaasClient.EXPECT().GetBackup(gomock.Any(), "snapshot-id").Return(&iaas.Backup{ Status: new("creating"), }, nil) @@ -649,7 +649,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { VolumeCapability: stdVolCap, } iaasClient.EXPECT().GetVolume(gomock.Any(), req.VolumeId).Return(&iaas.Volume{}, nil) - iaasClient.EXPECT().GetInstanceByID(gomock.Any(), "fake").Return(&iaas.Server{}, nil) + iaasClient.EXPECT().GetServer(gomock.Any(), "fake").Return(&iaas.Server{}, nil) iaasClient.EXPECT().AttachVolume(gomock.Any(), req.NodeId, req.VolumeId).Return(req.VolumeId, nil) iaasClient.EXPECT().WaitDiskAttached(gomock.Any(), req.NodeId, req.VolumeId).Return(nil) _, err := fakeCs.ControllerPublishVolume(context.Background(), req) @@ -662,7 +662,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { VolumeId: "fake", NodeId: "fake", } - iaasClient.EXPECT().GetInstanceByID(gomock.Any(), "fake").Return(&iaas.Server{}, nil) + iaasClient.EXPECT().GetServer(gomock.Any(), "fake").Return(&iaas.Server{}, nil) iaasClient.EXPECT().DetachVolume(gomock.Any(), req.NodeId, req.VolumeId).Return(nil) iaasClient.EXPECT().WaitDiskDetached(gomock.Any(), req.NodeId, req.VolumeId).Return(nil) _, err := fakeCs.ControllerUnpublishVolume(context.Background(), req) @@ -694,9 +694,9 @@ var _ = Describe("ControllerServer test", Ordered, func() { volSizeGB := util.RoundUpSize(req.GetCapacityRange().GetRequiredBytes(), util.GIBIBYTE) iaasClient.EXPECT().GetVolume(gomock.Any(), req.VolumeId).Return(&iaas.Volume{ Size: new(int64(10)), - Status: new(stackit.VolumeAvailableStatus), + Status: new(stackitclient.VolumeAvailableStatus), }, nil) - iaasClient.EXPECT().ExpandVolume(gomock.Any(), req.VolumeId, stackit.VolumeAvailableStatus, volSizeGB).Return(nil) + iaasClient.EXPECT().ExpandVolume(gomock.Any(), req.VolumeId, stackitclient.VolumeAvailableStatus, volSizeGB).Return(nil) iaasClient.EXPECT().WaitVolumeTargetStatus(gomock.Any(), req.VolumeId, expandTargetStatus).Return(nil) _, err := fakeCs.ControllerExpandVolume(context.Background(), req) Expect(err).To(Not(HaveOccurred())) @@ -758,7 +758,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { // Actually create the backup from the snapshot iaasClient.EXPECT().CreateBackup(gomock.Any(), "fake-snapshot", req.GetSourceVolumeId(), "fake-snapshot", gomock.Any()).Return(expectedBackup, nil) - iaasClient.EXPECT().WaitBackupReady(gomock.Any(), "fake-backup", *expectedSnap.Size, stackit.BackupMaxDurationSecondsPerGBDefault). + iaasClient.EXPECT().WaitBackupReady(gomock.Any(), "fake-backup", *expectedSnap.Size, stackitclient.BackupMaxDurationSecondsPerGBDefault). Return(new("AVAILABLE"), nil) iaasClient.EXPECT().GetBackupByID(gomock.Any(), "fake-backup").Return(expectedBackup, nil) @@ -780,8 +780,8 @@ var _ = Describe("ControllerServer test", Ordered, func() { } iaasClient.EXPECT().ListBackups(gomock.Any(), gomock.Any()).Return([]iaas.Backup{*expectedBackup}, nil) - iaasClient.EXPECT().WaitBackupReady(gomock.Any(), "fake-backup", int64(0), stackit.BackupMaxDurationSecondsPerGBDefault).Return(new("AVAILABLE"), nil) - iaasClient.EXPECT().GetBackupByID(gomock.Any(), "fake-backup").Return(expectedBackup, nil) + iaasClient.EXPECT().WaitBackupReady(gomock.Any(), "fake-backup", int64(0), stackitclient.BackupMaxDurationSecondsPerGBDefault).Return(new("AVAILABLE"), nil) + iaasClient.EXPECT().GetBackup(gomock.Any(), "fake-backup").Return(expectedBackup, nil) // Remove the snapshot after the backup is created iaasClient.EXPECT().DeleteSnapshot(gomock.Any(), *expectedBackup.SnapshotId).Return(nil) @@ -817,11 +817,11 @@ var _ = Describe("ControllerServer test", Ordered, func() { }) It("should honor custom wait time for backup creation", func() { req.Parameters = map[string]string{ - stackit.BackupMaxDurationPerGB: "120", - stackit.SnapshotType: "backup", + stackitclient.BackupMaxDurationPerGB: "120", + stackitclient.SnapshotType: "backup", } - customWaitTime, err := strconv.Atoi((req.Parameters)[stackit.BackupMaxDurationPerGB]) + customWaitTime, err := strconv.Atoi((req.Parameters)[stackitclient.BackupMaxDurationPerGB]) Expect(err).To(Not(HaveOccurred())) // TODO: Use once IaaS has extended the label regex to allow for forward slashes and dots @@ -854,7 +854,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { // Actually create the backup from the snapshot iaasClient.EXPECT().CreateBackup(gomock.Any(), "fake-snapshot", req.GetSourceVolumeId(), "fake-snapshot", gomock.Any()).Return(expectedBackup, nil) iaasClient.EXPECT().WaitBackupReady(gomock.Any(), "fake-backup", *expectedSnap.Size, customWaitTime).Return(new("AVAILABLE"), nil) - iaasClient.EXPECT().GetBackupByID(gomock.Any(), "fake-backup").Return(expectedBackup, nil) + iaasClient.EXPECT().GetBackup(gomock.Any(), "fake-backup").Return(expectedBackup, nil) // Remove the snapshot after the backup is created iaasClient.EXPECT().DeleteSnapshot(gomock.Any(), "fake-snapshot").Return(nil) @@ -954,7 +954,7 @@ var _ = Describe("ControllerServer test", Ordered, func() { }, }, } - iaasClient.EXPECT().GetSnapshotByID(gomock.Any(), "special-snapshot").Return(&iaas.Snapshot{ + iaasClient.EXPECT().GetSnapshot(gomock.Any(), "special-snapshot").Return(&iaas.Snapshot{ Id: new("special-snapshot"), VolumeId: "fake", Size: new(int64(10)), diff --git a/pkg/csi/blockstorage/driver.go b/pkg/csi/blockstorage/driver.go index 56fd1818..db641777 100644 --- a/pkg/csi/blockstorage/driver.go +++ b/pkg/csi/blockstorage/driver.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/container-storage-interface/spec/lib/go/csi" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" corev1 "k8s.io/client-go/listers/core/v1" "k8s.io/klog/v2" @@ -134,7 +134,7 @@ func (d *Driver) AddNodeServiceCapabilities(nl []csi.NodeServiceCapability_RPC_T return nil } -func (d *Driver) SetupControllerService(instance stackit.IaasClient) { +func (d *Driver) SetupControllerService(instance stackitclient.IaaSClient) { klog.Info("Providing controller service") d.cs = NewControllerServer(d, instance) } diff --git a/pkg/csi/blockstorage/sanity_test.go b/pkg/csi/blockstorage/sanity_test.go index b17b0b6e..c6c8331d 100644 --- a/pkg/csi/blockstorage/sanity_test.go +++ b/pkg/csi/blockstorage/sanity_test.go @@ -12,16 +12,16 @@ import ( "github.com/google/uuid" "github.com/kubernetes-csi/csi-test/v5/pkg/sanity" . "github.com/onsi/ginkgo/v2" - stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" - mountutils "k8s.io/mount-utils" - exec "k8s.io/utils/exec/testing" - "github.com/stackitcloud/cloud-provider-stackit/pkg/csi/util/mount" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" + stackitclientmock "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client/mock" + stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/metadata" "github.com/stackitcloud/stackit-sdk-go/core/oapierror" iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" "go.uber.org/mock/gomock" + mountutils "k8s.io/mount-utils" + exec "k8s.io/utils/exec/testing" ) var _ = Describe("CSI sanity test", Ordered, func() { @@ -29,7 +29,7 @@ var _ = Describe("CSI sanity test", Ordered, func() { var ( driver *Driver opts *DriverOpts - iaasClient *stackit.MockIaasClient + iaasClient *stackitclientmock.MockIaaSClient mountMock *mount.MockIMount metadataMock *metadata.MockIMetadata FakeEndpoint string @@ -57,7 +57,7 @@ var _ = Describe("CSI sanity test", Ordered, func() { }) // --- Initialize Mocks --- - iaasClient = stackit.NewMockIaasClient(ctrl) + iaasClient = stackitclientmock.NewMockIaaSClient(ctrl) mountMock = mount.NewMockIMount(ctrl) metadataMock = metadata.NewMockIMetadata(ctrl) @@ -90,7 +90,7 @@ var _ = Describe("CSI sanity test", Ordered, func() { Id: new(uuid.New().String()), // Create a random ID Name: opts.Name, Size: size, - Status: new(stackit.VolumeAvailableStatus), + Status: new(stackitclient.VolumeAvailableStatus), AvailabilityZone: opts.AvailabilityZone, Source: opts.Source, } @@ -161,14 +161,12 @@ var _ = Describe("CSI sanity test", Ordered, func() { iaasClient.EXPECT().CreateSnapshot( gomock.Any(), // context - gomock.Any(), // name - gomock.Any(), // volID - gomock.Any(), // tags + gomock.Any(), // payload ).DoAndReturn(func(_ context.Context, name string, volID string, _ map[string]string) (*iaas.Snapshot, error) { newSnap := &iaas.Snapshot{ Id: new(uuid.New().String()), Name: new(name), - Status: new(stackit.SnapshotReadyStatus), + Status: new(stackitclient.SnapshotReadyStatus), CreatedAt: new(time.Now()), Size: new(int64(10)), // 10 GiB VolumeId: volID, @@ -177,7 +175,7 @@ var _ = Describe("CSI sanity test", Ordered, func() { return newSnap, nil }).AnyTimes() - iaasClient.EXPECT().GetSnapshotByID( + iaasClient.EXPECT().GetServer( gomock.Any(), // context gomock.Any(), // snapshotID ).DoAndReturn(func(_ context.Context, snapshotID string) (*iaas.Snapshot, error) { @@ -249,7 +247,7 @@ var _ = Describe("CSI sanity test", Ordered, func() { gomock.Any(), // context gomock.Any(), // snapshotID ).Return( - new(string(stackit.SnapshotReadyStatus)), + new(stackitclient.SnapshotReadyStatus), nil, ).AnyTimes() @@ -274,7 +272,7 @@ var _ = Describe("CSI sanity test", Ordered, func() { return newBackup, nil }).AnyTimes() - iaasClient.EXPECT().GetBackupByID( + iaasClient.EXPECT().GetBackup( gomock.Any(), // context gomock.Any(), // backupID ).DoAndReturn(func(_ context.Context, backupID string) (*iaas.Backup, error) { @@ -306,7 +304,7 @@ var _ = Describe("CSI sanity test", Ordered, func() { // --- 4. Mock IaaS Client (Instances & Attach/Detach) --- - iaasClient.EXPECT().GetInstanceByID( + iaasClient.EXPECT().GetServer( gomock.Any(), // context gomock.Any(), // instanceID ).DoAndReturn(func(_ context.Context, instanceID string) (*iaas.Server, error) { @@ -324,6 +322,7 @@ var _ = Describe("CSI sanity test", Ordered, func() { gomock.Any(), // context gomock.Any(), // instanceID gomock.Any(), // volumeID + gomock.Any(), // payload ).DoAndReturn(func(_ context.Context, instanceID string, volumeID string) (string, error) { vol, ok := createdVolumes[volumeID] if !ok { diff --git a/pkg/csi/blockstorage/utils.go b/pkg/csi/blockstorage/utils.go index aaafc864..9e385c24 100644 --- a/pkg/csi/blockstorage/utils.go +++ b/pkg/csi/blockstorage/utils.go @@ -7,7 +7,7 @@ import ( "sync/atomic" "github.com/stackitcloud/cloud-provider-stackit/pkg/csi/util/mount" - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit" + stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/metadata" @@ -44,7 +44,7 @@ func NewVolumeCapabilityAccessMode(mode csi.VolumeCapability_AccessMode_Mode) *c } //revive:disable:unexported-return -func NewControllerServer(d *Driver, instance stackit.IaasClient) *controllerServer { +func NewControllerServer(d *Driver, instance stackitclient.IaaSClient) *controllerServer { return &controllerServer{ Driver: d, Instance: instance, diff --git a/pkg/mock/iaas/iaas.go b/pkg/mock/iaas/iaas.go deleted file mode 100644 index 92421e6e..00000000 --- a/pkg/mock/iaas/iaas.go +++ /dev/null @@ -1,3947 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api (interfaces: DefaultAPI) -// -// Generated by this command: -// -// mockgen -destination ./pkg/mock/iaas/iaas.go -package iaas github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api DefaultAPI -// - -// Package iaas is a generated GoMock package. -package iaas - -import ( - context "context" - reflect "reflect" - - v2api "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - gomock "go.uber.org/mock/gomock" -) - -// MockDefaultAPI is a mock of DefaultAPI interface. -type MockDefaultAPI struct { - ctrl *gomock.Controller - recorder *MockDefaultAPIMockRecorder - isgomock struct{} -} - -// MockDefaultAPIMockRecorder is the mock recorder for MockDefaultAPI. -type MockDefaultAPIMockRecorder struct { - mock *MockDefaultAPI -} - -// NewMockDefaultAPI creates a new mock instance. -func NewMockDefaultAPI(ctrl *gomock.Controller) *MockDefaultAPI { - mock := &MockDefaultAPI{ctrl: ctrl} - mock.recorder = &MockDefaultAPIMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockDefaultAPI) EXPECT() *MockDefaultAPIMockRecorder { - return m.recorder -} - -// AddNetworkToServer mocks base method. -func (m *MockDefaultAPI) AddNetworkToServer(ctx context.Context, projectId, region, serverId, networkId string) v2api.ApiAddNetworkToServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddNetworkToServer", ctx, projectId, region, serverId, networkId) - ret0, _ := ret[0].(v2api.ApiAddNetworkToServerRequest) - return ret0 -} - -// AddNetworkToServer indicates an expected call of AddNetworkToServer. -func (mr *MockDefaultAPIMockRecorder) AddNetworkToServer(ctx, projectId, region, serverId, networkId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddNetworkToServer", reflect.TypeOf((*MockDefaultAPI)(nil).AddNetworkToServer), ctx, projectId, region, serverId, networkId) -} - -// AddNetworkToServerExecute mocks base method. -func (m *MockDefaultAPI) AddNetworkToServerExecute(r v2api.ApiAddNetworkToServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddNetworkToServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// AddNetworkToServerExecute indicates an expected call of AddNetworkToServerExecute. -func (mr *MockDefaultAPIMockRecorder) AddNetworkToServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddNetworkToServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).AddNetworkToServerExecute), r) -} - -// AddNicToServer mocks base method. -func (m *MockDefaultAPI) AddNicToServer(ctx context.Context, projectId, region, serverId, nicId string) v2api.ApiAddNicToServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddNicToServer", ctx, projectId, region, serverId, nicId) - ret0, _ := ret[0].(v2api.ApiAddNicToServerRequest) - return ret0 -} - -// AddNicToServer indicates an expected call of AddNicToServer. -func (mr *MockDefaultAPIMockRecorder) AddNicToServer(ctx, projectId, region, serverId, nicId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddNicToServer", reflect.TypeOf((*MockDefaultAPI)(nil).AddNicToServer), ctx, projectId, region, serverId, nicId) -} - -// AddNicToServerExecute mocks base method. -func (m *MockDefaultAPI) AddNicToServerExecute(r v2api.ApiAddNicToServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddNicToServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// AddNicToServerExecute indicates an expected call of AddNicToServerExecute. -func (mr *MockDefaultAPIMockRecorder) AddNicToServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddNicToServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).AddNicToServerExecute), r) -} - -// AddPublicIpToServer mocks base method. -func (m *MockDefaultAPI) AddPublicIpToServer(ctx context.Context, projectId, region, serverId, publicIpId string) v2api.ApiAddPublicIpToServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddPublicIpToServer", ctx, projectId, region, serverId, publicIpId) - ret0, _ := ret[0].(v2api.ApiAddPublicIpToServerRequest) - return ret0 -} - -// AddPublicIpToServer indicates an expected call of AddPublicIpToServer. -func (mr *MockDefaultAPIMockRecorder) AddPublicIpToServer(ctx, projectId, region, serverId, publicIpId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddPublicIpToServer", reflect.TypeOf((*MockDefaultAPI)(nil).AddPublicIpToServer), ctx, projectId, region, serverId, publicIpId) -} - -// AddPublicIpToServerExecute mocks base method. -func (m *MockDefaultAPI) AddPublicIpToServerExecute(r v2api.ApiAddPublicIpToServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddPublicIpToServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// AddPublicIpToServerExecute indicates an expected call of AddPublicIpToServerExecute. -func (mr *MockDefaultAPIMockRecorder) AddPublicIpToServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddPublicIpToServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).AddPublicIpToServerExecute), r) -} - -// AddRoutesToRoutingTable mocks base method. -func (m *MockDefaultAPI) AddRoutesToRoutingTable(ctx context.Context, organizationId, areaId, region, routingTableId string) v2api.ApiAddRoutesToRoutingTableRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddRoutesToRoutingTable", ctx, organizationId, areaId, region, routingTableId) - ret0, _ := ret[0].(v2api.ApiAddRoutesToRoutingTableRequest) - return ret0 -} - -// AddRoutesToRoutingTable indicates an expected call of AddRoutesToRoutingTable. -func (mr *MockDefaultAPIMockRecorder) AddRoutesToRoutingTable(ctx, organizationId, areaId, region, routingTableId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRoutesToRoutingTable", reflect.TypeOf((*MockDefaultAPI)(nil).AddRoutesToRoutingTable), ctx, organizationId, areaId, region, routingTableId) -} - -// AddRoutesToRoutingTableExecute mocks base method. -func (m *MockDefaultAPI) AddRoutesToRoutingTableExecute(r v2api.ApiAddRoutesToRoutingTableRequest) (*v2api.RouteListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddRoutesToRoutingTableExecute", r) - ret0, _ := ret[0].(*v2api.RouteListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// AddRoutesToRoutingTableExecute indicates an expected call of AddRoutesToRoutingTableExecute. -func (mr *MockDefaultAPIMockRecorder) AddRoutesToRoutingTableExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRoutesToRoutingTableExecute", reflect.TypeOf((*MockDefaultAPI)(nil).AddRoutesToRoutingTableExecute), r) -} - -// AddRoutingTableToArea mocks base method. -func (m *MockDefaultAPI) AddRoutingTableToArea(ctx context.Context, organizationId, areaId, region string) v2api.ApiAddRoutingTableToAreaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddRoutingTableToArea", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiAddRoutingTableToAreaRequest) - return ret0 -} - -// AddRoutingTableToArea indicates an expected call of AddRoutingTableToArea. -func (mr *MockDefaultAPIMockRecorder) AddRoutingTableToArea(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRoutingTableToArea", reflect.TypeOf((*MockDefaultAPI)(nil).AddRoutingTableToArea), ctx, organizationId, areaId, region) -} - -// AddRoutingTableToAreaExecute mocks base method. -func (m *MockDefaultAPI) AddRoutingTableToAreaExecute(r v2api.ApiAddRoutingTableToAreaRequest) (*v2api.RoutingTable, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddRoutingTableToAreaExecute", r) - ret0, _ := ret[0].(*v2api.RoutingTable) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// AddRoutingTableToAreaExecute indicates an expected call of AddRoutingTableToAreaExecute. -func (mr *MockDefaultAPIMockRecorder) AddRoutingTableToAreaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRoutingTableToAreaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).AddRoutingTableToAreaExecute), r) -} - -// AddSecurityGroupToServer mocks base method. -func (m *MockDefaultAPI) AddSecurityGroupToServer(ctx context.Context, projectId, region, serverId, securityGroupId string) v2api.ApiAddSecurityGroupToServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddSecurityGroupToServer", ctx, projectId, region, serverId, securityGroupId) - ret0, _ := ret[0].(v2api.ApiAddSecurityGroupToServerRequest) - return ret0 -} - -// AddSecurityGroupToServer indicates an expected call of AddSecurityGroupToServer. -func (mr *MockDefaultAPIMockRecorder) AddSecurityGroupToServer(ctx, projectId, region, serverId, securityGroupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddSecurityGroupToServer", reflect.TypeOf((*MockDefaultAPI)(nil).AddSecurityGroupToServer), ctx, projectId, region, serverId, securityGroupId) -} - -// AddSecurityGroupToServerExecute mocks base method. -func (m *MockDefaultAPI) AddSecurityGroupToServerExecute(r v2api.ApiAddSecurityGroupToServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddSecurityGroupToServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// AddSecurityGroupToServerExecute indicates an expected call of AddSecurityGroupToServerExecute. -func (mr *MockDefaultAPIMockRecorder) AddSecurityGroupToServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddSecurityGroupToServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).AddSecurityGroupToServerExecute), r) -} - -// AddServiceAccountToServer mocks base method. -func (m *MockDefaultAPI) AddServiceAccountToServer(ctx context.Context, projectId, region, serverId, serviceAccountMail string) v2api.ApiAddServiceAccountToServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddServiceAccountToServer", ctx, projectId, region, serverId, serviceAccountMail) - ret0, _ := ret[0].(v2api.ApiAddServiceAccountToServerRequest) - return ret0 -} - -// AddServiceAccountToServer indicates an expected call of AddServiceAccountToServer. -func (mr *MockDefaultAPIMockRecorder) AddServiceAccountToServer(ctx, projectId, region, serverId, serviceAccountMail any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddServiceAccountToServer", reflect.TypeOf((*MockDefaultAPI)(nil).AddServiceAccountToServer), ctx, projectId, region, serverId, serviceAccountMail) -} - -// AddServiceAccountToServerExecute mocks base method. -func (m *MockDefaultAPI) AddServiceAccountToServerExecute(r v2api.ApiAddServiceAccountToServerRequest) (*v2api.ServiceAccountMailListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddServiceAccountToServerExecute", r) - ret0, _ := ret[0].(*v2api.ServiceAccountMailListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// AddServiceAccountToServerExecute indicates an expected call of AddServiceAccountToServerExecute. -func (mr *MockDefaultAPIMockRecorder) AddServiceAccountToServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddServiceAccountToServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).AddServiceAccountToServerExecute), r) -} - -// AddVolumeToServer mocks base method. -func (m *MockDefaultAPI) AddVolumeToServer(ctx context.Context, projectId, region, serverId, volumeId string) v2api.ApiAddVolumeToServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddVolumeToServer", ctx, projectId, region, serverId, volumeId) - ret0, _ := ret[0].(v2api.ApiAddVolumeToServerRequest) - return ret0 -} - -// AddVolumeToServer indicates an expected call of AddVolumeToServer. -func (mr *MockDefaultAPIMockRecorder) AddVolumeToServer(ctx, projectId, region, serverId, volumeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddVolumeToServer", reflect.TypeOf((*MockDefaultAPI)(nil).AddVolumeToServer), ctx, projectId, region, serverId, volumeId) -} - -// AddVolumeToServerExecute mocks base method. -func (m *MockDefaultAPI) AddVolumeToServerExecute(r v2api.ApiAddVolumeToServerRequest) (*v2api.VolumeAttachment, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddVolumeToServerExecute", r) - ret0, _ := ret[0].(*v2api.VolumeAttachment) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// AddVolumeToServerExecute indicates an expected call of AddVolumeToServerExecute. -func (mr *MockDefaultAPIMockRecorder) AddVolumeToServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddVolumeToServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).AddVolumeToServerExecute), r) -} - -// CreateAffinityGroup mocks base method. -func (m *MockDefaultAPI) CreateAffinityGroup(ctx context.Context, projectId, region string) v2api.ApiCreateAffinityGroupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateAffinityGroup", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateAffinityGroupRequest) - return ret0 -} - -// CreateAffinityGroup indicates an expected call of CreateAffinityGroup. -func (mr *MockDefaultAPIMockRecorder) CreateAffinityGroup(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAffinityGroup", reflect.TypeOf((*MockDefaultAPI)(nil).CreateAffinityGroup), ctx, projectId, region) -} - -// CreateAffinityGroupExecute mocks base method. -func (m *MockDefaultAPI) CreateAffinityGroupExecute(r v2api.ApiCreateAffinityGroupRequest) (*v2api.AffinityGroup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateAffinityGroupExecute", r) - ret0, _ := ret[0].(*v2api.AffinityGroup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateAffinityGroupExecute indicates an expected call of CreateAffinityGroupExecute. -func (mr *MockDefaultAPIMockRecorder) CreateAffinityGroupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAffinityGroupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateAffinityGroupExecute), r) -} - -// CreateBackup mocks base method. -func (m *MockDefaultAPI) CreateBackup(ctx context.Context, projectId, region string) v2api.ApiCreateBackupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateBackup", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateBackupRequest) - return ret0 -} - -// CreateBackup indicates an expected call of CreateBackup. -func (mr *MockDefaultAPIMockRecorder) CreateBackup(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateBackup", reflect.TypeOf((*MockDefaultAPI)(nil).CreateBackup), ctx, projectId, region) -} - -// CreateBackupExecute mocks base method. -func (m *MockDefaultAPI) CreateBackupExecute(r v2api.ApiCreateBackupRequest) (*v2api.Backup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateBackupExecute", r) - ret0, _ := ret[0].(*v2api.Backup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateBackupExecute indicates an expected call of CreateBackupExecute. -func (mr *MockDefaultAPIMockRecorder) CreateBackupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateBackupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateBackupExecute), r) -} - -// CreateImage mocks base method. -func (m *MockDefaultAPI) CreateImage(ctx context.Context, projectId, region string) v2api.ApiCreateImageRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateImage", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateImageRequest) - return ret0 -} - -// CreateImage indicates an expected call of CreateImage. -func (mr *MockDefaultAPIMockRecorder) CreateImage(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateImage", reflect.TypeOf((*MockDefaultAPI)(nil).CreateImage), ctx, projectId, region) -} - -// CreateImageExecute mocks base method. -func (m *MockDefaultAPI) CreateImageExecute(r v2api.ApiCreateImageRequest) (*v2api.ImageCreateResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateImageExecute", r) - ret0, _ := ret[0].(*v2api.ImageCreateResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateImageExecute indicates an expected call of CreateImageExecute. -func (mr *MockDefaultAPIMockRecorder) CreateImageExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateImageExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateImageExecute), r) -} - -// CreateIsolatedNetwork mocks base method. -func (m *MockDefaultAPI) CreateIsolatedNetwork(ctx context.Context, projectId, region string) v2api.ApiCreateIsolatedNetworkRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateIsolatedNetwork", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateIsolatedNetworkRequest) - return ret0 -} - -// CreateIsolatedNetwork indicates an expected call of CreateIsolatedNetwork. -func (mr *MockDefaultAPIMockRecorder) CreateIsolatedNetwork(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateIsolatedNetwork", reflect.TypeOf((*MockDefaultAPI)(nil).CreateIsolatedNetwork), ctx, projectId, region) -} - -// CreateIsolatedNetworkExecute mocks base method. -func (m *MockDefaultAPI) CreateIsolatedNetworkExecute(r v2api.ApiCreateIsolatedNetworkRequest) (*v2api.Network, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateIsolatedNetworkExecute", r) - ret0, _ := ret[0].(*v2api.Network) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateIsolatedNetworkExecute indicates an expected call of CreateIsolatedNetworkExecute. -func (mr *MockDefaultAPIMockRecorder) CreateIsolatedNetworkExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateIsolatedNetworkExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateIsolatedNetworkExecute), r) -} - -// CreateKeyPair mocks base method. -func (m *MockDefaultAPI) CreateKeyPair(ctx context.Context) v2api.ApiCreateKeyPairRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateKeyPair", ctx) - ret0, _ := ret[0].(v2api.ApiCreateKeyPairRequest) - return ret0 -} - -// CreateKeyPair indicates an expected call of CreateKeyPair. -func (mr *MockDefaultAPIMockRecorder) CreateKeyPair(ctx any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateKeyPair", reflect.TypeOf((*MockDefaultAPI)(nil).CreateKeyPair), ctx) -} - -// CreateKeyPairExecute mocks base method. -func (m *MockDefaultAPI) CreateKeyPairExecute(r v2api.ApiCreateKeyPairRequest) (*v2api.Keypair, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateKeyPairExecute", r) - ret0, _ := ret[0].(*v2api.Keypair) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateKeyPairExecute indicates an expected call of CreateKeyPairExecute. -func (mr *MockDefaultAPIMockRecorder) CreateKeyPairExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateKeyPairExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateKeyPairExecute), r) -} - -// CreateNetwork mocks base method. -func (m *MockDefaultAPI) CreateNetwork(ctx context.Context, projectId, region string) v2api.ApiCreateNetworkRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetwork", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateNetworkRequest) - return ret0 -} - -// CreateNetwork indicates an expected call of CreateNetwork. -func (mr *MockDefaultAPIMockRecorder) CreateNetwork(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetwork", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetwork), ctx, projectId, region) -} - -// CreateNetworkArea mocks base method. -func (m *MockDefaultAPI) CreateNetworkArea(ctx context.Context, organizationId string) v2api.ApiCreateNetworkAreaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetworkArea", ctx, organizationId) - ret0, _ := ret[0].(v2api.ApiCreateNetworkAreaRequest) - return ret0 -} - -// CreateNetworkArea indicates an expected call of CreateNetworkArea. -func (mr *MockDefaultAPIMockRecorder) CreateNetworkArea(ctx, organizationId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetworkArea", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetworkArea), ctx, organizationId) -} - -// CreateNetworkAreaExecute mocks base method. -func (m *MockDefaultAPI) CreateNetworkAreaExecute(r v2api.ApiCreateNetworkAreaRequest) (*v2api.NetworkArea, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetworkAreaExecute", r) - ret0, _ := ret[0].(*v2api.NetworkArea) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateNetworkAreaExecute indicates an expected call of CreateNetworkAreaExecute. -func (mr *MockDefaultAPIMockRecorder) CreateNetworkAreaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetworkAreaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetworkAreaExecute), r) -} - -// CreateNetworkAreaRange mocks base method. -func (m *MockDefaultAPI) CreateNetworkAreaRange(ctx context.Context, organizationId, areaId, region string) v2api.ApiCreateNetworkAreaRangeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetworkAreaRange", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiCreateNetworkAreaRangeRequest) - return ret0 -} - -// CreateNetworkAreaRange indicates an expected call of CreateNetworkAreaRange. -func (mr *MockDefaultAPIMockRecorder) CreateNetworkAreaRange(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetworkAreaRange", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetworkAreaRange), ctx, organizationId, areaId, region) -} - -// CreateNetworkAreaRangeExecute mocks base method. -func (m *MockDefaultAPI) CreateNetworkAreaRangeExecute(r v2api.ApiCreateNetworkAreaRangeRequest) (*v2api.NetworkRangeListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetworkAreaRangeExecute", r) - ret0, _ := ret[0].(*v2api.NetworkRangeListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateNetworkAreaRangeExecute indicates an expected call of CreateNetworkAreaRangeExecute. -func (mr *MockDefaultAPIMockRecorder) CreateNetworkAreaRangeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetworkAreaRangeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetworkAreaRangeExecute), r) -} - -// CreateNetworkAreaRegion mocks base method. -func (m *MockDefaultAPI) CreateNetworkAreaRegion(ctx context.Context, organizationId, areaId, region string) v2api.ApiCreateNetworkAreaRegionRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetworkAreaRegion", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiCreateNetworkAreaRegionRequest) - return ret0 -} - -// CreateNetworkAreaRegion indicates an expected call of CreateNetworkAreaRegion. -func (mr *MockDefaultAPIMockRecorder) CreateNetworkAreaRegion(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetworkAreaRegion", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetworkAreaRegion), ctx, organizationId, areaId, region) -} - -// CreateNetworkAreaRegionExecute mocks base method. -func (m *MockDefaultAPI) CreateNetworkAreaRegionExecute(r v2api.ApiCreateNetworkAreaRegionRequest) (*v2api.RegionalArea, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetworkAreaRegionExecute", r) - ret0, _ := ret[0].(*v2api.RegionalArea) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateNetworkAreaRegionExecute indicates an expected call of CreateNetworkAreaRegionExecute. -func (mr *MockDefaultAPIMockRecorder) CreateNetworkAreaRegionExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetworkAreaRegionExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetworkAreaRegionExecute), r) -} - -// CreateNetworkAreaRoute mocks base method. -func (m *MockDefaultAPI) CreateNetworkAreaRoute(ctx context.Context, organizationId, areaId, region string) v2api.ApiCreateNetworkAreaRouteRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetworkAreaRoute", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiCreateNetworkAreaRouteRequest) - return ret0 -} - -// CreateNetworkAreaRoute indicates an expected call of CreateNetworkAreaRoute. -func (mr *MockDefaultAPIMockRecorder) CreateNetworkAreaRoute(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetworkAreaRoute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetworkAreaRoute), ctx, organizationId, areaId, region) -} - -// CreateNetworkAreaRouteExecute mocks base method. -func (m *MockDefaultAPI) CreateNetworkAreaRouteExecute(r v2api.ApiCreateNetworkAreaRouteRequest) (*v2api.RouteListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetworkAreaRouteExecute", r) - ret0, _ := ret[0].(*v2api.RouteListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateNetworkAreaRouteExecute indicates an expected call of CreateNetworkAreaRouteExecute. -func (mr *MockDefaultAPIMockRecorder) CreateNetworkAreaRouteExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetworkAreaRouteExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetworkAreaRouteExecute), r) -} - -// CreateNetworkExecute mocks base method. -func (m *MockDefaultAPI) CreateNetworkExecute(r v2api.ApiCreateNetworkRequest) (*v2api.Network, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNetworkExecute", r) - ret0, _ := ret[0].(*v2api.Network) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateNetworkExecute indicates an expected call of CreateNetworkExecute. -func (mr *MockDefaultAPIMockRecorder) CreateNetworkExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNetworkExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNetworkExecute), r) -} - -// CreateNic mocks base method. -func (m *MockDefaultAPI) CreateNic(ctx context.Context, projectId, region, networkId string) v2api.ApiCreateNicRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNic", ctx, projectId, region, networkId) - ret0, _ := ret[0].(v2api.ApiCreateNicRequest) - return ret0 -} - -// CreateNic indicates an expected call of CreateNic. -func (mr *MockDefaultAPIMockRecorder) CreateNic(ctx, projectId, region, networkId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNic", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNic), ctx, projectId, region, networkId) -} - -// CreateNicExecute mocks base method. -func (m *MockDefaultAPI) CreateNicExecute(r v2api.ApiCreateNicRequest) (*v2api.NIC, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNicExecute", r) - ret0, _ := ret[0].(*v2api.NIC) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateNicExecute indicates an expected call of CreateNicExecute. -func (mr *MockDefaultAPIMockRecorder) CreateNicExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNicExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateNicExecute), r) -} - -// CreatePublicIP mocks base method. -func (m *MockDefaultAPI) CreatePublicIP(ctx context.Context, projectId, region string) v2api.ApiCreatePublicIPRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreatePublicIP", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreatePublicIPRequest) - return ret0 -} - -// CreatePublicIP indicates an expected call of CreatePublicIP. -func (mr *MockDefaultAPIMockRecorder) CreatePublicIP(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreatePublicIP", reflect.TypeOf((*MockDefaultAPI)(nil).CreatePublicIP), ctx, projectId, region) -} - -// CreatePublicIPExecute mocks base method. -func (m *MockDefaultAPI) CreatePublicIPExecute(r v2api.ApiCreatePublicIPRequest) (*v2api.PublicIp, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreatePublicIPExecute", r) - ret0, _ := ret[0].(*v2api.PublicIp) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreatePublicIPExecute indicates an expected call of CreatePublicIPExecute. -func (mr *MockDefaultAPIMockRecorder) CreatePublicIPExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreatePublicIPExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreatePublicIPExecute), r) -} - -// CreateSecurityGroup mocks base method. -func (m *MockDefaultAPI) CreateSecurityGroup(ctx context.Context, projectId, region string) v2api.ApiCreateSecurityGroupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateSecurityGroup", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateSecurityGroupRequest) - return ret0 -} - -// CreateSecurityGroup indicates an expected call of CreateSecurityGroup. -func (mr *MockDefaultAPIMockRecorder) CreateSecurityGroup(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSecurityGroup", reflect.TypeOf((*MockDefaultAPI)(nil).CreateSecurityGroup), ctx, projectId, region) -} - -// CreateSecurityGroupExecute mocks base method. -func (m *MockDefaultAPI) CreateSecurityGroupExecute(r v2api.ApiCreateSecurityGroupRequest) (*v2api.SecurityGroup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateSecurityGroupExecute", r) - ret0, _ := ret[0].(*v2api.SecurityGroup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateSecurityGroupExecute indicates an expected call of CreateSecurityGroupExecute. -func (mr *MockDefaultAPIMockRecorder) CreateSecurityGroupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSecurityGroupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateSecurityGroupExecute), r) -} - -// CreateSecurityGroupRule mocks base method. -func (m *MockDefaultAPI) CreateSecurityGroupRule(ctx context.Context, projectId, region, securityGroupId string) v2api.ApiCreateSecurityGroupRuleRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateSecurityGroupRule", ctx, projectId, region, securityGroupId) - ret0, _ := ret[0].(v2api.ApiCreateSecurityGroupRuleRequest) - return ret0 -} - -// CreateSecurityGroupRule indicates an expected call of CreateSecurityGroupRule. -func (mr *MockDefaultAPIMockRecorder) CreateSecurityGroupRule(ctx, projectId, region, securityGroupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSecurityGroupRule", reflect.TypeOf((*MockDefaultAPI)(nil).CreateSecurityGroupRule), ctx, projectId, region, securityGroupId) -} - -// CreateSecurityGroupRuleExecute mocks base method. -func (m *MockDefaultAPI) CreateSecurityGroupRuleExecute(r v2api.ApiCreateSecurityGroupRuleRequest) (*v2api.SecurityGroupRule, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateSecurityGroupRuleExecute", r) - ret0, _ := ret[0].(*v2api.SecurityGroupRule) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateSecurityGroupRuleExecute indicates an expected call of CreateSecurityGroupRuleExecute. -func (mr *MockDefaultAPIMockRecorder) CreateSecurityGroupRuleExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSecurityGroupRuleExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateSecurityGroupRuleExecute), r) -} - -// CreateServer mocks base method. -func (m *MockDefaultAPI) CreateServer(ctx context.Context, projectId, region string) v2api.ApiCreateServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateServer", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateServerRequest) - return ret0 -} - -// CreateServer indicates an expected call of CreateServer. -func (mr *MockDefaultAPIMockRecorder) CreateServer(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateServer", reflect.TypeOf((*MockDefaultAPI)(nil).CreateServer), ctx, projectId, region) -} - -// CreateServerExecute mocks base method. -func (m *MockDefaultAPI) CreateServerExecute(r v2api.ApiCreateServerRequest) (*v2api.Server, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateServerExecute", r) - ret0, _ := ret[0].(*v2api.Server) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateServerExecute indicates an expected call of CreateServerExecute. -func (mr *MockDefaultAPIMockRecorder) CreateServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateServerExecute), r) -} - -// CreateSnapshot mocks base method. -func (m *MockDefaultAPI) CreateSnapshot(ctx context.Context, projectId, region string) v2api.ApiCreateSnapshotRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateSnapshot", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateSnapshotRequest) - return ret0 -} - -// CreateSnapshot indicates an expected call of CreateSnapshot. -func (mr *MockDefaultAPIMockRecorder) CreateSnapshot(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSnapshot", reflect.TypeOf((*MockDefaultAPI)(nil).CreateSnapshot), ctx, projectId, region) -} - -// CreateSnapshotExecute mocks base method. -func (m *MockDefaultAPI) CreateSnapshotExecute(r v2api.ApiCreateSnapshotRequest) (*v2api.Snapshot, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateSnapshotExecute", r) - ret0, _ := ret[0].(*v2api.Snapshot) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateSnapshotExecute indicates an expected call of CreateSnapshotExecute. -func (mr *MockDefaultAPIMockRecorder) CreateSnapshotExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSnapshotExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateSnapshotExecute), r) -} - -// CreateVolume mocks base method. -func (m *MockDefaultAPI) CreateVolume(ctx context.Context, projectId, region string) v2api.ApiCreateVolumeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateVolume", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateVolumeRequest) - return ret0 -} - -// CreateVolume indicates an expected call of CreateVolume. -func (mr *MockDefaultAPIMockRecorder) CreateVolume(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVolume", reflect.TypeOf((*MockDefaultAPI)(nil).CreateVolume), ctx, projectId, region) -} - -// CreateVolumeExecute mocks base method. -func (m *MockDefaultAPI) CreateVolumeExecute(r v2api.ApiCreateVolumeRequest) (*v2api.Volume, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateVolumeExecute", r) - ret0, _ := ret[0].(*v2api.Volume) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateVolumeExecute indicates an expected call of CreateVolumeExecute. -func (mr *MockDefaultAPIMockRecorder) CreateVolumeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVolumeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateVolumeExecute), r) -} - -// DeallocateServer mocks base method. -func (m *MockDefaultAPI) DeallocateServer(ctx context.Context, projectId, region, serverId string) v2api.ApiDeallocateServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeallocateServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiDeallocateServerRequest) - return ret0 -} - -// DeallocateServer indicates an expected call of DeallocateServer. -func (mr *MockDefaultAPIMockRecorder) DeallocateServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeallocateServer", reflect.TypeOf((*MockDefaultAPI)(nil).DeallocateServer), ctx, projectId, region, serverId) -} - -// DeallocateServerExecute mocks base method. -func (m *MockDefaultAPI) DeallocateServerExecute(r v2api.ApiDeallocateServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeallocateServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeallocateServerExecute indicates an expected call of DeallocateServerExecute. -func (mr *MockDefaultAPIMockRecorder) DeallocateServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeallocateServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeallocateServerExecute), r) -} - -// DeleteAffinityGroup mocks base method. -func (m *MockDefaultAPI) DeleteAffinityGroup(ctx context.Context, projectId, region, affinityGroupId string) v2api.ApiDeleteAffinityGroupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteAffinityGroup", ctx, projectId, region, affinityGroupId) - ret0, _ := ret[0].(v2api.ApiDeleteAffinityGroupRequest) - return ret0 -} - -// DeleteAffinityGroup indicates an expected call of DeleteAffinityGroup. -func (mr *MockDefaultAPIMockRecorder) DeleteAffinityGroup(ctx, projectId, region, affinityGroupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAffinityGroup", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteAffinityGroup), ctx, projectId, region, affinityGroupId) -} - -// DeleteAffinityGroupExecute mocks base method. -func (m *MockDefaultAPI) DeleteAffinityGroupExecute(r v2api.ApiDeleteAffinityGroupRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteAffinityGroupExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteAffinityGroupExecute indicates an expected call of DeleteAffinityGroupExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteAffinityGroupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAffinityGroupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteAffinityGroupExecute), r) -} - -// DeleteBackup mocks base method. -func (m *MockDefaultAPI) DeleteBackup(ctx context.Context, projectId, region, backupId string) v2api.ApiDeleteBackupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteBackup", ctx, projectId, region, backupId) - ret0, _ := ret[0].(v2api.ApiDeleteBackupRequest) - return ret0 -} - -// DeleteBackup indicates an expected call of DeleteBackup. -func (mr *MockDefaultAPIMockRecorder) DeleteBackup(ctx, projectId, region, backupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteBackup", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteBackup), ctx, projectId, region, backupId) -} - -// DeleteBackupExecute mocks base method. -func (m *MockDefaultAPI) DeleteBackupExecute(r v2api.ApiDeleteBackupRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteBackupExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteBackupExecute indicates an expected call of DeleteBackupExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteBackupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteBackupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteBackupExecute), r) -} - -// DeleteImage mocks base method. -func (m *MockDefaultAPI) DeleteImage(ctx context.Context, projectId, region, imageId string) v2api.ApiDeleteImageRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteImage", ctx, projectId, region, imageId) - ret0, _ := ret[0].(v2api.ApiDeleteImageRequest) - return ret0 -} - -// DeleteImage indicates an expected call of DeleteImage. -func (mr *MockDefaultAPIMockRecorder) DeleteImage(ctx, projectId, region, imageId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImage", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteImage), ctx, projectId, region, imageId) -} - -// DeleteImageExecute mocks base method. -func (m *MockDefaultAPI) DeleteImageExecute(r v2api.ApiDeleteImageRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteImageExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteImageExecute indicates an expected call of DeleteImageExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteImageExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImageExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteImageExecute), r) -} - -// DeleteImageShare mocks base method. -func (m *MockDefaultAPI) DeleteImageShare(ctx context.Context, projectId, region, imageId string) v2api.ApiDeleteImageShareRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteImageShare", ctx, projectId, region, imageId) - ret0, _ := ret[0].(v2api.ApiDeleteImageShareRequest) - return ret0 -} - -// DeleteImageShare indicates an expected call of DeleteImageShare. -func (mr *MockDefaultAPIMockRecorder) DeleteImageShare(ctx, projectId, region, imageId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImageShare", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteImageShare), ctx, projectId, region, imageId) -} - -// DeleteImageShareConsumer mocks base method. -func (m *MockDefaultAPI) DeleteImageShareConsumer(ctx context.Context, projectId, region, imageId, consumerProjectId string) v2api.ApiDeleteImageShareConsumerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteImageShareConsumer", ctx, projectId, region, imageId, consumerProjectId) - ret0, _ := ret[0].(v2api.ApiDeleteImageShareConsumerRequest) - return ret0 -} - -// DeleteImageShareConsumer indicates an expected call of DeleteImageShareConsumer. -func (mr *MockDefaultAPIMockRecorder) DeleteImageShareConsumer(ctx, projectId, region, imageId, consumerProjectId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImageShareConsumer", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteImageShareConsumer), ctx, projectId, region, imageId, consumerProjectId) -} - -// DeleteImageShareConsumerExecute mocks base method. -func (m *MockDefaultAPI) DeleteImageShareConsumerExecute(r v2api.ApiDeleteImageShareConsumerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteImageShareConsumerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteImageShareConsumerExecute indicates an expected call of DeleteImageShareConsumerExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteImageShareConsumerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImageShareConsumerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteImageShareConsumerExecute), r) -} - -// DeleteImageShareExecute mocks base method. -func (m *MockDefaultAPI) DeleteImageShareExecute(r v2api.ApiDeleteImageShareRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteImageShareExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteImageShareExecute indicates an expected call of DeleteImageShareExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteImageShareExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImageShareExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteImageShareExecute), r) -} - -// DeleteKeyPair mocks base method. -func (m *MockDefaultAPI) DeleteKeyPair(ctx context.Context, keypairName string) v2api.ApiDeleteKeyPairRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteKeyPair", ctx, keypairName) - ret0, _ := ret[0].(v2api.ApiDeleteKeyPairRequest) - return ret0 -} - -// DeleteKeyPair indicates an expected call of DeleteKeyPair. -func (mr *MockDefaultAPIMockRecorder) DeleteKeyPair(ctx, keypairName any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteKeyPair", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteKeyPair), ctx, keypairName) -} - -// DeleteKeyPairExecute mocks base method. -func (m *MockDefaultAPI) DeleteKeyPairExecute(r v2api.ApiDeleteKeyPairRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteKeyPairExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteKeyPairExecute indicates an expected call of DeleteKeyPairExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteKeyPairExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteKeyPairExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteKeyPairExecute), r) -} - -// DeleteNetwork mocks base method. -func (m *MockDefaultAPI) DeleteNetwork(ctx context.Context, projectId, region, networkId string) v2api.ApiDeleteNetworkRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetwork", ctx, projectId, region, networkId) - ret0, _ := ret[0].(v2api.ApiDeleteNetworkRequest) - return ret0 -} - -// DeleteNetwork indicates an expected call of DeleteNetwork. -func (mr *MockDefaultAPIMockRecorder) DeleteNetwork(ctx, projectId, region, networkId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetwork", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetwork), ctx, projectId, region, networkId) -} - -// DeleteNetworkArea mocks base method. -func (m *MockDefaultAPI) DeleteNetworkArea(ctx context.Context, organizationId, areaId string) v2api.ApiDeleteNetworkAreaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetworkArea", ctx, organizationId, areaId) - ret0, _ := ret[0].(v2api.ApiDeleteNetworkAreaRequest) - return ret0 -} - -// DeleteNetworkArea indicates an expected call of DeleteNetworkArea. -func (mr *MockDefaultAPIMockRecorder) DeleteNetworkArea(ctx, organizationId, areaId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetworkArea", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetworkArea), ctx, organizationId, areaId) -} - -// DeleteNetworkAreaExecute mocks base method. -func (m *MockDefaultAPI) DeleteNetworkAreaExecute(r v2api.ApiDeleteNetworkAreaRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetworkAreaExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteNetworkAreaExecute indicates an expected call of DeleteNetworkAreaExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteNetworkAreaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetworkAreaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetworkAreaExecute), r) -} - -// DeleteNetworkAreaRange mocks base method. -func (m *MockDefaultAPI) DeleteNetworkAreaRange(ctx context.Context, organizationId, areaId, region, networkRangeId string) v2api.ApiDeleteNetworkAreaRangeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetworkAreaRange", ctx, organizationId, areaId, region, networkRangeId) - ret0, _ := ret[0].(v2api.ApiDeleteNetworkAreaRangeRequest) - return ret0 -} - -// DeleteNetworkAreaRange indicates an expected call of DeleteNetworkAreaRange. -func (mr *MockDefaultAPIMockRecorder) DeleteNetworkAreaRange(ctx, organizationId, areaId, region, networkRangeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetworkAreaRange", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetworkAreaRange), ctx, organizationId, areaId, region, networkRangeId) -} - -// DeleteNetworkAreaRangeExecute mocks base method. -func (m *MockDefaultAPI) DeleteNetworkAreaRangeExecute(r v2api.ApiDeleteNetworkAreaRangeRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetworkAreaRangeExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteNetworkAreaRangeExecute indicates an expected call of DeleteNetworkAreaRangeExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteNetworkAreaRangeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetworkAreaRangeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetworkAreaRangeExecute), r) -} - -// DeleteNetworkAreaRegion mocks base method. -func (m *MockDefaultAPI) DeleteNetworkAreaRegion(ctx context.Context, organizationId, areaId, region string) v2api.ApiDeleteNetworkAreaRegionRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetworkAreaRegion", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiDeleteNetworkAreaRegionRequest) - return ret0 -} - -// DeleteNetworkAreaRegion indicates an expected call of DeleteNetworkAreaRegion. -func (mr *MockDefaultAPIMockRecorder) DeleteNetworkAreaRegion(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetworkAreaRegion", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetworkAreaRegion), ctx, organizationId, areaId, region) -} - -// DeleteNetworkAreaRegionExecute mocks base method. -func (m *MockDefaultAPI) DeleteNetworkAreaRegionExecute(r v2api.ApiDeleteNetworkAreaRegionRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetworkAreaRegionExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteNetworkAreaRegionExecute indicates an expected call of DeleteNetworkAreaRegionExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteNetworkAreaRegionExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetworkAreaRegionExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetworkAreaRegionExecute), r) -} - -// DeleteNetworkAreaRoute mocks base method. -func (m *MockDefaultAPI) DeleteNetworkAreaRoute(ctx context.Context, organizationId, areaId, region, routeId string) v2api.ApiDeleteNetworkAreaRouteRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetworkAreaRoute", ctx, organizationId, areaId, region, routeId) - ret0, _ := ret[0].(v2api.ApiDeleteNetworkAreaRouteRequest) - return ret0 -} - -// DeleteNetworkAreaRoute indicates an expected call of DeleteNetworkAreaRoute. -func (mr *MockDefaultAPIMockRecorder) DeleteNetworkAreaRoute(ctx, organizationId, areaId, region, routeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetworkAreaRoute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetworkAreaRoute), ctx, organizationId, areaId, region, routeId) -} - -// DeleteNetworkAreaRouteExecute mocks base method. -func (m *MockDefaultAPI) DeleteNetworkAreaRouteExecute(r v2api.ApiDeleteNetworkAreaRouteRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetworkAreaRouteExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteNetworkAreaRouteExecute indicates an expected call of DeleteNetworkAreaRouteExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteNetworkAreaRouteExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetworkAreaRouteExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetworkAreaRouteExecute), r) -} - -// DeleteNetworkExecute mocks base method. -func (m *MockDefaultAPI) DeleteNetworkExecute(r v2api.ApiDeleteNetworkRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNetworkExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteNetworkExecute indicates an expected call of DeleteNetworkExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteNetworkExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNetworkExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNetworkExecute), r) -} - -// DeleteNic mocks base method. -func (m *MockDefaultAPI) DeleteNic(ctx context.Context, projectId, region, networkId, nicId string) v2api.ApiDeleteNicRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNic", ctx, projectId, region, networkId, nicId) - ret0, _ := ret[0].(v2api.ApiDeleteNicRequest) - return ret0 -} - -// DeleteNic indicates an expected call of DeleteNic. -func (mr *MockDefaultAPIMockRecorder) DeleteNic(ctx, projectId, region, networkId, nicId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNic", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNic), ctx, projectId, region, networkId, nicId) -} - -// DeleteNicExecute mocks base method. -func (m *MockDefaultAPI) DeleteNicExecute(r v2api.ApiDeleteNicRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNicExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteNicExecute indicates an expected call of DeleteNicExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteNicExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNicExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteNicExecute), r) -} - -// DeletePublicIP mocks base method. -func (m *MockDefaultAPI) DeletePublicIP(ctx context.Context, projectId, region, publicIpId string) v2api.ApiDeletePublicIPRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeletePublicIP", ctx, projectId, region, publicIpId) - ret0, _ := ret[0].(v2api.ApiDeletePublicIPRequest) - return ret0 -} - -// DeletePublicIP indicates an expected call of DeletePublicIP. -func (mr *MockDefaultAPIMockRecorder) DeletePublicIP(ctx, projectId, region, publicIpId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeletePublicIP", reflect.TypeOf((*MockDefaultAPI)(nil).DeletePublicIP), ctx, projectId, region, publicIpId) -} - -// DeletePublicIPExecute mocks base method. -func (m *MockDefaultAPI) DeletePublicIPExecute(r v2api.ApiDeletePublicIPRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeletePublicIPExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeletePublicIPExecute indicates an expected call of DeletePublicIPExecute. -func (mr *MockDefaultAPIMockRecorder) DeletePublicIPExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeletePublicIPExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeletePublicIPExecute), r) -} - -// DeleteRouteFromRoutingTable mocks base method. -func (m *MockDefaultAPI) DeleteRouteFromRoutingTable(ctx context.Context, organizationId, areaId, region, routingTableId, routeId string) v2api.ApiDeleteRouteFromRoutingTableRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteRouteFromRoutingTable", ctx, organizationId, areaId, region, routingTableId, routeId) - ret0, _ := ret[0].(v2api.ApiDeleteRouteFromRoutingTableRequest) - return ret0 -} - -// DeleteRouteFromRoutingTable indicates an expected call of DeleteRouteFromRoutingTable. -func (mr *MockDefaultAPIMockRecorder) DeleteRouteFromRoutingTable(ctx, organizationId, areaId, region, routingTableId, routeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteFromRoutingTable", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteRouteFromRoutingTable), ctx, organizationId, areaId, region, routingTableId, routeId) -} - -// DeleteRouteFromRoutingTableExecute mocks base method. -func (m *MockDefaultAPI) DeleteRouteFromRoutingTableExecute(r v2api.ApiDeleteRouteFromRoutingTableRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteRouteFromRoutingTableExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteRouteFromRoutingTableExecute indicates an expected call of DeleteRouteFromRoutingTableExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteRouteFromRoutingTableExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRouteFromRoutingTableExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteRouteFromRoutingTableExecute), r) -} - -// DeleteRoutingTableFromArea mocks base method. -func (m *MockDefaultAPI) DeleteRoutingTableFromArea(ctx context.Context, organizationId, areaId, region, routingTableId string) v2api.ApiDeleteRoutingTableFromAreaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteRoutingTableFromArea", ctx, organizationId, areaId, region, routingTableId) - ret0, _ := ret[0].(v2api.ApiDeleteRoutingTableFromAreaRequest) - return ret0 -} - -// DeleteRoutingTableFromArea indicates an expected call of DeleteRoutingTableFromArea. -func (mr *MockDefaultAPIMockRecorder) DeleteRoutingTableFromArea(ctx, organizationId, areaId, region, routingTableId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRoutingTableFromArea", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteRoutingTableFromArea), ctx, organizationId, areaId, region, routingTableId) -} - -// DeleteRoutingTableFromAreaExecute mocks base method. -func (m *MockDefaultAPI) DeleteRoutingTableFromAreaExecute(r v2api.ApiDeleteRoutingTableFromAreaRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteRoutingTableFromAreaExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteRoutingTableFromAreaExecute indicates an expected call of DeleteRoutingTableFromAreaExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteRoutingTableFromAreaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteRoutingTableFromAreaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteRoutingTableFromAreaExecute), r) -} - -// DeleteSecurityGroup mocks base method. -func (m *MockDefaultAPI) DeleteSecurityGroup(ctx context.Context, projectId, region, securityGroupId string) v2api.ApiDeleteSecurityGroupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteSecurityGroup", ctx, projectId, region, securityGroupId) - ret0, _ := ret[0].(v2api.ApiDeleteSecurityGroupRequest) - return ret0 -} - -// DeleteSecurityGroup indicates an expected call of DeleteSecurityGroup. -func (mr *MockDefaultAPIMockRecorder) DeleteSecurityGroup(ctx, projectId, region, securityGroupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSecurityGroup", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteSecurityGroup), ctx, projectId, region, securityGroupId) -} - -// DeleteSecurityGroupExecute mocks base method. -func (m *MockDefaultAPI) DeleteSecurityGroupExecute(r v2api.ApiDeleteSecurityGroupRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteSecurityGroupExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteSecurityGroupExecute indicates an expected call of DeleteSecurityGroupExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteSecurityGroupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSecurityGroupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteSecurityGroupExecute), r) -} - -// DeleteSecurityGroupRule mocks base method. -func (m *MockDefaultAPI) DeleteSecurityGroupRule(ctx context.Context, projectId, region, securityGroupId, securityGroupRuleId string) v2api.ApiDeleteSecurityGroupRuleRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteSecurityGroupRule", ctx, projectId, region, securityGroupId, securityGroupRuleId) - ret0, _ := ret[0].(v2api.ApiDeleteSecurityGroupRuleRequest) - return ret0 -} - -// DeleteSecurityGroupRule indicates an expected call of DeleteSecurityGroupRule. -func (mr *MockDefaultAPIMockRecorder) DeleteSecurityGroupRule(ctx, projectId, region, securityGroupId, securityGroupRuleId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSecurityGroupRule", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteSecurityGroupRule), ctx, projectId, region, securityGroupId, securityGroupRuleId) -} - -// DeleteSecurityGroupRuleExecute mocks base method. -func (m *MockDefaultAPI) DeleteSecurityGroupRuleExecute(r v2api.ApiDeleteSecurityGroupRuleRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteSecurityGroupRuleExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteSecurityGroupRuleExecute indicates an expected call of DeleteSecurityGroupRuleExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteSecurityGroupRuleExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSecurityGroupRuleExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteSecurityGroupRuleExecute), r) -} - -// DeleteServer mocks base method. -func (m *MockDefaultAPI) DeleteServer(ctx context.Context, projectId, region, serverId string) v2api.ApiDeleteServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiDeleteServerRequest) - return ret0 -} - -// DeleteServer indicates an expected call of DeleteServer. -func (mr *MockDefaultAPIMockRecorder) DeleteServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteServer", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteServer), ctx, projectId, region, serverId) -} - -// DeleteServerExecute mocks base method. -func (m *MockDefaultAPI) DeleteServerExecute(r v2api.ApiDeleteServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteServerExecute indicates an expected call of DeleteServerExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteServerExecute), r) -} - -// DeleteSnapshot mocks base method. -func (m *MockDefaultAPI) DeleteSnapshot(ctx context.Context, projectId, region, snapshotId string) v2api.ApiDeleteSnapshotRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteSnapshot", ctx, projectId, region, snapshotId) - ret0, _ := ret[0].(v2api.ApiDeleteSnapshotRequest) - return ret0 -} - -// DeleteSnapshot indicates an expected call of DeleteSnapshot. -func (mr *MockDefaultAPIMockRecorder) DeleteSnapshot(ctx, projectId, region, snapshotId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSnapshot", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteSnapshot), ctx, projectId, region, snapshotId) -} - -// DeleteSnapshotExecute mocks base method. -func (m *MockDefaultAPI) DeleteSnapshotExecute(r v2api.ApiDeleteSnapshotRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteSnapshotExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteSnapshotExecute indicates an expected call of DeleteSnapshotExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteSnapshotExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSnapshotExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteSnapshotExecute), r) -} - -// DeleteVolume mocks base method. -func (m *MockDefaultAPI) DeleteVolume(ctx context.Context, projectId, region, volumeId string) v2api.ApiDeleteVolumeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteVolume", ctx, projectId, region, volumeId) - ret0, _ := ret[0].(v2api.ApiDeleteVolumeRequest) - return ret0 -} - -// DeleteVolume indicates an expected call of DeleteVolume. -func (mr *MockDefaultAPIMockRecorder) DeleteVolume(ctx, projectId, region, volumeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVolume", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteVolume), ctx, projectId, region, volumeId) -} - -// DeleteVolumeExecute mocks base method. -func (m *MockDefaultAPI) DeleteVolumeExecute(r v2api.ApiDeleteVolumeRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteVolumeExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteVolumeExecute indicates an expected call of DeleteVolumeExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteVolumeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVolumeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteVolumeExecute), r) -} - -// GetAffinityGroup mocks base method. -func (m *MockDefaultAPI) GetAffinityGroup(ctx context.Context, projectId, region, affinityGroupId string) v2api.ApiGetAffinityGroupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAffinityGroup", ctx, projectId, region, affinityGroupId) - ret0, _ := ret[0].(v2api.ApiGetAffinityGroupRequest) - return ret0 -} - -// GetAffinityGroup indicates an expected call of GetAffinityGroup. -func (mr *MockDefaultAPIMockRecorder) GetAffinityGroup(ctx, projectId, region, affinityGroupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAffinityGroup", reflect.TypeOf((*MockDefaultAPI)(nil).GetAffinityGroup), ctx, projectId, region, affinityGroupId) -} - -// GetAffinityGroupExecute mocks base method. -func (m *MockDefaultAPI) GetAffinityGroupExecute(r v2api.ApiGetAffinityGroupRequest) (*v2api.AffinityGroup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAffinityGroupExecute", r) - ret0, _ := ret[0].(*v2api.AffinityGroup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetAffinityGroupExecute indicates an expected call of GetAffinityGroupExecute. -func (mr *MockDefaultAPIMockRecorder) GetAffinityGroupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAffinityGroupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetAffinityGroupExecute), r) -} - -// GetAttachedVolume mocks base method. -func (m *MockDefaultAPI) GetAttachedVolume(ctx context.Context, projectId, region, serverId, volumeId string) v2api.ApiGetAttachedVolumeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAttachedVolume", ctx, projectId, region, serverId, volumeId) - ret0, _ := ret[0].(v2api.ApiGetAttachedVolumeRequest) - return ret0 -} - -// GetAttachedVolume indicates an expected call of GetAttachedVolume. -func (mr *MockDefaultAPIMockRecorder) GetAttachedVolume(ctx, projectId, region, serverId, volumeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAttachedVolume", reflect.TypeOf((*MockDefaultAPI)(nil).GetAttachedVolume), ctx, projectId, region, serverId, volumeId) -} - -// GetAttachedVolumeExecute mocks base method. -func (m *MockDefaultAPI) GetAttachedVolumeExecute(r v2api.ApiGetAttachedVolumeRequest) (*v2api.VolumeAttachment, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAttachedVolumeExecute", r) - ret0, _ := ret[0].(*v2api.VolumeAttachment) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetAttachedVolumeExecute indicates an expected call of GetAttachedVolumeExecute. -func (mr *MockDefaultAPIMockRecorder) GetAttachedVolumeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAttachedVolumeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetAttachedVolumeExecute), r) -} - -// GetBackup mocks base method. -func (m *MockDefaultAPI) GetBackup(ctx context.Context, projectId, region, backupId string) v2api.ApiGetBackupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBackup", ctx, projectId, region, backupId) - ret0, _ := ret[0].(v2api.ApiGetBackupRequest) - return ret0 -} - -// GetBackup indicates an expected call of GetBackup. -func (mr *MockDefaultAPIMockRecorder) GetBackup(ctx, projectId, region, backupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBackup", reflect.TypeOf((*MockDefaultAPI)(nil).GetBackup), ctx, projectId, region, backupId) -} - -// GetBackupExecute mocks base method. -func (m *MockDefaultAPI) GetBackupExecute(r v2api.ApiGetBackupRequest) (*v2api.Backup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBackupExecute", r) - ret0, _ := ret[0].(*v2api.Backup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetBackupExecute indicates an expected call of GetBackupExecute. -func (mr *MockDefaultAPIMockRecorder) GetBackupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBackupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetBackupExecute), r) -} - -// GetImage mocks base method. -func (m *MockDefaultAPI) GetImage(ctx context.Context, projectId, region, imageId string) v2api.ApiGetImageRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetImage", ctx, projectId, region, imageId) - ret0, _ := ret[0].(v2api.ApiGetImageRequest) - return ret0 -} - -// GetImage indicates an expected call of GetImage. -func (mr *MockDefaultAPIMockRecorder) GetImage(ctx, projectId, region, imageId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImage", reflect.TypeOf((*MockDefaultAPI)(nil).GetImage), ctx, projectId, region, imageId) -} - -// GetImageExecute mocks base method. -func (m *MockDefaultAPI) GetImageExecute(r v2api.ApiGetImageRequest) (*v2api.Image, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetImageExecute", r) - ret0, _ := ret[0].(*v2api.Image) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetImageExecute indicates an expected call of GetImageExecute. -func (mr *MockDefaultAPIMockRecorder) GetImageExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImageExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetImageExecute), r) -} - -// GetImageShare mocks base method. -func (m *MockDefaultAPI) GetImageShare(ctx context.Context, projectId, region, imageId string) v2api.ApiGetImageShareRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetImageShare", ctx, projectId, region, imageId) - ret0, _ := ret[0].(v2api.ApiGetImageShareRequest) - return ret0 -} - -// GetImageShare indicates an expected call of GetImageShare. -func (mr *MockDefaultAPIMockRecorder) GetImageShare(ctx, projectId, region, imageId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImageShare", reflect.TypeOf((*MockDefaultAPI)(nil).GetImageShare), ctx, projectId, region, imageId) -} - -// GetImageShareConsumer mocks base method. -func (m *MockDefaultAPI) GetImageShareConsumer(ctx context.Context, projectId, region, imageId, consumerProjectId string) v2api.ApiGetImageShareConsumerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetImageShareConsumer", ctx, projectId, region, imageId, consumerProjectId) - ret0, _ := ret[0].(v2api.ApiGetImageShareConsumerRequest) - return ret0 -} - -// GetImageShareConsumer indicates an expected call of GetImageShareConsumer. -func (mr *MockDefaultAPIMockRecorder) GetImageShareConsumer(ctx, projectId, region, imageId, consumerProjectId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImageShareConsumer", reflect.TypeOf((*MockDefaultAPI)(nil).GetImageShareConsumer), ctx, projectId, region, imageId, consumerProjectId) -} - -// GetImageShareConsumerExecute mocks base method. -func (m *MockDefaultAPI) GetImageShareConsumerExecute(r v2api.ApiGetImageShareConsumerRequest) (*v2api.ImageShareConsumer, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetImageShareConsumerExecute", r) - ret0, _ := ret[0].(*v2api.ImageShareConsumer) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetImageShareConsumerExecute indicates an expected call of GetImageShareConsumerExecute. -func (mr *MockDefaultAPIMockRecorder) GetImageShareConsumerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImageShareConsumerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetImageShareConsumerExecute), r) -} - -// GetImageShareExecute mocks base method. -func (m *MockDefaultAPI) GetImageShareExecute(r v2api.ApiGetImageShareRequest) (*v2api.ImageShare, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetImageShareExecute", r) - ret0, _ := ret[0].(*v2api.ImageShare) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetImageShareExecute indicates an expected call of GetImageShareExecute. -func (mr *MockDefaultAPIMockRecorder) GetImageShareExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImageShareExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetImageShareExecute), r) -} - -// GetKeyPair mocks base method. -func (m *MockDefaultAPI) GetKeyPair(ctx context.Context, keypairName string) v2api.ApiGetKeyPairRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetKeyPair", ctx, keypairName) - ret0, _ := ret[0].(v2api.ApiGetKeyPairRequest) - return ret0 -} - -// GetKeyPair indicates an expected call of GetKeyPair. -func (mr *MockDefaultAPIMockRecorder) GetKeyPair(ctx, keypairName any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetKeyPair", reflect.TypeOf((*MockDefaultAPI)(nil).GetKeyPair), ctx, keypairName) -} - -// GetKeyPairExecute mocks base method. -func (m *MockDefaultAPI) GetKeyPairExecute(r v2api.ApiGetKeyPairRequest) (*v2api.Keypair, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetKeyPairExecute", r) - ret0, _ := ret[0].(*v2api.Keypair) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetKeyPairExecute indicates an expected call of GetKeyPairExecute. -func (mr *MockDefaultAPIMockRecorder) GetKeyPairExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetKeyPairExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetKeyPairExecute), r) -} - -// GetMachineType mocks base method. -func (m *MockDefaultAPI) GetMachineType(ctx context.Context, projectId, region, machineType string) v2api.ApiGetMachineTypeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetMachineType", ctx, projectId, region, machineType) - ret0, _ := ret[0].(v2api.ApiGetMachineTypeRequest) - return ret0 -} - -// GetMachineType indicates an expected call of GetMachineType. -func (mr *MockDefaultAPIMockRecorder) GetMachineType(ctx, projectId, region, machineType any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMachineType", reflect.TypeOf((*MockDefaultAPI)(nil).GetMachineType), ctx, projectId, region, machineType) -} - -// GetMachineTypeExecute mocks base method. -func (m *MockDefaultAPI) GetMachineTypeExecute(r v2api.ApiGetMachineTypeRequest) (*v2api.MachineType, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetMachineTypeExecute", r) - ret0, _ := ret[0].(*v2api.MachineType) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetMachineTypeExecute indicates an expected call of GetMachineTypeExecute. -func (mr *MockDefaultAPIMockRecorder) GetMachineTypeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMachineTypeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetMachineTypeExecute), r) -} - -// GetNetwork mocks base method. -func (m *MockDefaultAPI) GetNetwork(ctx context.Context, projectId, region, networkId string) v2api.ApiGetNetworkRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetwork", ctx, projectId, region, networkId) - ret0, _ := ret[0].(v2api.ApiGetNetworkRequest) - return ret0 -} - -// GetNetwork indicates an expected call of GetNetwork. -func (mr *MockDefaultAPIMockRecorder) GetNetwork(ctx, projectId, region, networkId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetwork", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetwork), ctx, projectId, region, networkId) -} - -// GetNetworkArea mocks base method. -func (m *MockDefaultAPI) GetNetworkArea(ctx context.Context, organizationId, areaId string) v2api.ApiGetNetworkAreaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetworkArea", ctx, organizationId, areaId) - ret0, _ := ret[0].(v2api.ApiGetNetworkAreaRequest) - return ret0 -} - -// GetNetworkArea indicates an expected call of GetNetworkArea. -func (mr *MockDefaultAPIMockRecorder) GetNetworkArea(ctx, organizationId, areaId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkArea", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetworkArea), ctx, organizationId, areaId) -} - -// GetNetworkAreaExecute mocks base method. -func (m *MockDefaultAPI) GetNetworkAreaExecute(r v2api.ApiGetNetworkAreaRequest) (*v2api.NetworkArea, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetworkAreaExecute", r) - ret0, _ := ret[0].(*v2api.NetworkArea) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetNetworkAreaExecute indicates an expected call of GetNetworkAreaExecute. -func (mr *MockDefaultAPIMockRecorder) GetNetworkAreaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkAreaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetworkAreaExecute), r) -} - -// GetNetworkAreaRange mocks base method. -func (m *MockDefaultAPI) GetNetworkAreaRange(ctx context.Context, organizationId, areaId, region, networkRangeId string) v2api.ApiGetNetworkAreaRangeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetworkAreaRange", ctx, organizationId, areaId, region, networkRangeId) - ret0, _ := ret[0].(v2api.ApiGetNetworkAreaRangeRequest) - return ret0 -} - -// GetNetworkAreaRange indicates an expected call of GetNetworkAreaRange. -func (mr *MockDefaultAPIMockRecorder) GetNetworkAreaRange(ctx, organizationId, areaId, region, networkRangeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkAreaRange", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetworkAreaRange), ctx, organizationId, areaId, region, networkRangeId) -} - -// GetNetworkAreaRangeExecute mocks base method. -func (m *MockDefaultAPI) GetNetworkAreaRangeExecute(r v2api.ApiGetNetworkAreaRangeRequest) (*v2api.NetworkRange, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetworkAreaRangeExecute", r) - ret0, _ := ret[0].(*v2api.NetworkRange) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetNetworkAreaRangeExecute indicates an expected call of GetNetworkAreaRangeExecute. -func (mr *MockDefaultAPIMockRecorder) GetNetworkAreaRangeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkAreaRangeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetworkAreaRangeExecute), r) -} - -// GetNetworkAreaRegion mocks base method. -func (m *MockDefaultAPI) GetNetworkAreaRegion(ctx context.Context, organizationId, areaId, region string) v2api.ApiGetNetworkAreaRegionRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetworkAreaRegion", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiGetNetworkAreaRegionRequest) - return ret0 -} - -// GetNetworkAreaRegion indicates an expected call of GetNetworkAreaRegion. -func (mr *MockDefaultAPIMockRecorder) GetNetworkAreaRegion(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkAreaRegion", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetworkAreaRegion), ctx, organizationId, areaId, region) -} - -// GetNetworkAreaRegionExecute mocks base method. -func (m *MockDefaultAPI) GetNetworkAreaRegionExecute(r v2api.ApiGetNetworkAreaRegionRequest) (*v2api.RegionalArea, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetworkAreaRegionExecute", r) - ret0, _ := ret[0].(*v2api.RegionalArea) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetNetworkAreaRegionExecute indicates an expected call of GetNetworkAreaRegionExecute. -func (mr *MockDefaultAPIMockRecorder) GetNetworkAreaRegionExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkAreaRegionExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetworkAreaRegionExecute), r) -} - -// GetNetworkAreaRoute mocks base method. -func (m *MockDefaultAPI) GetNetworkAreaRoute(ctx context.Context, organizationId, areaId, region, routeId string) v2api.ApiGetNetworkAreaRouteRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetworkAreaRoute", ctx, organizationId, areaId, region, routeId) - ret0, _ := ret[0].(v2api.ApiGetNetworkAreaRouteRequest) - return ret0 -} - -// GetNetworkAreaRoute indicates an expected call of GetNetworkAreaRoute. -func (mr *MockDefaultAPIMockRecorder) GetNetworkAreaRoute(ctx, organizationId, areaId, region, routeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkAreaRoute", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetworkAreaRoute), ctx, organizationId, areaId, region, routeId) -} - -// GetNetworkAreaRouteExecute mocks base method. -func (m *MockDefaultAPI) GetNetworkAreaRouteExecute(r v2api.ApiGetNetworkAreaRouteRequest) (*v2api.Route, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetworkAreaRouteExecute", r) - ret0, _ := ret[0].(*v2api.Route) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetNetworkAreaRouteExecute indicates an expected call of GetNetworkAreaRouteExecute. -func (mr *MockDefaultAPIMockRecorder) GetNetworkAreaRouteExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkAreaRouteExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetworkAreaRouteExecute), r) -} - -// GetNetworkExecute mocks base method. -func (m *MockDefaultAPI) GetNetworkExecute(r v2api.ApiGetNetworkRequest) (*v2api.Network, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNetworkExecute", r) - ret0, _ := ret[0].(*v2api.Network) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetNetworkExecute indicates an expected call of GetNetworkExecute. -func (mr *MockDefaultAPIMockRecorder) GetNetworkExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetNetworkExecute), r) -} - -// GetNic mocks base method. -func (m *MockDefaultAPI) GetNic(ctx context.Context, projectId, region, networkId, nicId string) v2api.ApiGetNicRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNic", ctx, projectId, region, networkId, nicId) - ret0, _ := ret[0].(v2api.ApiGetNicRequest) - return ret0 -} - -// GetNic indicates an expected call of GetNic. -func (mr *MockDefaultAPIMockRecorder) GetNic(ctx, projectId, region, networkId, nicId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNic", reflect.TypeOf((*MockDefaultAPI)(nil).GetNic), ctx, projectId, region, networkId, nicId) -} - -// GetNicExecute mocks base method. -func (m *MockDefaultAPI) GetNicExecute(r v2api.ApiGetNicRequest) (*v2api.NIC, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNicExecute", r) - ret0, _ := ret[0].(*v2api.NIC) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetNicExecute indicates an expected call of GetNicExecute. -func (mr *MockDefaultAPIMockRecorder) GetNicExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNicExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetNicExecute), r) -} - -// GetOrganizationRequest mocks base method. -func (m *MockDefaultAPI) GetOrganizationRequest(ctx context.Context, organizationId, requestId string) v2api.ApiGetOrganizationRequestRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOrganizationRequest", ctx, organizationId, requestId) - ret0, _ := ret[0].(v2api.ApiGetOrganizationRequestRequest) - return ret0 -} - -// GetOrganizationRequest indicates an expected call of GetOrganizationRequest. -func (mr *MockDefaultAPIMockRecorder) GetOrganizationRequest(ctx, organizationId, requestId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrganizationRequest", reflect.TypeOf((*MockDefaultAPI)(nil).GetOrganizationRequest), ctx, organizationId, requestId) -} - -// GetOrganizationRequestExecute mocks base method. -func (m *MockDefaultAPI) GetOrganizationRequestExecute(r v2api.ApiGetOrganizationRequestRequest) (*v2api.Request, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOrganizationRequestExecute", r) - ret0, _ := ret[0].(*v2api.Request) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetOrganizationRequestExecute indicates an expected call of GetOrganizationRequestExecute. -func (mr *MockDefaultAPIMockRecorder) GetOrganizationRequestExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrganizationRequestExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetOrganizationRequestExecute), r) -} - -// GetProjectDetails mocks base method. -func (m *MockDefaultAPI) GetProjectDetails(ctx context.Context, projectId string) v2api.ApiGetProjectDetailsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetProjectDetails", ctx, projectId) - ret0, _ := ret[0].(v2api.ApiGetProjectDetailsRequest) - return ret0 -} - -// GetProjectDetails indicates an expected call of GetProjectDetails. -func (mr *MockDefaultAPIMockRecorder) GetProjectDetails(ctx, projectId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProjectDetails", reflect.TypeOf((*MockDefaultAPI)(nil).GetProjectDetails), ctx, projectId) -} - -// GetProjectDetailsExecute mocks base method. -func (m *MockDefaultAPI) GetProjectDetailsExecute(r v2api.ApiGetProjectDetailsRequest) (*v2api.Project, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetProjectDetailsExecute", r) - ret0, _ := ret[0].(*v2api.Project) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetProjectDetailsExecute indicates an expected call of GetProjectDetailsExecute. -func (mr *MockDefaultAPIMockRecorder) GetProjectDetailsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProjectDetailsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetProjectDetailsExecute), r) -} - -// GetProjectNIC mocks base method. -func (m *MockDefaultAPI) GetProjectNIC(ctx context.Context, projectId, region, nicId string) v2api.ApiGetProjectNICRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetProjectNIC", ctx, projectId, region, nicId) - ret0, _ := ret[0].(v2api.ApiGetProjectNICRequest) - return ret0 -} - -// GetProjectNIC indicates an expected call of GetProjectNIC. -func (mr *MockDefaultAPIMockRecorder) GetProjectNIC(ctx, projectId, region, nicId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProjectNIC", reflect.TypeOf((*MockDefaultAPI)(nil).GetProjectNIC), ctx, projectId, region, nicId) -} - -// GetProjectNICExecute mocks base method. -func (m *MockDefaultAPI) GetProjectNICExecute(r v2api.ApiGetProjectNICRequest) (*v2api.NIC, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetProjectNICExecute", r) - ret0, _ := ret[0].(*v2api.NIC) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetProjectNICExecute indicates an expected call of GetProjectNICExecute. -func (mr *MockDefaultAPIMockRecorder) GetProjectNICExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProjectNICExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetProjectNICExecute), r) -} - -// GetProjectRequest mocks base method. -func (m *MockDefaultAPI) GetProjectRequest(ctx context.Context, projectId, region, requestId string) v2api.ApiGetProjectRequestRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetProjectRequest", ctx, projectId, region, requestId) - ret0, _ := ret[0].(v2api.ApiGetProjectRequestRequest) - return ret0 -} - -// GetProjectRequest indicates an expected call of GetProjectRequest. -func (mr *MockDefaultAPIMockRecorder) GetProjectRequest(ctx, projectId, region, requestId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProjectRequest", reflect.TypeOf((*MockDefaultAPI)(nil).GetProjectRequest), ctx, projectId, region, requestId) -} - -// GetProjectRequestExecute mocks base method. -func (m *MockDefaultAPI) GetProjectRequestExecute(r v2api.ApiGetProjectRequestRequest) (*v2api.Request, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetProjectRequestExecute", r) - ret0, _ := ret[0].(*v2api.Request) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetProjectRequestExecute indicates an expected call of GetProjectRequestExecute. -func (mr *MockDefaultAPIMockRecorder) GetProjectRequestExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProjectRequestExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetProjectRequestExecute), r) -} - -// GetPublicIP mocks base method. -func (m *MockDefaultAPI) GetPublicIP(ctx context.Context, projectId, region, publicIpId string) v2api.ApiGetPublicIPRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPublicIP", ctx, projectId, region, publicIpId) - ret0, _ := ret[0].(v2api.ApiGetPublicIPRequest) - return ret0 -} - -// GetPublicIP indicates an expected call of GetPublicIP. -func (mr *MockDefaultAPIMockRecorder) GetPublicIP(ctx, projectId, region, publicIpId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPublicIP", reflect.TypeOf((*MockDefaultAPI)(nil).GetPublicIP), ctx, projectId, region, publicIpId) -} - -// GetPublicIPExecute mocks base method. -func (m *MockDefaultAPI) GetPublicIPExecute(r v2api.ApiGetPublicIPRequest) (*v2api.PublicIp, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPublicIPExecute", r) - ret0, _ := ret[0].(*v2api.PublicIp) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetPublicIPExecute indicates an expected call of GetPublicIPExecute. -func (mr *MockDefaultAPIMockRecorder) GetPublicIPExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPublicIPExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetPublicIPExecute), r) -} - -// GetRouteOfRoutingTable mocks base method. -func (m *MockDefaultAPI) GetRouteOfRoutingTable(ctx context.Context, organizationId, areaId, region, routingTableId, routeId string) v2api.ApiGetRouteOfRoutingTableRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRouteOfRoutingTable", ctx, organizationId, areaId, region, routingTableId, routeId) - ret0, _ := ret[0].(v2api.ApiGetRouteOfRoutingTableRequest) - return ret0 -} - -// GetRouteOfRoutingTable indicates an expected call of GetRouteOfRoutingTable. -func (mr *MockDefaultAPIMockRecorder) GetRouteOfRoutingTable(ctx, organizationId, areaId, region, routingTableId, routeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRouteOfRoutingTable", reflect.TypeOf((*MockDefaultAPI)(nil).GetRouteOfRoutingTable), ctx, organizationId, areaId, region, routingTableId, routeId) -} - -// GetRouteOfRoutingTableExecute mocks base method. -func (m *MockDefaultAPI) GetRouteOfRoutingTableExecute(r v2api.ApiGetRouteOfRoutingTableRequest) (*v2api.Route, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRouteOfRoutingTableExecute", r) - ret0, _ := ret[0].(*v2api.Route) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetRouteOfRoutingTableExecute indicates an expected call of GetRouteOfRoutingTableExecute. -func (mr *MockDefaultAPIMockRecorder) GetRouteOfRoutingTableExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRouteOfRoutingTableExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetRouteOfRoutingTableExecute), r) -} - -// GetRoutingTableOfArea mocks base method. -func (m *MockDefaultAPI) GetRoutingTableOfArea(ctx context.Context, organizationId, areaId, region, routingTableId string) v2api.ApiGetRoutingTableOfAreaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRoutingTableOfArea", ctx, organizationId, areaId, region, routingTableId) - ret0, _ := ret[0].(v2api.ApiGetRoutingTableOfAreaRequest) - return ret0 -} - -// GetRoutingTableOfArea indicates an expected call of GetRoutingTableOfArea. -func (mr *MockDefaultAPIMockRecorder) GetRoutingTableOfArea(ctx, organizationId, areaId, region, routingTableId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRoutingTableOfArea", reflect.TypeOf((*MockDefaultAPI)(nil).GetRoutingTableOfArea), ctx, organizationId, areaId, region, routingTableId) -} - -// GetRoutingTableOfAreaExecute mocks base method. -func (m *MockDefaultAPI) GetRoutingTableOfAreaExecute(r v2api.ApiGetRoutingTableOfAreaRequest) (*v2api.RoutingTable, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRoutingTableOfAreaExecute", r) - ret0, _ := ret[0].(*v2api.RoutingTable) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetRoutingTableOfAreaExecute indicates an expected call of GetRoutingTableOfAreaExecute. -func (mr *MockDefaultAPIMockRecorder) GetRoutingTableOfAreaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRoutingTableOfAreaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetRoutingTableOfAreaExecute), r) -} - -// GetSecurityGroup mocks base method. -func (m *MockDefaultAPI) GetSecurityGroup(ctx context.Context, projectId, region, securityGroupId string) v2api.ApiGetSecurityGroupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSecurityGroup", ctx, projectId, region, securityGroupId) - ret0, _ := ret[0].(v2api.ApiGetSecurityGroupRequest) - return ret0 -} - -// GetSecurityGroup indicates an expected call of GetSecurityGroup. -func (mr *MockDefaultAPIMockRecorder) GetSecurityGroup(ctx, projectId, region, securityGroupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSecurityGroup", reflect.TypeOf((*MockDefaultAPI)(nil).GetSecurityGroup), ctx, projectId, region, securityGroupId) -} - -// GetSecurityGroupExecute mocks base method. -func (m *MockDefaultAPI) GetSecurityGroupExecute(r v2api.ApiGetSecurityGroupRequest) (*v2api.SecurityGroup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSecurityGroupExecute", r) - ret0, _ := ret[0].(*v2api.SecurityGroup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetSecurityGroupExecute indicates an expected call of GetSecurityGroupExecute. -func (mr *MockDefaultAPIMockRecorder) GetSecurityGroupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSecurityGroupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetSecurityGroupExecute), r) -} - -// GetSecurityGroupRule mocks base method. -func (m *MockDefaultAPI) GetSecurityGroupRule(ctx context.Context, projectId, region, securityGroupId, securityGroupRuleId string) v2api.ApiGetSecurityGroupRuleRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSecurityGroupRule", ctx, projectId, region, securityGroupId, securityGroupRuleId) - ret0, _ := ret[0].(v2api.ApiGetSecurityGroupRuleRequest) - return ret0 -} - -// GetSecurityGroupRule indicates an expected call of GetSecurityGroupRule. -func (mr *MockDefaultAPIMockRecorder) GetSecurityGroupRule(ctx, projectId, region, securityGroupId, securityGroupRuleId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSecurityGroupRule", reflect.TypeOf((*MockDefaultAPI)(nil).GetSecurityGroupRule), ctx, projectId, region, securityGroupId, securityGroupRuleId) -} - -// GetSecurityGroupRuleExecute mocks base method. -func (m *MockDefaultAPI) GetSecurityGroupRuleExecute(r v2api.ApiGetSecurityGroupRuleRequest) (*v2api.SecurityGroupRule, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSecurityGroupRuleExecute", r) - ret0, _ := ret[0].(*v2api.SecurityGroupRule) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetSecurityGroupRuleExecute indicates an expected call of GetSecurityGroupRuleExecute. -func (mr *MockDefaultAPIMockRecorder) GetSecurityGroupRuleExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSecurityGroupRuleExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetSecurityGroupRuleExecute), r) -} - -// GetServer mocks base method. -func (m *MockDefaultAPI) GetServer(ctx context.Context, projectId, region, serverId string) v2api.ApiGetServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiGetServerRequest) - return ret0 -} - -// GetServer indicates an expected call of GetServer. -func (mr *MockDefaultAPIMockRecorder) GetServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServer", reflect.TypeOf((*MockDefaultAPI)(nil).GetServer), ctx, projectId, region, serverId) -} - -// GetServerConsole mocks base method. -func (m *MockDefaultAPI) GetServerConsole(ctx context.Context, projectId, region, serverId string) v2api.ApiGetServerConsoleRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetServerConsole", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiGetServerConsoleRequest) - return ret0 -} - -// GetServerConsole indicates an expected call of GetServerConsole. -func (mr *MockDefaultAPIMockRecorder) GetServerConsole(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServerConsole", reflect.TypeOf((*MockDefaultAPI)(nil).GetServerConsole), ctx, projectId, region, serverId) -} - -// GetServerConsoleExecute mocks base method. -func (m *MockDefaultAPI) GetServerConsoleExecute(r v2api.ApiGetServerConsoleRequest) (*v2api.ServerConsoleUrl, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetServerConsoleExecute", r) - ret0, _ := ret[0].(*v2api.ServerConsoleUrl) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetServerConsoleExecute indicates an expected call of GetServerConsoleExecute. -func (mr *MockDefaultAPIMockRecorder) GetServerConsoleExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServerConsoleExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetServerConsoleExecute), r) -} - -// GetServerExecute mocks base method. -func (m *MockDefaultAPI) GetServerExecute(r v2api.ApiGetServerRequest) (*v2api.Server, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetServerExecute", r) - ret0, _ := ret[0].(*v2api.Server) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetServerExecute indicates an expected call of GetServerExecute. -func (mr *MockDefaultAPIMockRecorder) GetServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetServerExecute), r) -} - -// GetServerLog mocks base method. -func (m *MockDefaultAPI) GetServerLog(ctx context.Context, projectId, region, serverId string) v2api.ApiGetServerLogRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetServerLog", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiGetServerLogRequest) - return ret0 -} - -// GetServerLog indicates an expected call of GetServerLog. -func (mr *MockDefaultAPIMockRecorder) GetServerLog(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServerLog", reflect.TypeOf((*MockDefaultAPI)(nil).GetServerLog), ctx, projectId, region, serverId) -} - -// GetServerLogExecute mocks base method. -func (m *MockDefaultAPI) GetServerLogExecute(r v2api.ApiGetServerLogRequest) (*v2api.GetServerLog200Response, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetServerLogExecute", r) - ret0, _ := ret[0].(*v2api.GetServerLog200Response) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetServerLogExecute indicates an expected call of GetServerLogExecute. -func (mr *MockDefaultAPIMockRecorder) GetServerLogExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServerLogExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetServerLogExecute), r) -} - -// GetSnapshot mocks base method. -func (m *MockDefaultAPI) GetSnapshot(ctx context.Context, projectId, region, snapshotId string) v2api.ApiGetSnapshotRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSnapshot", ctx, projectId, region, snapshotId) - ret0, _ := ret[0].(v2api.ApiGetSnapshotRequest) - return ret0 -} - -// GetSnapshot indicates an expected call of GetSnapshot. -func (mr *MockDefaultAPIMockRecorder) GetSnapshot(ctx, projectId, region, snapshotId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSnapshot", reflect.TypeOf((*MockDefaultAPI)(nil).GetSnapshot), ctx, projectId, region, snapshotId) -} - -// GetSnapshotExecute mocks base method. -func (m *MockDefaultAPI) GetSnapshotExecute(r v2api.ApiGetSnapshotRequest) (*v2api.Snapshot, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSnapshotExecute", r) - ret0, _ := ret[0].(*v2api.Snapshot) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetSnapshotExecute indicates an expected call of GetSnapshotExecute. -func (mr *MockDefaultAPIMockRecorder) GetSnapshotExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSnapshotExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetSnapshotExecute), r) -} - -// GetVolume mocks base method. -func (m *MockDefaultAPI) GetVolume(ctx context.Context, projectId, region, volumeId string) v2api.ApiGetVolumeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVolume", ctx, projectId, region, volumeId) - ret0, _ := ret[0].(v2api.ApiGetVolumeRequest) - return ret0 -} - -// GetVolume indicates an expected call of GetVolume. -func (mr *MockDefaultAPIMockRecorder) GetVolume(ctx, projectId, region, volumeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolume", reflect.TypeOf((*MockDefaultAPI)(nil).GetVolume), ctx, projectId, region, volumeId) -} - -// GetVolumeExecute mocks base method. -func (m *MockDefaultAPI) GetVolumeExecute(r v2api.ApiGetVolumeRequest) (*v2api.Volume, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVolumeExecute", r) - ret0, _ := ret[0].(*v2api.Volume) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetVolumeExecute indicates an expected call of GetVolumeExecute. -func (mr *MockDefaultAPIMockRecorder) GetVolumeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolumeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetVolumeExecute), r) -} - -// GetVolumePerformanceClass mocks base method. -func (m *MockDefaultAPI) GetVolumePerformanceClass(ctx context.Context, projectId, region, volumePerformanceClass string) v2api.ApiGetVolumePerformanceClassRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVolumePerformanceClass", ctx, projectId, region, volumePerformanceClass) - ret0, _ := ret[0].(v2api.ApiGetVolumePerformanceClassRequest) - return ret0 -} - -// GetVolumePerformanceClass indicates an expected call of GetVolumePerformanceClass. -func (mr *MockDefaultAPIMockRecorder) GetVolumePerformanceClass(ctx, projectId, region, volumePerformanceClass any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolumePerformanceClass", reflect.TypeOf((*MockDefaultAPI)(nil).GetVolumePerformanceClass), ctx, projectId, region, volumePerformanceClass) -} - -// GetVolumePerformanceClassExecute mocks base method. -func (m *MockDefaultAPI) GetVolumePerformanceClassExecute(r v2api.ApiGetVolumePerformanceClassRequest) (*v2api.VolumePerformanceClass, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVolumePerformanceClassExecute", r) - ret0, _ := ret[0].(*v2api.VolumePerformanceClass) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetVolumePerformanceClassExecute indicates an expected call of GetVolumePerformanceClassExecute. -func (mr *MockDefaultAPIMockRecorder) GetVolumePerformanceClassExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolumePerformanceClassExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetVolumePerformanceClassExecute), r) -} - -// ImageFromVolume mocks base method. -func (m *MockDefaultAPI) ImageFromVolume(ctx context.Context, projectId, volumeId, region string) v2api.ApiImageFromVolumeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ImageFromVolume", ctx, projectId, volumeId, region) - ret0, _ := ret[0].(v2api.ApiImageFromVolumeRequest) - return ret0 -} - -// ImageFromVolume indicates an expected call of ImageFromVolume. -func (mr *MockDefaultAPIMockRecorder) ImageFromVolume(ctx, projectId, volumeId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImageFromVolume", reflect.TypeOf((*MockDefaultAPI)(nil).ImageFromVolume), ctx, projectId, volumeId, region) -} - -// ImageFromVolumeExecute mocks base method. -func (m *MockDefaultAPI) ImageFromVolumeExecute(r v2api.ApiImageFromVolumeRequest) (*v2api.Image, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ImageFromVolumeExecute", r) - ret0, _ := ret[0].(*v2api.Image) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ImageFromVolumeExecute indicates an expected call of ImageFromVolumeExecute. -func (mr *MockDefaultAPIMockRecorder) ImageFromVolumeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImageFromVolumeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ImageFromVolumeExecute), r) -} - -// ListAffinityGroups mocks base method. -func (m *MockDefaultAPI) ListAffinityGroups(ctx context.Context, projectId, region string) v2api.ApiListAffinityGroupsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListAffinityGroups", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListAffinityGroupsRequest) - return ret0 -} - -// ListAffinityGroups indicates an expected call of ListAffinityGroups. -func (mr *MockDefaultAPIMockRecorder) ListAffinityGroups(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAffinityGroups", reflect.TypeOf((*MockDefaultAPI)(nil).ListAffinityGroups), ctx, projectId, region) -} - -// ListAffinityGroupsExecute mocks base method. -func (m *MockDefaultAPI) ListAffinityGroupsExecute(r v2api.ApiListAffinityGroupsRequest) (*v2api.AffinityGroupListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListAffinityGroupsExecute", r) - ret0, _ := ret[0].(*v2api.AffinityGroupListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListAffinityGroupsExecute indicates an expected call of ListAffinityGroupsExecute. -func (mr *MockDefaultAPIMockRecorder) ListAffinityGroupsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAffinityGroupsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListAffinityGroupsExecute), r) -} - -// ListAttachedVolumes mocks base method. -func (m *MockDefaultAPI) ListAttachedVolumes(ctx context.Context, projectId, region, serverId string) v2api.ApiListAttachedVolumesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListAttachedVolumes", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiListAttachedVolumesRequest) - return ret0 -} - -// ListAttachedVolumes indicates an expected call of ListAttachedVolumes. -func (mr *MockDefaultAPIMockRecorder) ListAttachedVolumes(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAttachedVolumes", reflect.TypeOf((*MockDefaultAPI)(nil).ListAttachedVolumes), ctx, projectId, region, serverId) -} - -// ListAttachedVolumesExecute mocks base method. -func (m *MockDefaultAPI) ListAttachedVolumesExecute(r v2api.ApiListAttachedVolumesRequest) (*v2api.VolumeAttachmentListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListAttachedVolumesExecute", r) - ret0, _ := ret[0].(*v2api.VolumeAttachmentListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListAttachedVolumesExecute indicates an expected call of ListAttachedVolumesExecute. -func (mr *MockDefaultAPIMockRecorder) ListAttachedVolumesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAttachedVolumesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListAttachedVolumesExecute), r) -} - -// ListAvailabilityZones mocks base method. -func (m *MockDefaultAPI) ListAvailabilityZones(ctx context.Context, region string) v2api.ApiListAvailabilityZonesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListAvailabilityZones", ctx, region) - ret0, _ := ret[0].(v2api.ApiListAvailabilityZonesRequest) - return ret0 -} - -// ListAvailabilityZones indicates an expected call of ListAvailabilityZones. -func (mr *MockDefaultAPIMockRecorder) ListAvailabilityZones(ctx, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAvailabilityZones", reflect.TypeOf((*MockDefaultAPI)(nil).ListAvailabilityZones), ctx, region) -} - -// ListAvailabilityZonesExecute mocks base method. -func (m *MockDefaultAPI) ListAvailabilityZonesExecute(r v2api.ApiListAvailabilityZonesRequest) (*v2api.AvailabilityZoneListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListAvailabilityZonesExecute", r) - ret0, _ := ret[0].(*v2api.AvailabilityZoneListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListAvailabilityZonesExecute indicates an expected call of ListAvailabilityZonesExecute. -func (mr *MockDefaultAPIMockRecorder) ListAvailabilityZonesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAvailabilityZonesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListAvailabilityZonesExecute), r) -} - -// ListBackups mocks base method. -func (m *MockDefaultAPI) ListBackups(ctx context.Context, projectId, region string) v2api.ApiListBackupsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListBackups", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListBackupsRequest) - return ret0 -} - -// ListBackups indicates an expected call of ListBackups. -func (mr *MockDefaultAPIMockRecorder) ListBackups(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListBackups", reflect.TypeOf((*MockDefaultAPI)(nil).ListBackups), ctx, projectId, region) -} - -// ListBackupsExecute mocks base method. -func (m *MockDefaultAPI) ListBackupsExecute(r v2api.ApiListBackupsRequest) (*v2api.BackupListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListBackupsExecute", r) - ret0, _ := ret[0].(*v2api.BackupListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListBackupsExecute indicates an expected call of ListBackupsExecute. -func (mr *MockDefaultAPIMockRecorder) ListBackupsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListBackupsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListBackupsExecute), r) -} - -// ListImages mocks base method. -func (m *MockDefaultAPI) ListImages(ctx context.Context, projectId, region string) v2api.ApiListImagesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListImages", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListImagesRequest) - return ret0 -} - -// ListImages indicates an expected call of ListImages. -func (mr *MockDefaultAPIMockRecorder) ListImages(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListImages", reflect.TypeOf((*MockDefaultAPI)(nil).ListImages), ctx, projectId, region) -} - -// ListImagesExecute mocks base method. -func (m *MockDefaultAPI) ListImagesExecute(r v2api.ApiListImagesRequest) (*v2api.ImageListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListImagesExecute", r) - ret0, _ := ret[0].(*v2api.ImageListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListImagesExecute indicates an expected call of ListImagesExecute. -func (mr *MockDefaultAPIMockRecorder) ListImagesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListImagesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListImagesExecute), r) -} - -// ListKeyPairs mocks base method. -func (m *MockDefaultAPI) ListKeyPairs(ctx context.Context) v2api.ApiListKeyPairsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListKeyPairs", ctx) - ret0, _ := ret[0].(v2api.ApiListKeyPairsRequest) - return ret0 -} - -// ListKeyPairs indicates an expected call of ListKeyPairs. -func (mr *MockDefaultAPIMockRecorder) ListKeyPairs(ctx any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListKeyPairs", reflect.TypeOf((*MockDefaultAPI)(nil).ListKeyPairs), ctx) -} - -// ListKeyPairsExecute mocks base method. -func (m *MockDefaultAPI) ListKeyPairsExecute(r v2api.ApiListKeyPairsRequest) (*v2api.KeyPairListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListKeyPairsExecute", r) - ret0, _ := ret[0].(*v2api.KeyPairListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListKeyPairsExecute indicates an expected call of ListKeyPairsExecute. -func (mr *MockDefaultAPIMockRecorder) ListKeyPairsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListKeyPairsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListKeyPairsExecute), r) -} - -// ListMachineTypes mocks base method. -func (m *MockDefaultAPI) ListMachineTypes(ctx context.Context, projectId, region string) v2api.ApiListMachineTypesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListMachineTypes", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListMachineTypesRequest) - return ret0 -} - -// ListMachineTypes indicates an expected call of ListMachineTypes. -func (mr *MockDefaultAPIMockRecorder) ListMachineTypes(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMachineTypes", reflect.TypeOf((*MockDefaultAPI)(nil).ListMachineTypes), ctx, projectId, region) -} - -// ListMachineTypesExecute mocks base method. -func (m *MockDefaultAPI) ListMachineTypesExecute(r v2api.ApiListMachineTypesRequest) (*v2api.MachineTypeListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListMachineTypesExecute", r) - ret0, _ := ret[0].(*v2api.MachineTypeListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListMachineTypesExecute indicates an expected call of ListMachineTypesExecute. -func (mr *MockDefaultAPIMockRecorder) ListMachineTypesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMachineTypesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListMachineTypesExecute), r) -} - -// ListNetworkAreaProjects mocks base method. -func (m *MockDefaultAPI) ListNetworkAreaProjects(ctx context.Context, organizationId, areaId string) v2api.ApiListNetworkAreaProjectsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreaProjects", ctx, organizationId, areaId) - ret0, _ := ret[0].(v2api.ApiListNetworkAreaProjectsRequest) - return ret0 -} - -// ListNetworkAreaProjects indicates an expected call of ListNetworkAreaProjects. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreaProjects(ctx, organizationId, areaId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreaProjects", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreaProjects), ctx, organizationId, areaId) -} - -// ListNetworkAreaProjectsExecute mocks base method. -func (m *MockDefaultAPI) ListNetworkAreaProjectsExecute(r v2api.ApiListNetworkAreaProjectsRequest) (*v2api.ProjectListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreaProjectsExecute", r) - ret0, _ := ret[0].(*v2api.ProjectListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListNetworkAreaProjectsExecute indicates an expected call of ListNetworkAreaProjectsExecute. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreaProjectsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreaProjectsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreaProjectsExecute), r) -} - -// ListNetworkAreaRanges mocks base method. -func (m *MockDefaultAPI) ListNetworkAreaRanges(ctx context.Context, organizationId, areaId, region string) v2api.ApiListNetworkAreaRangesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreaRanges", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiListNetworkAreaRangesRequest) - return ret0 -} - -// ListNetworkAreaRanges indicates an expected call of ListNetworkAreaRanges. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreaRanges(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreaRanges", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreaRanges), ctx, organizationId, areaId, region) -} - -// ListNetworkAreaRangesExecute mocks base method. -func (m *MockDefaultAPI) ListNetworkAreaRangesExecute(r v2api.ApiListNetworkAreaRangesRequest) (*v2api.NetworkRangeListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreaRangesExecute", r) - ret0, _ := ret[0].(*v2api.NetworkRangeListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListNetworkAreaRangesExecute indicates an expected call of ListNetworkAreaRangesExecute. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreaRangesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreaRangesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreaRangesExecute), r) -} - -// ListNetworkAreaRegions mocks base method. -func (m *MockDefaultAPI) ListNetworkAreaRegions(ctx context.Context, organizationId, areaId string) v2api.ApiListNetworkAreaRegionsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreaRegions", ctx, organizationId, areaId) - ret0, _ := ret[0].(v2api.ApiListNetworkAreaRegionsRequest) - return ret0 -} - -// ListNetworkAreaRegions indicates an expected call of ListNetworkAreaRegions. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreaRegions(ctx, organizationId, areaId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreaRegions", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreaRegions), ctx, organizationId, areaId) -} - -// ListNetworkAreaRegionsExecute mocks base method. -func (m *MockDefaultAPI) ListNetworkAreaRegionsExecute(r v2api.ApiListNetworkAreaRegionsRequest) (*v2api.RegionalAreaListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreaRegionsExecute", r) - ret0, _ := ret[0].(*v2api.RegionalAreaListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListNetworkAreaRegionsExecute indicates an expected call of ListNetworkAreaRegionsExecute. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreaRegionsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreaRegionsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreaRegionsExecute), r) -} - -// ListNetworkAreaRoutes mocks base method. -func (m *MockDefaultAPI) ListNetworkAreaRoutes(ctx context.Context, organizationId, areaId, region string) v2api.ApiListNetworkAreaRoutesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreaRoutes", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiListNetworkAreaRoutesRequest) - return ret0 -} - -// ListNetworkAreaRoutes indicates an expected call of ListNetworkAreaRoutes. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreaRoutes(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreaRoutes", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreaRoutes), ctx, organizationId, areaId, region) -} - -// ListNetworkAreaRoutesExecute mocks base method. -func (m *MockDefaultAPI) ListNetworkAreaRoutesExecute(r v2api.ApiListNetworkAreaRoutesRequest) (*v2api.RouteListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreaRoutesExecute", r) - ret0, _ := ret[0].(*v2api.RouteListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListNetworkAreaRoutesExecute indicates an expected call of ListNetworkAreaRoutesExecute. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreaRoutesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreaRoutesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreaRoutesExecute), r) -} - -// ListNetworkAreas mocks base method. -func (m *MockDefaultAPI) ListNetworkAreas(ctx context.Context, organizationId string) v2api.ApiListNetworkAreasRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreas", ctx, organizationId) - ret0, _ := ret[0].(v2api.ApiListNetworkAreasRequest) - return ret0 -} - -// ListNetworkAreas indicates an expected call of ListNetworkAreas. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreas(ctx, organizationId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreas", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreas), ctx, organizationId) -} - -// ListNetworkAreasExecute mocks base method. -func (m *MockDefaultAPI) ListNetworkAreasExecute(r v2api.ApiListNetworkAreasRequest) (*v2api.NetworkAreaListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworkAreasExecute", r) - ret0, _ := ret[0].(*v2api.NetworkAreaListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListNetworkAreasExecute indicates an expected call of ListNetworkAreasExecute. -func (mr *MockDefaultAPIMockRecorder) ListNetworkAreasExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkAreasExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworkAreasExecute), r) -} - -// ListNetworks mocks base method. -func (m *MockDefaultAPI) ListNetworks(ctx context.Context, projectId, region string) v2api.ApiListNetworksRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworks", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListNetworksRequest) - return ret0 -} - -// ListNetworks indicates an expected call of ListNetworks. -func (mr *MockDefaultAPIMockRecorder) ListNetworks(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworks", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworks), ctx, projectId, region) -} - -// ListNetworksExecute mocks base method. -func (m *MockDefaultAPI) ListNetworksExecute(r v2api.ApiListNetworksRequest) (*v2api.NetworkListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNetworksExecute", r) - ret0, _ := ret[0].(*v2api.NetworkListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListNetworksExecute indicates an expected call of ListNetworksExecute. -func (mr *MockDefaultAPIMockRecorder) ListNetworksExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworksExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListNetworksExecute), r) -} - -// ListNics mocks base method. -func (m *MockDefaultAPI) ListNics(ctx context.Context, projectId, region, networkId string) v2api.ApiListNicsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNics", ctx, projectId, region, networkId) - ret0, _ := ret[0].(v2api.ApiListNicsRequest) - return ret0 -} - -// ListNics indicates an expected call of ListNics. -func (mr *MockDefaultAPIMockRecorder) ListNics(ctx, projectId, region, networkId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNics", reflect.TypeOf((*MockDefaultAPI)(nil).ListNics), ctx, projectId, region, networkId) -} - -// ListNicsExecute mocks base method. -func (m *MockDefaultAPI) ListNicsExecute(r v2api.ApiListNicsRequest) (*v2api.NICListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListNicsExecute", r) - ret0, _ := ret[0].(*v2api.NICListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListNicsExecute indicates an expected call of ListNicsExecute. -func (mr *MockDefaultAPIMockRecorder) ListNicsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNicsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListNicsExecute), r) -} - -// ListProjectNICs mocks base method. -func (m *MockDefaultAPI) ListProjectNICs(ctx context.Context, projectId, region string) v2api.ApiListProjectNICsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListProjectNICs", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListProjectNICsRequest) - return ret0 -} - -// ListProjectNICs indicates an expected call of ListProjectNICs. -func (mr *MockDefaultAPIMockRecorder) ListProjectNICs(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListProjectNICs", reflect.TypeOf((*MockDefaultAPI)(nil).ListProjectNICs), ctx, projectId, region) -} - -// ListProjectNICsExecute mocks base method. -func (m *MockDefaultAPI) ListProjectNICsExecute(r v2api.ApiListProjectNICsRequest) (*v2api.NICListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListProjectNICsExecute", r) - ret0, _ := ret[0].(*v2api.NICListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListProjectNICsExecute indicates an expected call of ListProjectNICsExecute. -func (mr *MockDefaultAPIMockRecorder) ListProjectNICsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListProjectNICsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListProjectNICsExecute), r) -} - -// ListPublicIPRanges mocks base method. -func (m *MockDefaultAPI) ListPublicIPRanges(ctx context.Context) v2api.ApiListPublicIPRangesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListPublicIPRanges", ctx) - ret0, _ := ret[0].(v2api.ApiListPublicIPRangesRequest) - return ret0 -} - -// ListPublicIPRanges indicates an expected call of ListPublicIPRanges. -func (mr *MockDefaultAPIMockRecorder) ListPublicIPRanges(ctx any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPublicIPRanges", reflect.TypeOf((*MockDefaultAPI)(nil).ListPublicIPRanges), ctx) -} - -// ListPublicIPRangesExecute mocks base method. -func (m *MockDefaultAPI) ListPublicIPRangesExecute(r v2api.ApiListPublicIPRangesRequest) (*v2api.PublicNetworkListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListPublicIPRangesExecute", r) - ret0, _ := ret[0].(*v2api.PublicNetworkListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListPublicIPRangesExecute indicates an expected call of ListPublicIPRangesExecute. -func (mr *MockDefaultAPIMockRecorder) ListPublicIPRangesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPublicIPRangesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListPublicIPRangesExecute), r) -} - -// ListPublicIPs mocks base method. -func (m *MockDefaultAPI) ListPublicIPs(ctx context.Context, projectId, region string) v2api.ApiListPublicIPsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListPublicIPs", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListPublicIPsRequest) - return ret0 -} - -// ListPublicIPs indicates an expected call of ListPublicIPs. -func (mr *MockDefaultAPIMockRecorder) ListPublicIPs(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPublicIPs", reflect.TypeOf((*MockDefaultAPI)(nil).ListPublicIPs), ctx, projectId, region) -} - -// ListPublicIPsExecute mocks base method. -func (m *MockDefaultAPI) ListPublicIPsExecute(r v2api.ApiListPublicIPsRequest) (*v2api.PublicIpListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListPublicIPsExecute", r) - ret0, _ := ret[0].(*v2api.PublicIpListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListPublicIPsExecute indicates an expected call of ListPublicIPsExecute. -func (mr *MockDefaultAPIMockRecorder) ListPublicIPsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPublicIPsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListPublicIPsExecute), r) -} - -// ListQuotas mocks base method. -func (m *MockDefaultAPI) ListQuotas(ctx context.Context, projectId, region string) v2api.ApiListQuotasRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListQuotas", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListQuotasRequest) - return ret0 -} - -// ListQuotas indicates an expected call of ListQuotas. -func (mr *MockDefaultAPIMockRecorder) ListQuotas(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListQuotas", reflect.TypeOf((*MockDefaultAPI)(nil).ListQuotas), ctx, projectId, region) -} - -// ListQuotasExecute mocks base method. -func (m *MockDefaultAPI) ListQuotasExecute(r v2api.ApiListQuotasRequest) (*v2api.QuotaListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListQuotasExecute", r) - ret0, _ := ret[0].(*v2api.QuotaListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListQuotasExecute indicates an expected call of ListQuotasExecute. -func (mr *MockDefaultAPIMockRecorder) ListQuotasExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListQuotasExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListQuotasExecute), r) -} - -// ListRoutesOfRoutingTable mocks base method. -func (m *MockDefaultAPI) ListRoutesOfRoutingTable(ctx context.Context, organizationId, areaId, region, routingTableId string) v2api.ApiListRoutesOfRoutingTableRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListRoutesOfRoutingTable", ctx, organizationId, areaId, region, routingTableId) - ret0, _ := ret[0].(v2api.ApiListRoutesOfRoutingTableRequest) - return ret0 -} - -// ListRoutesOfRoutingTable indicates an expected call of ListRoutesOfRoutingTable. -func (mr *MockDefaultAPIMockRecorder) ListRoutesOfRoutingTable(ctx, organizationId, areaId, region, routingTableId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRoutesOfRoutingTable", reflect.TypeOf((*MockDefaultAPI)(nil).ListRoutesOfRoutingTable), ctx, organizationId, areaId, region, routingTableId) -} - -// ListRoutesOfRoutingTableExecute mocks base method. -func (m *MockDefaultAPI) ListRoutesOfRoutingTableExecute(r v2api.ApiListRoutesOfRoutingTableRequest) (*v2api.RouteListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListRoutesOfRoutingTableExecute", r) - ret0, _ := ret[0].(*v2api.RouteListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListRoutesOfRoutingTableExecute indicates an expected call of ListRoutesOfRoutingTableExecute. -func (mr *MockDefaultAPIMockRecorder) ListRoutesOfRoutingTableExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRoutesOfRoutingTableExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListRoutesOfRoutingTableExecute), r) -} - -// ListRoutingTablesOfArea mocks base method. -func (m *MockDefaultAPI) ListRoutingTablesOfArea(ctx context.Context, organizationId, areaId, region string) v2api.ApiListRoutingTablesOfAreaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListRoutingTablesOfArea", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiListRoutingTablesOfAreaRequest) - return ret0 -} - -// ListRoutingTablesOfArea indicates an expected call of ListRoutingTablesOfArea. -func (mr *MockDefaultAPIMockRecorder) ListRoutingTablesOfArea(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRoutingTablesOfArea", reflect.TypeOf((*MockDefaultAPI)(nil).ListRoutingTablesOfArea), ctx, organizationId, areaId, region) -} - -// ListRoutingTablesOfAreaExecute mocks base method. -func (m *MockDefaultAPI) ListRoutingTablesOfAreaExecute(r v2api.ApiListRoutingTablesOfAreaRequest) (*v2api.RoutingTableListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListRoutingTablesOfAreaExecute", r) - ret0, _ := ret[0].(*v2api.RoutingTableListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListRoutingTablesOfAreaExecute indicates an expected call of ListRoutingTablesOfAreaExecute. -func (mr *MockDefaultAPIMockRecorder) ListRoutingTablesOfAreaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRoutingTablesOfAreaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListRoutingTablesOfAreaExecute), r) -} - -// ListSecurityGroupRules mocks base method. -func (m *MockDefaultAPI) ListSecurityGroupRules(ctx context.Context, projectId, region, securityGroupId string) v2api.ApiListSecurityGroupRulesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSecurityGroupRules", ctx, projectId, region, securityGroupId) - ret0, _ := ret[0].(v2api.ApiListSecurityGroupRulesRequest) - return ret0 -} - -// ListSecurityGroupRules indicates an expected call of ListSecurityGroupRules. -func (mr *MockDefaultAPIMockRecorder) ListSecurityGroupRules(ctx, projectId, region, securityGroupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSecurityGroupRules", reflect.TypeOf((*MockDefaultAPI)(nil).ListSecurityGroupRules), ctx, projectId, region, securityGroupId) -} - -// ListSecurityGroupRulesExecute mocks base method. -func (m *MockDefaultAPI) ListSecurityGroupRulesExecute(r v2api.ApiListSecurityGroupRulesRequest) (*v2api.SecurityGroupRuleListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSecurityGroupRulesExecute", r) - ret0, _ := ret[0].(*v2api.SecurityGroupRuleListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListSecurityGroupRulesExecute indicates an expected call of ListSecurityGroupRulesExecute. -func (mr *MockDefaultAPIMockRecorder) ListSecurityGroupRulesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSecurityGroupRulesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListSecurityGroupRulesExecute), r) -} - -// ListSecurityGroups mocks base method. -func (m *MockDefaultAPI) ListSecurityGroups(ctx context.Context, projectId, region string) v2api.ApiListSecurityGroupsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSecurityGroups", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListSecurityGroupsRequest) - return ret0 -} - -// ListSecurityGroups indicates an expected call of ListSecurityGroups. -func (mr *MockDefaultAPIMockRecorder) ListSecurityGroups(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSecurityGroups", reflect.TypeOf((*MockDefaultAPI)(nil).ListSecurityGroups), ctx, projectId, region) -} - -// ListSecurityGroupsExecute mocks base method. -func (m *MockDefaultAPI) ListSecurityGroupsExecute(r v2api.ApiListSecurityGroupsRequest) (*v2api.SecurityGroupListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSecurityGroupsExecute", r) - ret0, _ := ret[0].(*v2api.SecurityGroupListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListSecurityGroupsExecute indicates an expected call of ListSecurityGroupsExecute. -func (mr *MockDefaultAPIMockRecorder) ListSecurityGroupsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSecurityGroupsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListSecurityGroupsExecute), r) -} - -// ListServerNICs mocks base method. -func (m *MockDefaultAPI) ListServerNICs(ctx context.Context, projectId, region, serverId string) v2api.ApiListServerNICsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListServerNICs", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiListServerNICsRequest) - return ret0 -} - -// ListServerNICs indicates an expected call of ListServerNICs. -func (mr *MockDefaultAPIMockRecorder) ListServerNICs(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServerNICs", reflect.TypeOf((*MockDefaultAPI)(nil).ListServerNICs), ctx, projectId, region, serverId) -} - -// ListServerNICsExecute mocks base method. -func (m *MockDefaultAPI) ListServerNICsExecute(r v2api.ApiListServerNICsRequest) (*v2api.NICListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListServerNICsExecute", r) - ret0, _ := ret[0].(*v2api.NICListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListServerNICsExecute indicates an expected call of ListServerNICsExecute. -func (mr *MockDefaultAPIMockRecorder) ListServerNICsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServerNICsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListServerNICsExecute), r) -} - -// ListServerServiceAccounts mocks base method. -func (m *MockDefaultAPI) ListServerServiceAccounts(ctx context.Context, projectId, region, serverId string) v2api.ApiListServerServiceAccountsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListServerServiceAccounts", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiListServerServiceAccountsRequest) - return ret0 -} - -// ListServerServiceAccounts indicates an expected call of ListServerServiceAccounts. -func (mr *MockDefaultAPIMockRecorder) ListServerServiceAccounts(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServerServiceAccounts", reflect.TypeOf((*MockDefaultAPI)(nil).ListServerServiceAccounts), ctx, projectId, region, serverId) -} - -// ListServerServiceAccountsExecute mocks base method. -func (m *MockDefaultAPI) ListServerServiceAccountsExecute(r v2api.ApiListServerServiceAccountsRequest) (*v2api.ServiceAccountMailListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListServerServiceAccountsExecute", r) - ret0, _ := ret[0].(*v2api.ServiceAccountMailListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListServerServiceAccountsExecute indicates an expected call of ListServerServiceAccountsExecute. -func (mr *MockDefaultAPIMockRecorder) ListServerServiceAccountsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServerServiceAccountsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListServerServiceAccountsExecute), r) -} - -// ListServers mocks base method. -func (m *MockDefaultAPI) ListServers(ctx context.Context, projectId, region string) v2api.ApiListServersRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListServers", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListServersRequest) - return ret0 -} - -// ListServers indicates an expected call of ListServers. -func (mr *MockDefaultAPIMockRecorder) ListServers(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServers", reflect.TypeOf((*MockDefaultAPI)(nil).ListServers), ctx, projectId, region) -} - -// ListServersExecute mocks base method. -func (m *MockDefaultAPI) ListServersExecute(r v2api.ApiListServersRequest) (*v2api.ServerListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListServersExecute", r) - ret0, _ := ret[0].(*v2api.ServerListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListServersExecute indicates an expected call of ListServersExecute. -func (mr *MockDefaultAPIMockRecorder) ListServersExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServersExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListServersExecute), r) -} - -// ListSnapshotsInProject mocks base method. -func (m *MockDefaultAPI) ListSnapshotsInProject(ctx context.Context, projectId, region string) v2api.ApiListSnapshotsInProjectRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSnapshotsInProject", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListSnapshotsInProjectRequest) - return ret0 -} - -// ListSnapshotsInProject indicates an expected call of ListSnapshotsInProject. -func (mr *MockDefaultAPIMockRecorder) ListSnapshotsInProject(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSnapshotsInProject", reflect.TypeOf((*MockDefaultAPI)(nil).ListSnapshotsInProject), ctx, projectId, region) -} - -// ListSnapshotsInProjectExecute mocks base method. -func (m *MockDefaultAPI) ListSnapshotsInProjectExecute(r v2api.ApiListSnapshotsInProjectRequest) (*v2api.SnapshotListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSnapshotsInProjectExecute", r) - ret0, _ := ret[0].(*v2api.SnapshotListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListSnapshotsInProjectExecute indicates an expected call of ListSnapshotsInProjectExecute. -func (mr *MockDefaultAPIMockRecorder) ListSnapshotsInProjectExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSnapshotsInProjectExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListSnapshotsInProjectExecute), r) -} - -// ListVolumePerformanceClasses mocks base method. -func (m *MockDefaultAPI) ListVolumePerformanceClasses(ctx context.Context, projectId, region string) v2api.ApiListVolumePerformanceClassesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListVolumePerformanceClasses", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListVolumePerformanceClassesRequest) - return ret0 -} - -// ListVolumePerformanceClasses indicates an expected call of ListVolumePerformanceClasses. -func (mr *MockDefaultAPIMockRecorder) ListVolumePerformanceClasses(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVolumePerformanceClasses", reflect.TypeOf((*MockDefaultAPI)(nil).ListVolumePerformanceClasses), ctx, projectId, region) -} - -// ListVolumePerformanceClassesExecute mocks base method. -func (m *MockDefaultAPI) ListVolumePerformanceClassesExecute(r v2api.ApiListVolumePerformanceClassesRequest) (*v2api.VolumePerformanceClassListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListVolumePerformanceClassesExecute", r) - ret0, _ := ret[0].(*v2api.VolumePerformanceClassListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListVolumePerformanceClassesExecute indicates an expected call of ListVolumePerformanceClassesExecute. -func (mr *MockDefaultAPIMockRecorder) ListVolumePerformanceClassesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVolumePerformanceClassesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListVolumePerformanceClassesExecute), r) -} - -// ListVolumes mocks base method. -func (m *MockDefaultAPI) ListVolumes(ctx context.Context, projectId, region string) v2api.ApiListVolumesRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListVolumes", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListVolumesRequest) - return ret0 -} - -// ListVolumes indicates an expected call of ListVolumes. -func (mr *MockDefaultAPIMockRecorder) ListVolumes(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVolumes", reflect.TypeOf((*MockDefaultAPI)(nil).ListVolumes), ctx, projectId, region) -} - -// ListVolumesExecute mocks base method. -func (m *MockDefaultAPI) ListVolumesExecute(r v2api.ApiListVolumesRequest) (*v2api.VolumeListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListVolumesExecute", r) - ret0, _ := ret[0].(*v2api.VolumeListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListVolumesExecute indicates an expected call of ListVolumesExecute. -func (mr *MockDefaultAPIMockRecorder) ListVolumesExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVolumesExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListVolumesExecute), r) -} - -// PartialUpdateNetwork mocks base method. -func (m *MockDefaultAPI) PartialUpdateNetwork(ctx context.Context, projectId, region, networkId string) v2api.ApiPartialUpdateNetworkRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PartialUpdateNetwork", ctx, projectId, region, networkId) - ret0, _ := ret[0].(v2api.ApiPartialUpdateNetworkRequest) - return ret0 -} - -// PartialUpdateNetwork indicates an expected call of PartialUpdateNetwork. -func (mr *MockDefaultAPIMockRecorder) PartialUpdateNetwork(ctx, projectId, region, networkId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PartialUpdateNetwork", reflect.TypeOf((*MockDefaultAPI)(nil).PartialUpdateNetwork), ctx, projectId, region, networkId) -} - -// PartialUpdateNetworkArea mocks base method. -func (m *MockDefaultAPI) PartialUpdateNetworkArea(ctx context.Context, organizationId, areaId string) v2api.ApiPartialUpdateNetworkAreaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PartialUpdateNetworkArea", ctx, organizationId, areaId) - ret0, _ := ret[0].(v2api.ApiPartialUpdateNetworkAreaRequest) - return ret0 -} - -// PartialUpdateNetworkArea indicates an expected call of PartialUpdateNetworkArea. -func (mr *MockDefaultAPIMockRecorder) PartialUpdateNetworkArea(ctx, organizationId, areaId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PartialUpdateNetworkArea", reflect.TypeOf((*MockDefaultAPI)(nil).PartialUpdateNetworkArea), ctx, organizationId, areaId) -} - -// PartialUpdateNetworkAreaExecute mocks base method. -func (m *MockDefaultAPI) PartialUpdateNetworkAreaExecute(r v2api.ApiPartialUpdateNetworkAreaRequest) (*v2api.NetworkArea, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PartialUpdateNetworkAreaExecute", r) - ret0, _ := ret[0].(*v2api.NetworkArea) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// PartialUpdateNetworkAreaExecute indicates an expected call of PartialUpdateNetworkAreaExecute. -func (mr *MockDefaultAPIMockRecorder) PartialUpdateNetworkAreaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PartialUpdateNetworkAreaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).PartialUpdateNetworkAreaExecute), r) -} - -// PartialUpdateNetworkExecute mocks base method. -func (m *MockDefaultAPI) PartialUpdateNetworkExecute(r v2api.ApiPartialUpdateNetworkRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PartialUpdateNetworkExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// PartialUpdateNetworkExecute indicates an expected call of PartialUpdateNetworkExecute. -func (mr *MockDefaultAPIMockRecorder) PartialUpdateNetworkExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PartialUpdateNetworkExecute", reflect.TypeOf((*MockDefaultAPI)(nil).PartialUpdateNetworkExecute), r) -} - -// RebootServer mocks base method. -func (m *MockDefaultAPI) RebootServer(ctx context.Context, projectId, region, serverId string) v2api.ApiRebootServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RebootServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiRebootServerRequest) - return ret0 -} - -// RebootServer indicates an expected call of RebootServer. -func (mr *MockDefaultAPIMockRecorder) RebootServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RebootServer", reflect.TypeOf((*MockDefaultAPI)(nil).RebootServer), ctx, projectId, region, serverId) -} - -// RebootServerExecute mocks base method. -func (m *MockDefaultAPI) RebootServerExecute(r v2api.ApiRebootServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RebootServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// RebootServerExecute indicates an expected call of RebootServerExecute. -func (mr *MockDefaultAPIMockRecorder) RebootServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RebootServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).RebootServerExecute), r) -} - -// RemoveNetworkFromServer mocks base method. -func (m *MockDefaultAPI) RemoveNetworkFromServer(ctx context.Context, projectId, region, serverId, networkId string) v2api.ApiRemoveNetworkFromServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveNetworkFromServer", ctx, projectId, region, serverId, networkId) - ret0, _ := ret[0].(v2api.ApiRemoveNetworkFromServerRequest) - return ret0 -} - -// RemoveNetworkFromServer indicates an expected call of RemoveNetworkFromServer. -func (mr *MockDefaultAPIMockRecorder) RemoveNetworkFromServer(ctx, projectId, region, serverId, networkId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveNetworkFromServer", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveNetworkFromServer), ctx, projectId, region, serverId, networkId) -} - -// RemoveNetworkFromServerExecute mocks base method. -func (m *MockDefaultAPI) RemoveNetworkFromServerExecute(r v2api.ApiRemoveNetworkFromServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveNetworkFromServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// RemoveNetworkFromServerExecute indicates an expected call of RemoveNetworkFromServerExecute. -func (mr *MockDefaultAPIMockRecorder) RemoveNetworkFromServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveNetworkFromServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveNetworkFromServerExecute), r) -} - -// RemoveNicFromServer mocks base method. -func (m *MockDefaultAPI) RemoveNicFromServer(ctx context.Context, projectId, region, serverId, nicId string) v2api.ApiRemoveNicFromServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveNicFromServer", ctx, projectId, region, serverId, nicId) - ret0, _ := ret[0].(v2api.ApiRemoveNicFromServerRequest) - return ret0 -} - -// RemoveNicFromServer indicates an expected call of RemoveNicFromServer. -func (mr *MockDefaultAPIMockRecorder) RemoveNicFromServer(ctx, projectId, region, serverId, nicId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveNicFromServer", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveNicFromServer), ctx, projectId, region, serverId, nicId) -} - -// RemoveNicFromServerExecute mocks base method. -func (m *MockDefaultAPI) RemoveNicFromServerExecute(r v2api.ApiRemoveNicFromServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveNicFromServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// RemoveNicFromServerExecute indicates an expected call of RemoveNicFromServerExecute. -func (mr *MockDefaultAPIMockRecorder) RemoveNicFromServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveNicFromServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveNicFromServerExecute), r) -} - -// RemovePublicIpFromServer mocks base method. -func (m *MockDefaultAPI) RemovePublicIpFromServer(ctx context.Context, projectId, region, serverId, publicIpId string) v2api.ApiRemovePublicIpFromServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemovePublicIpFromServer", ctx, projectId, region, serverId, publicIpId) - ret0, _ := ret[0].(v2api.ApiRemovePublicIpFromServerRequest) - return ret0 -} - -// RemovePublicIpFromServer indicates an expected call of RemovePublicIpFromServer. -func (mr *MockDefaultAPIMockRecorder) RemovePublicIpFromServer(ctx, projectId, region, serverId, publicIpId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemovePublicIpFromServer", reflect.TypeOf((*MockDefaultAPI)(nil).RemovePublicIpFromServer), ctx, projectId, region, serverId, publicIpId) -} - -// RemovePublicIpFromServerExecute mocks base method. -func (m *MockDefaultAPI) RemovePublicIpFromServerExecute(r v2api.ApiRemovePublicIpFromServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemovePublicIpFromServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// RemovePublicIpFromServerExecute indicates an expected call of RemovePublicIpFromServerExecute. -func (mr *MockDefaultAPIMockRecorder) RemovePublicIpFromServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemovePublicIpFromServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).RemovePublicIpFromServerExecute), r) -} - -// RemoveSecurityGroupFromServer mocks base method. -func (m *MockDefaultAPI) RemoveSecurityGroupFromServer(ctx context.Context, projectId, region, serverId, securityGroupId string) v2api.ApiRemoveSecurityGroupFromServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveSecurityGroupFromServer", ctx, projectId, region, serverId, securityGroupId) - ret0, _ := ret[0].(v2api.ApiRemoveSecurityGroupFromServerRequest) - return ret0 -} - -// RemoveSecurityGroupFromServer indicates an expected call of RemoveSecurityGroupFromServer. -func (mr *MockDefaultAPIMockRecorder) RemoveSecurityGroupFromServer(ctx, projectId, region, serverId, securityGroupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveSecurityGroupFromServer", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveSecurityGroupFromServer), ctx, projectId, region, serverId, securityGroupId) -} - -// RemoveSecurityGroupFromServerExecute mocks base method. -func (m *MockDefaultAPI) RemoveSecurityGroupFromServerExecute(r v2api.ApiRemoveSecurityGroupFromServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveSecurityGroupFromServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// RemoveSecurityGroupFromServerExecute indicates an expected call of RemoveSecurityGroupFromServerExecute. -func (mr *MockDefaultAPIMockRecorder) RemoveSecurityGroupFromServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveSecurityGroupFromServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveSecurityGroupFromServerExecute), r) -} - -// RemoveServiceAccountFromServer mocks base method. -func (m *MockDefaultAPI) RemoveServiceAccountFromServer(ctx context.Context, projectId, region, serverId, serviceAccountMail string) v2api.ApiRemoveServiceAccountFromServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveServiceAccountFromServer", ctx, projectId, region, serverId, serviceAccountMail) - ret0, _ := ret[0].(v2api.ApiRemoveServiceAccountFromServerRequest) - return ret0 -} - -// RemoveServiceAccountFromServer indicates an expected call of RemoveServiceAccountFromServer. -func (mr *MockDefaultAPIMockRecorder) RemoveServiceAccountFromServer(ctx, projectId, region, serverId, serviceAccountMail any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveServiceAccountFromServer", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveServiceAccountFromServer), ctx, projectId, region, serverId, serviceAccountMail) -} - -// RemoveServiceAccountFromServerExecute mocks base method. -func (m *MockDefaultAPI) RemoveServiceAccountFromServerExecute(r v2api.ApiRemoveServiceAccountFromServerRequest) (*v2api.ServiceAccountMailListResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveServiceAccountFromServerExecute", r) - ret0, _ := ret[0].(*v2api.ServiceAccountMailListResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// RemoveServiceAccountFromServerExecute indicates an expected call of RemoveServiceAccountFromServerExecute. -func (mr *MockDefaultAPIMockRecorder) RemoveServiceAccountFromServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveServiceAccountFromServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveServiceAccountFromServerExecute), r) -} - -// RemoveVolumeFromServer mocks base method. -func (m *MockDefaultAPI) RemoveVolumeFromServer(ctx context.Context, projectId, region, serverId, volumeId string) v2api.ApiRemoveVolumeFromServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveVolumeFromServer", ctx, projectId, region, serverId, volumeId) - ret0, _ := ret[0].(v2api.ApiRemoveVolumeFromServerRequest) - return ret0 -} - -// RemoveVolumeFromServer indicates an expected call of RemoveVolumeFromServer. -func (mr *MockDefaultAPIMockRecorder) RemoveVolumeFromServer(ctx, projectId, region, serverId, volumeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveVolumeFromServer", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveVolumeFromServer), ctx, projectId, region, serverId, volumeId) -} - -// RemoveVolumeFromServerExecute mocks base method. -func (m *MockDefaultAPI) RemoveVolumeFromServerExecute(r v2api.ApiRemoveVolumeFromServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveVolumeFromServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// RemoveVolumeFromServerExecute indicates an expected call of RemoveVolumeFromServerExecute. -func (mr *MockDefaultAPIMockRecorder) RemoveVolumeFromServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveVolumeFromServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).RemoveVolumeFromServerExecute), r) -} - -// RescueServer mocks base method. -func (m *MockDefaultAPI) RescueServer(ctx context.Context, projectId, region, serverId string) v2api.ApiRescueServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RescueServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiRescueServerRequest) - return ret0 -} - -// RescueServer indicates an expected call of RescueServer. -func (mr *MockDefaultAPIMockRecorder) RescueServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RescueServer", reflect.TypeOf((*MockDefaultAPI)(nil).RescueServer), ctx, projectId, region, serverId) -} - -// RescueServerExecute mocks base method. -func (m *MockDefaultAPI) RescueServerExecute(r v2api.ApiRescueServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RescueServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// RescueServerExecute indicates an expected call of RescueServerExecute. -func (mr *MockDefaultAPIMockRecorder) RescueServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RescueServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).RescueServerExecute), r) -} - -// ResizeServer mocks base method. -func (m *MockDefaultAPI) ResizeServer(ctx context.Context, projectId, region, serverId string) v2api.ApiResizeServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ResizeServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiResizeServerRequest) - return ret0 -} - -// ResizeServer indicates an expected call of ResizeServer. -func (mr *MockDefaultAPIMockRecorder) ResizeServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResizeServer", reflect.TypeOf((*MockDefaultAPI)(nil).ResizeServer), ctx, projectId, region, serverId) -} - -// ResizeServerExecute mocks base method. -func (m *MockDefaultAPI) ResizeServerExecute(r v2api.ApiResizeServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ResizeServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// ResizeServerExecute indicates an expected call of ResizeServerExecute. -func (mr *MockDefaultAPIMockRecorder) ResizeServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResizeServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ResizeServerExecute), r) -} - -// ResizeVolume mocks base method. -func (m *MockDefaultAPI) ResizeVolume(ctx context.Context, projectId, region, volumeId string) v2api.ApiResizeVolumeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ResizeVolume", ctx, projectId, region, volumeId) - ret0, _ := ret[0].(v2api.ApiResizeVolumeRequest) - return ret0 -} - -// ResizeVolume indicates an expected call of ResizeVolume. -func (mr *MockDefaultAPIMockRecorder) ResizeVolume(ctx, projectId, region, volumeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResizeVolume", reflect.TypeOf((*MockDefaultAPI)(nil).ResizeVolume), ctx, projectId, region, volumeId) -} - -// ResizeVolumeExecute mocks base method. -func (m *MockDefaultAPI) ResizeVolumeExecute(r v2api.ApiResizeVolumeRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ResizeVolumeExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// ResizeVolumeExecute indicates an expected call of ResizeVolumeExecute. -func (mr *MockDefaultAPIMockRecorder) ResizeVolumeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResizeVolumeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ResizeVolumeExecute), r) -} - -// RestoreBackup mocks base method. -func (m *MockDefaultAPI) RestoreBackup(ctx context.Context, projectId, region, backupId string) v2api.ApiRestoreBackupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RestoreBackup", ctx, projectId, region, backupId) - ret0, _ := ret[0].(v2api.ApiRestoreBackupRequest) - return ret0 -} - -// RestoreBackup indicates an expected call of RestoreBackup. -func (mr *MockDefaultAPIMockRecorder) RestoreBackup(ctx, projectId, region, backupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RestoreBackup", reflect.TypeOf((*MockDefaultAPI)(nil).RestoreBackup), ctx, projectId, region, backupId) -} - -// RestoreBackupExecute mocks base method. -func (m *MockDefaultAPI) RestoreBackupExecute(r v2api.ApiRestoreBackupRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RestoreBackupExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// RestoreBackupExecute indicates an expected call of RestoreBackupExecute. -func (mr *MockDefaultAPIMockRecorder) RestoreBackupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RestoreBackupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).RestoreBackupExecute), r) -} - -// SetImageShare mocks base method. -func (m *MockDefaultAPI) SetImageShare(ctx context.Context, projectId, region, imageId string) v2api.ApiSetImageShareRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetImageShare", ctx, projectId, region, imageId) - ret0, _ := ret[0].(v2api.ApiSetImageShareRequest) - return ret0 -} - -// SetImageShare indicates an expected call of SetImageShare. -func (mr *MockDefaultAPIMockRecorder) SetImageShare(ctx, projectId, region, imageId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetImageShare", reflect.TypeOf((*MockDefaultAPI)(nil).SetImageShare), ctx, projectId, region, imageId) -} - -// SetImageShareExecute mocks base method. -func (m *MockDefaultAPI) SetImageShareExecute(r v2api.ApiSetImageShareRequest) (*v2api.ImageShare, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetImageShareExecute", r) - ret0, _ := ret[0].(*v2api.ImageShare) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// SetImageShareExecute indicates an expected call of SetImageShareExecute. -func (mr *MockDefaultAPIMockRecorder) SetImageShareExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetImageShareExecute", reflect.TypeOf((*MockDefaultAPI)(nil).SetImageShareExecute), r) -} - -// StartServer mocks base method. -func (m *MockDefaultAPI) StartServer(ctx context.Context, projectId, region, serverId string) v2api.ApiStartServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "StartServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiStartServerRequest) - return ret0 -} - -// StartServer indicates an expected call of StartServer. -func (mr *MockDefaultAPIMockRecorder) StartServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartServer", reflect.TypeOf((*MockDefaultAPI)(nil).StartServer), ctx, projectId, region, serverId) -} - -// StartServerExecute mocks base method. -func (m *MockDefaultAPI) StartServerExecute(r v2api.ApiStartServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "StartServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// StartServerExecute indicates an expected call of StartServerExecute. -func (mr *MockDefaultAPIMockRecorder) StartServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).StartServerExecute), r) -} - -// StopServer mocks base method. -func (m *MockDefaultAPI) StopServer(ctx context.Context, projectId, region, serverId string) v2api.ApiStopServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "StopServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiStopServerRequest) - return ret0 -} - -// StopServer indicates an expected call of StopServer. -func (mr *MockDefaultAPIMockRecorder) StopServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StopServer", reflect.TypeOf((*MockDefaultAPI)(nil).StopServer), ctx, projectId, region, serverId) -} - -// StopServerExecute mocks base method. -func (m *MockDefaultAPI) StopServerExecute(r v2api.ApiStopServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "StopServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// StopServerExecute indicates an expected call of StopServerExecute. -func (mr *MockDefaultAPIMockRecorder) StopServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StopServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).StopServerExecute), r) -} - -// UnrescueServer mocks base method. -func (m *MockDefaultAPI) UnrescueServer(ctx context.Context, projectId, region, serverId string) v2api.ApiUnrescueServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UnrescueServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiUnrescueServerRequest) - return ret0 -} - -// UnrescueServer indicates an expected call of UnrescueServer. -func (mr *MockDefaultAPIMockRecorder) UnrescueServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnrescueServer", reflect.TypeOf((*MockDefaultAPI)(nil).UnrescueServer), ctx, projectId, region, serverId) -} - -// UnrescueServerExecute mocks base method. -func (m *MockDefaultAPI) UnrescueServerExecute(r v2api.ApiUnrescueServerRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UnrescueServerExecute", r) - ret0, _ := ret[0].(error) - return ret0 -} - -// UnrescueServerExecute indicates an expected call of UnrescueServerExecute. -func (mr *MockDefaultAPIMockRecorder) UnrescueServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnrescueServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UnrescueServerExecute), r) -} - -// UpdateAttachedVolume mocks base method. -func (m *MockDefaultAPI) UpdateAttachedVolume(ctx context.Context, projectId, region, serverId, volumeId string) v2api.ApiUpdateAttachedVolumeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateAttachedVolume", ctx, projectId, region, serverId, volumeId) - ret0, _ := ret[0].(v2api.ApiUpdateAttachedVolumeRequest) - return ret0 -} - -// UpdateAttachedVolume indicates an expected call of UpdateAttachedVolume. -func (mr *MockDefaultAPIMockRecorder) UpdateAttachedVolume(ctx, projectId, region, serverId, volumeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAttachedVolume", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateAttachedVolume), ctx, projectId, region, serverId, volumeId) -} - -// UpdateAttachedVolumeExecute mocks base method. -func (m *MockDefaultAPI) UpdateAttachedVolumeExecute(r v2api.ApiUpdateAttachedVolumeRequest) (*v2api.VolumeAttachment, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateAttachedVolumeExecute", r) - ret0, _ := ret[0].(*v2api.VolumeAttachment) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateAttachedVolumeExecute indicates an expected call of UpdateAttachedVolumeExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateAttachedVolumeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAttachedVolumeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateAttachedVolumeExecute), r) -} - -// UpdateBackup mocks base method. -func (m *MockDefaultAPI) UpdateBackup(ctx context.Context, projectId, region, backupId string) v2api.ApiUpdateBackupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateBackup", ctx, projectId, region, backupId) - ret0, _ := ret[0].(v2api.ApiUpdateBackupRequest) - return ret0 -} - -// UpdateBackup indicates an expected call of UpdateBackup. -func (mr *MockDefaultAPIMockRecorder) UpdateBackup(ctx, projectId, region, backupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateBackup", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateBackup), ctx, projectId, region, backupId) -} - -// UpdateBackupExecute mocks base method. -func (m *MockDefaultAPI) UpdateBackupExecute(r v2api.ApiUpdateBackupRequest) (*v2api.Backup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateBackupExecute", r) - ret0, _ := ret[0].(*v2api.Backup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateBackupExecute indicates an expected call of UpdateBackupExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateBackupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateBackupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateBackupExecute), r) -} - -// UpdateImage mocks base method. -func (m *MockDefaultAPI) UpdateImage(ctx context.Context, projectId, region, imageId string) v2api.ApiUpdateImageRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateImage", ctx, projectId, region, imageId) - ret0, _ := ret[0].(v2api.ApiUpdateImageRequest) - return ret0 -} - -// UpdateImage indicates an expected call of UpdateImage. -func (mr *MockDefaultAPIMockRecorder) UpdateImage(ctx, projectId, region, imageId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateImage", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateImage), ctx, projectId, region, imageId) -} - -// UpdateImageExecute mocks base method. -func (m *MockDefaultAPI) UpdateImageExecute(r v2api.ApiUpdateImageRequest) (*v2api.Image, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateImageExecute", r) - ret0, _ := ret[0].(*v2api.Image) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateImageExecute indicates an expected call of UpdateImageExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateImageExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateImageExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateImageExecute), r) -} - -// UpdateImageShare mocks base method. -func (m *MockDefaultAPI) UpdateImageShare(ctx context.Context, projectId, region, imageId string) v2api.ApiUpdateImageShareRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateImageShare", ctx, projectId, region, imageId) - ret0, _ := ret[0].(v2api.ApiUpdateImageShareRequest) - return ret0 -} - -// UpdateImageShare indicates an expected call of UpdateImageShare. -func (mr *MockDefaultAPIMockRecorder) UpdateImageShare(ctx, projectId, region, imageId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateImageShare", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateImageShare), ctx, projectId, region, imageId) -} - -// UpdateImageShareExecute mocks base method. -func (m *MockDefaultAPI) UpdateImageShareExecute(r v2api.ApiUpdateImageShareRequest) (*v2api.ImageShare, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateImageShareExecute", r) - ret0, _ := ret[0].(*v2api.ImageShare) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateImageShareExecute indicates an expected call of UpdateImageShareExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateImageShareExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateImageShareExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateImageShareExecute), r) -} - -// UpdateKeyPair mocks base method. -func (m *MockDefaultAPI) UpdateKeyPair(ctx context.Context, keypairName string) v2api.ApiUpdateKeyPairRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateKeyPair", ctx, keypairName) - ret0, _ := ret[0].(v2api.ApiUpdateKeyPairRequest) - return ret0 -} - -// UpdateKeyPair indicates an expected call of UpdateKeyPair. -func (mr *MockDefaultAPIMockRecorder) UpdateKeyPair(ctx, keypairName any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateKeyPair", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateKeyPair), ctx, keypairName) -} - -// UpdateKeyPairExecute mocks base method. -func (m *MockDefaultAPI) UpdateKeyPairExecute(r v2api.ApiUpdateKeyPairRequest) (*v2api.Keypair, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateKeyPairExecute", r) - ret0, _ := ret[0].(*v2api.Keypair) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateKeyPairExecute indicates an expected call of UpdateKeyPairExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateKeyPairExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateKeyPairExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateKeyPairExecute), r) -} - -// UpdateNetworkAreaRegion mocks base method. -func (m *MockDefaultAPI) UpdateNetworkAreaRegion(ctx context.Context, organizationId, areaId, region string) v2api.ApiUpdateNetworkAreaRegionRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateNetworkAreaRegion", ctx, organizationId, areaId, region) - ret0, _ := ret[0].(v2api.ApiUpdateNetworkAreaRegionRequest) - return ret0 -} - -// UpdateNetworkAreaRegion indicates an expected call of UpdateNetworkAreaRegion. -func (mr *MockDefaultAPIMockRecorder) UpdateNetworkAreaRegion(ctx, organizationId, areaId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateNetworkAreaRegion", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateNetworkAreaRegion), ctx, organizationId, areaId, region) -} - -// UpdateNetworkAreaRegionExecute mocks base method. -func (m *MockDefaultAPI) UpdateNetworkAreaRegionExecute(r v2api.ApiUpdateNetworkAreaRegionRequest) (*v2api.RegionalArea, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateNetworkAreaRegionExecute", r) - ret0, _ := ret[0].(*v2api.RegionalArea) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateNetworkAreaRegionExecute indicates an expected call of UpdateNetworkAreaRegionExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateNetworkAreaRegionExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateNetworkAreaRegionExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateNetworkAreaRegionExecute), r) -} - -// UpdateNetworkAreaRoute mocks base method. -func (m *MockDefaultAPI) UpdateNetworkAreaRoute(ctx context.Context, organizationId, areaId, region, routeId string) v2api.ApiUpdateNetworkAreaRouteRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateNetworkAreaRoute", ctx, organizationId, areaId, region, routeId) - ret0, _ := ret[0].(v2api.ApiUpdateNetworkAreaRouteRequest) - return ret0 -} - -// UpdateNetworkAreaRoute indicates an expected call of UpdateNetworkAreaRoute. -func (mr *MockDefaultAPIMockRecorder) UpdateNetworkAreaRoute(ctx, organizationId, areaId, region, routeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateNetworkAreaRoute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateNetworkAreaRoute), ctx, organizationId, areaId, region, routeId) -} - -// UpdateNetworkAreaRouteExecute mocks base method. -func (m *MockDefaultAPI) UpdateNetworkAreaRouteExecute(r v2api.ApiUpdateNetworkAreaRouteRequest) (*v2api.Route, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateNetworkAreaRouteExecute", r) - ret0, _ := ret[0].(*v2api.Route) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateNetworkAreaRouteExecute indicates an expected call of UpdateNetworkAreaRouteExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateNetworkAreaRouteExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateNetworkAreaRouteExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateNetworkAreaRouteExecute), r) -} - -// UpdateNic mocks base method. -func (m *MockDefaultAPI) UpdateNic(ctx context.Context, projectId, region, networkId, nicId string) v2api.ApiUpdateNicRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateNic", ctx, projectId, region, networkId, nicId) - ret0, _ := ret[0].(v2api.ApiUpdateNicRequest) - return ret0 -} - -// UpdateNic indicates an expected call of UpdateNic. -func (mr *MockDefaultAPIMockRecorder) UpdateNic(ctx, projectId, region, networkId, nicId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateNic", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateNic), ctx, projectId, region, networkId, nicId) -} - -// UpdateNicExecute mocks base method. -func (m *MockDefaultAPI) UpdateNicExecute(r v2api.ApiUpdateNicRequest) (*v2api.NIC, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateNicExecute", r) - ret0, _ := ret[0].(*v2api.NIC) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateNicExecute indicates an expected call of UpdateNicExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateNicExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateNicExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateNicExecute), r) -} - -// UpdatePublicIP mocks base method. -func (m *MockDefaultAPI) UpdatePublicIP(ctx context.Context, projectId, region, publicIpId string) v2api.ApiUpdatePublicIPRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdatePublicIP", ctx, projectId, region, publicIpId) - ret0, _ := ret[0].(v2api.ApiUpdatePublicIPRequest) - return ret0 -} - -// UpdatePublicIP indicates an expected call of UpdatePublicIP. -func (mr *MockDefaultAPIMockRecorder) UpdatePublicIP(ctx, projectId, region, publicIpId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdatePublicIP", reflect.TypeOf((*MockDefaultAPI)(nil).UpdatePublicIP), ctx, projectId, region, publicIpId) -} - -// UpdatePublicIPExecute mocks base method. -func (m *MockDefaultAPI) UpdatePublicIPExecute(r v2api.ApiUpdatePublicIPRequest) (*v2api.PublicIp, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdatePublicIPExecute", r) - ret0, _ := ret[0].(*v2api.PublicIp) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdatePublicIPExecute indicates an expected call of UpdatePublicIPExecute. -func (mr *MockDefaultAPIMockRecorder) UpdatePublicIPExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdatePublicIPExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdatePublicIPExecute), r) -} - -// UpdateRouteOfRoutingTable mocks base method. -func (m *MockDefaultAPI) UpdateRouteOfRoutingTable(ctx context.Context, organizationId, areaId, region, routingTableId, routeId string) v2api.ApiUpdateRouteOfRoutingTableRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateRouteOfRoutingTable", ctx, organizationId, areaId, region, routingTableId, routeId) - ret0, _ := ret[0].(v2api.ApiUpdateRouteOfRoutingTableRequest) - return ret0 -} - -// UpdateRouteOfRoutingTable indicates an expected call of UpdateRouteOfRoutingTable. -func (mr *MockDefaultAPIMockRecorder) UpdateRouteOfRoutingTable(ctx, organizationId, areaId, region, routingTableId, routeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteOfRoutingTable", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateRouteOfRoutingTable), ctx, organizationId, areaId, region, routingTableId, routeId) -} - -// UpdateRouteOfRoutingTableExecute mocks base method. -func (m *MockDefaultAPI) UpdateRouteOfRoutingTableExecute(r v2api.ApiUpdateRouteOfRoutingTableRequest) (*v2api.Route, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateRouteOfRoutingTableExecute", r) - ret0, _ := ret[0].(*v2api.Route) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateRouteOfRoutingTableExecute indicates an expected call of UpdateRouteOfRoutingTableExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateRouteOfRoutingTableExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRouteOfRoutingTableExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateRouteOfRoutingTableExecute), r) -} - -// UpdateRoutingTableOfArea mocks base method. -func (m *MockDefaultAPI) UpdateRoutingTableOfArea(ctx context.Context, organizationId, areaId, region, routingTableId string) v2api.ApiUpdateRoutingTableOfAreaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateRoutingTableOfArea", ctx, organizationId, areaId, region, routingTableId) - ret0, _ := ret[0].(v2api.ApiUpdateRoutingTableOfAreaRequest) - return ret0 -} - -// UpdateRoutingTableOfArea indicates an expected call of UpdateRoutingTableOfArea. -func (mr *MockDefaultAPIMockRecorder) UpdateRoutingTableOfArea(ctx, organizationId, areaId, region, routingTableId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRoutingTableOfArea", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateRoutingTableOfArea), ctx, organizationId, areaId, region, routingTableId) -} - -// UpdateRoutingTableOfAreaExecute mocks base method. -func (m *MockDefaultAPI) UpdateRoutingTableOfAreaExecute(r v2api.ApiUpdateRoutingTableOfAreaRequest) (*v2api.RoutingTable, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateRoutingTableOfAreaExecute", r) - ret0, _ := ret[0].(*v2api.RoutingTable) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateRoutingTableOfAreaExecute indicates an expected call of UpdateRoutingTableOfAreaExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateRoutingTableOfAreaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRoutingTableOfAreaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateRoutingTableOfAreaExecute), r) -} - -// UpdateSecurityGroup mocks base method. -func (m *MockDefaultAPI) UpdateSecurityGroup(ctx context.Context, projectId, region, securityGroupId string) v2api.ApiUpdateSecurityGroupRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateSecurityGroup", ctx, projectId, region, securityGroupId) - ret0, _ := ret[0].(v2api.ApiUpdateSecurityGroupRequest) - return ret0 -} - -// UpdateSecurityGroup indicates an expected call of UpdateSecurityGroup. -func (mr *MockDefaultAPIMockRecorder) UpdateSecurityGroup(ctx, projectId, region, securityGroupId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSecurityGroup", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateSecurityGroup), ctx, projectId, region, securityGroupId) -} - -// UpdateSecurityGroupExecute mocks base method. -func (m *MockDefaultAPI) UpdateSecurityGroupExecute(r v2api.ApiUpdateSecurityGroupRequest) (*v2api.SecurityGroup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateSecurityGroupExecute", r) - ret0, _ := ret[0].(*v2api.SecurityGroup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateSecurityGroupExecute indicates an expected call of UpdateSecurityGroupExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateSecurityGroupExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSecurityGroupExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateSecurityGroupExecute), r) -} - -// UpdateServer mocks base method. -func (m *MockDefaultAPI) UpdateServer(ctx context.Context, projectId, region, serverId string) v2api.ApiUpdateServerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateServer", ctx, projectId, region, serverId) - ret0, _ := ret[0].(v2api.ApiUpdateServerRequest) - return ret0 -} - -// UpdateServer indicates an expected call of UpdateServer. -func (mr *MockDefaultAPIMockRecorder) UpdateServer(ctx, projectId, region, serverId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateServer", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateServer), ctx, projectId, region, serverId) -} - -// UpdateServerExecute mocks base method. -func (m *MockDefaultAPI) UpdateServerExecute(r v2api.ApiUpdateServerRequest) (*v2api.Server, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateServerExecute", r) - ret0, _ := ret[0].(*v2api.Server) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateServerExecute indicates an expected call of UpdateServerExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateServerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateServerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateServerExecute), r) -} - -// UpdateSnapshot mocks base method. -func (m *MockDefaultAPI) UpdateSnapshot(ctx context.Context, projectId, region, snapshotId string) v2api.ApiUpdateSnapshotRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateSnapshot", ctx, projectId, region, snapshotId) - ret0, _ := ret[0].(v2api.ApiUpdateSnapshotRequest) - return ret0 -} - -// UpdateSnapshot indicates an expected call of UpdateSnapshot. -func (mr *MockDefaultAPIMockRecorder) UpdateSnapshot(ctx, projectId, region, snapshotId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSnapshot", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateSnapshot), ctx, projectId, region, snapshotId) -} - -// UpdateSnapshotExecute mocks base method. -func (m *MockDefaultAPI) UpdateSnapshotExecute(r v2api.ApiUpdateSnapshotRequest) (*v2api.Snapshot, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateSnapshotExecute", r) - ret0, _ := ret[0].(*v2api.Snapshot) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateSnapshotExecute indicates an expected call of UpdateSnapshotExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateSnapshotExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSnapshotExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateSnapshotExecute), r) -} - -// UpdateVolume mocks base method. -func (m *MockDefaultAPI) UpdateVolume(ctx context.Context, projectId, region, volumeId string) v2api.ApiUpdateVolumeRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateVolume", ctx, projectId, region, volumeId) - ret0, _ := ret[0].(v2api.ApiUpdateVolumeRequest) - return ret0 -} - -// UpdateVolume indicates an expected call of UpdateVolume. -func (mr *MockDefaultAPIMockRecorder) UpdateVolume(ctx, projectId, region, volumeId any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVolume", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateVolume), ctx, projectId, region, volumeId) -} - -// UpdateVolumeExecute mocks base method. -func (m *MockDefaultAPI) UpdateVolumeExecute(r v2api.ApiUpdateVolumeRequest) (*v2api.Volume, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateVolumeExecute", r) - ret0, _ := ret[0].(*v2api.Volume) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateVolumeExecute indicates an expected call of UpdateVolumeExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateVolumeExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVolumeExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateVolumeExecute), r) -} diff --git a/pkg/mock/loadbalancer/loadbalancer.go b/pkg/mock/loadbalancer/loadbalancer.go deleted file mode 100644 index a54cd092..00000000 --- a/pkg/mock/loadbalancer/loadbalancer.go +++ /dev/null @@ -1,419 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api (interfaces: DefaultAPI) -// -// Generated by this command: -// -// mockgen -destination ./pkg/mock/loadbalancer/loadbalancer.go -package loadbalancer github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api DefaultAPI -// - -// Package loadbalancer is a generated GoMock package. -package loadbalancer - -import ( - context "context" - reflect "reflect" - - v2api "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" - gomock "go.uber.org/mock/gomock" -) - -// MockDefaultAPI is a mock of DefaultAPI interface. -type MockDefaultAPI struct { - ctrl *gomock.Controller - recorder *MockDefaultAPIMockRecorder - isgomock struct{} -} - -// MockDefaultAPIMockRecorder is the mock recorder for MockDefaultAPI. -type MockDefaultAPIMockRecorder struct { - mock *MockDefaultAPI -} - -// NewMockDefaultAPI creates a new mock instance. -func NewMockDefaultAPI(ctrl *gomock.Controller) *MockDefaultAPI { - mock := &MockDefaultAPI{ctrl: ctrl} - mock.recorder = &MockDefaultAPIMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockDefaultAPI) EXPECT() *MockDefaultAPIMockRecorder { - return m.recorder -} - -// CreateCredentials mocks base method. -func (m *MockDefaultAPI) CreateCredentials(ctx context.Context, projectId, region string) v2api.ApiCreateCredentialsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateCredentials", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateCredentialsRequest) - return ret0 -} - -// CreateCredentials indicates an expected call of CreateCredentials. -func (mr *MockDefaultAPIMockRecorder) CreateCredentials(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateCredentials", reflect.TypeOf((*MockDefaultAPI)(nil).CreateCredentials), ctx, projectId, region) -} - -// CreateCredentialsExecute mocks base method. -func (m *MockDefaultAPI) CreateCredentialsExecute(r v2api.ApiCreateCredentialsRequest) (*v2api.CreateCredentialsResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateCredentialsExecute", r) - ret0, _ := ret[0].(*v2api.CreateCredentialsResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateCredentialsExecute indicates an expected call of CreateCredentialsExecute. -func (mr *MockDefaultAPIMockRecorder) CreateCredentialsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateCredentialsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateCredentialsExecute), r) -} - -// CreateLoadBalancer mocks base method. -func (m *MockDefaultAPI) CreateLoadBalancer(ctx context.Context, projectId, region string) v2api.ApiCreateLoadBalancerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateLoadBalancer", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiCreateLoadBalancerRequest) - return ret0 -} - -// CreateLoadBalancer indicates an expected call of CreateLoadBalancer. -func (mr *MockDefaultAPIMockRecorder) CreateLoadBalancer(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateLoadBalancer", reflect.TypeOf((*MockDefaultAPI)(nil).CreateLoadBalancer), ctx, projectId, region) -} - -// CreateLoadBalancerExecute mocks base method. -func (m *MockDefaultAPI) CreateLoadBalancerExecute(r v2api.ApiCreateLoadBalancerRequest) (*v2api.LoadBalancer, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateLoadBalancerExecute", r) - ret0, _ := ret[0].(*v2api.LoadBalancer) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateLoadBalancerExecute indicates an expected call of CreateLoadBalancerExecute. -func (mr *MockDefaultAPIMockRecorder) CreateLoadBalancerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateLoadBalancerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).CreateLoadBalancerExecute), r) -} - -// DeleteCredentials mocks base method. -func (m *MockDefaultAPI) DeleteCredentials(ctx context.Context, projectId, region, credentialsRef string) v2api.ApiDeleteCredentialsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteCredentials", ctx, projectId, region, credentialsRef) - ret0, _ := ret[0].(v2api.ApiDeleteCredentialsRequest) - return ret0 -} - -// DeleteCredentials indicates an expected call of DeleteCredentials. -func (mr *MockDefaultAPIMockRecorder) DeleteCredentials(ctx, projectId, region, credentialsRef any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCredentials", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteCredentials), ctx, projectId, region, credentialsRef) -} - -// DeleteCredentialsExecute mocks base method. -func (m *MockDefaultAPI) DeleteCredentialsExecute(r v2api.ApiDeleteCredentialsRequest) (map[string]any, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteCredentialsExecute", r) - ret0, _ := ret[0].(map[string]any) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// DeleteCredentialsExecute indicates an expected call of DeleteCredentialsExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteCredentialsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCredentialsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteCredentialsExecute), r) -} - -// DeleteLoadBalancer mocks base method. -func (m *MockDefaultAPI) DeleteLoadBalancer(ctx context.Context, projectId, region, name string) v2api.ApiDeleteLoadBalancerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteLoadBalancer", ctx, projectId, region, name) - ret0, _ := ret[0].(v2api.ApiDeleteLoadBalancerRequest) - return ret0 -} - -// DeleteLoadBalancer indicates an expected call of DeleteLoadBalancer. -func (mr *MockDefaultAPIMockRecorder) DeleteLoadBalancer(ctx, projectId, region, name any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteLoadBalancer", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteLoadBalancer), ctx, projectId, region, name) -} - -// DeleteLoadBalancerExecute mocks base method. -func (m *MockDefaultAPI) DeleteLoadBalancerExecute(r v2api.ApiDeleteLoadBalancerRequest) (map[string]any, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteLoadBalancerExecute", r) - ret0, _ := ret[0].(map[string]any) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// DeleteLoadBalancerExecute indicates an expected call of DeleteLoadBalancerExecute. -func (mr *MockDefaultAPIMockRecorder) DeleteLoadBalancerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteLoadBalancerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).DeleteLoadBalancerExecute), r) -} - -// GetCredentials mocks base method. -func (m *MockDefaultAPI) GetCredentials(ctx context.Context, projectId, region, credentialsRef string) v2api.ApiGetCredentialsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetCredentials", ctx, projectId, region, credentialsRef) - ret0, _ := ret[0].(v2api.ApiGetCredentialsRequest) - return ret0 -} - -// GetCredentials indicates an expected call of GetCredentials. -func (mr *MockDefaultAPIMockRecorder) GetCredentials(ctx, projectId, region, credentialsRef any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCredentials", reflect.TypeOf((*MockDefaultAPI)(nil).GetCredentials), ctx, projectId, region, credentialsRef) -} - -// GetCredentialsExecute mocks base method. -func (m *MockDefaultAPI) GetCredentialsExecute(r v2api.ApiGetCredentialsRequest) (*v2api.GetCredentialsResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetCredentialsExecute", r) - ret0, _ := ret[0].(*v2api.GetCredentialsResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetCredentialsExecute indicates an expected call of GetCredentialsExecute. -func (mr *MockDefaultAPIMockRecorder) GetCredentialsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCredentialsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetCredentialsExecute), r) -} - -// GetLoadBalancer mocks base method. -func (m *MockDefaultAPI) GetLoadBalancer(ctx context.Context, projectId, region, name string) v2api.ApiGetLoadBalancerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetLoadBalancer", ctx, projectId, region, name) - ret0, _ := ret[0].(v2api.ApiGetLoadBalancerRequest) - return ret0 -} - -// GetLoadBalancer indicates an expected call of GetLoadBalancer. -func (mr *MockDefaultAPIMockRecorder) GetLoadBalancer(ctx, projectId, region, name any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLoadBalancer", reflect.TypeOf((*MockDefaultAPI)(nil).GetLoadBalancer), ctx, projectId, region, name) -} - -// GetLoadBalancerExecute mocks base method. -func (m *MockDefaultAPI) GetLoadBalancerExecute(r v2api.ApiGetLoadBalancerRequest) (*v2api.LoadBalancer, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetLoadBalancerExecute", r) - ret0, _ := ret[0].(*v2api.LoadBalancer) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetLoadBalancerExecute indicates an expected call of GetLoadBalancerExecute. -func (mr *MockDefaultAPIMockRecorder) GetLoadBalancerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLoadBalancerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetLoadBalancerExecute), r) -} - -// GetQuota mocks base method. -func (m *MockDefaultAPI) GetQuota(ctx context.Context, projectId, region string) v2api.ApiGetQuotaRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetQuota", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiGetQuotaRequest) - return ret0 -} - -// GetQuota indicates an expected call of GetQuota. -func (mr *MockDefaultAPIMockRecorder) GetQuota(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQuota", reflect.TypeOf((*MockDefaultAPI)(nil).GetQuota), ctx, projectId, region) -} - -// GetQuotaExecute mocks base method. -func (m *MockDefaultAPI) GetQuotaExecute(r v2api.ApiGetQuotaRequest) (*v2api.GetQuotaResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetQuotaExecute", r) - ret0, _ := ret[0].(*v2api.GetQuotaResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetQuotaExecute indicates an expected call of GetQuotaExecute. -func (mr *MockDefaultAPIMockRecorder) GetQuotaExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQuotaExecute", reflect.TypeOf((*MockDefaultAPI)(nil).GetQuotaExecute), r) -} - -// ListCredentials mocks base method. -func (m *MockDefaultAPI) ListCredentials(ctx context.Context, projectId, region string) v2api.ApiListCredentialsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListCredentials", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListCredentialsRequest) - return ret0 -} - -// ListCredentials indicates an expected call of ListCredentials. -func (mr *MockDefaultAPIMockRecorder) ListCredentials(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCredentials", reflect.TypeOf((*MockDefaultAPI)(nil).ListCredentials), ctx, projectId, region) -} - -// ListCredentialsExecute mocks base method. -func (m *MockDefaultAPI) ListCredentialsExecute(r v2api.ApiListCredentialsRequest) (*v2api.ListCredentialsResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListCredentialsExecute", r) - ret0, _ := ret[0].(*v2api.ListCredentialsResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListCredentialsExecute indicates an expected call of ListCredentialsExecute. -func (mr *MockDefaultAPIMockRecorder) ListCredentialsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCredentialsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListCredentialsExecute), r) -} - -// ListLoadBalancers mocks base method. -func (m *MockDefaultAPI) ListLoadBalancers(ctx context.Context, projectId, region string) v2api.ApiListLoadBalancersRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListLoadBalancers", ctx, projectId, region) - ret0, _ := ret[0].(v2api.ApiListLoadBalancersRequest) - return ret0 -} - -// ListLoadBalancers indicates an expected call of ListLoadBalancers. -func (mr *MockDefaultAPIMockRecorder) ListLoadBalancers(ctx, projectId, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListLoadBalancers", reflect.TypeOf((*MockDefaultAPI)(nil).ListLoadBalancers), ctx, projectId, region) -} - -// ListLoadBalancersExecute mocks base method. -func (m *MockDefaultAPI) ListLoadBalancersExecute(r v2api.ApiListLoadBalancersRequest) (*v2api.ListLoadBalancersResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListLoadBalancersExecute", r) - ret0, _ := ret[0].(*v2api.ListLoadBalancersResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListLoadBalancersExecute indicates an expected call of ListLoadBalancersExecute. -func (mr *MockDefaultAPIMockRecorder) ListLoadBalancersExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListLoadBalancersExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListLoadBalancersExecute), r) -} - -// ListPlans mocks base method. -func (m *MockDefaultAPI) ListPlans(ctx context.Context, region string) v2api.ApiListPlansRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListPlans", ctx, region) - ret0, _ := ret[0].(v2api.ApiListPlansRequest) - return ret0 -} - -// ListPlans indicates an expected call of ListPlans. -func (mr *MockDefaultAPIMockRecorder) ListPlans(ctx, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPlans", reflect.TypeOf((*MockDefaultAPI)(nil).ListPlans), ctx, region) -} - -// ListPlansExecute mocks base method. -func (m *MockDefaultAPI) ListPlansExecute(r v2api.ApiListPlansRequest) (*v2api.ListPlansResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListPlansExecute", r) - ret0, _ := ret[0].(*v2api.ListPlansResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListPlansExecute indicates an expected call of ListPlansExecute. -func (mr *MockDefaultAPIMockRecorder) ListPlansExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPlansExecute", reflect.TypeOf((*MockDefaultAPI)(nil).ListPlansExecute), r) -} - -// UpdateCredentials mocks base method. -func (m *MockDefaultAPI) UpdateCredentials(ctx context.Context, projectId, region, credentialsRef string) v2api.ApiUpdateCredentialsRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateCredentials", ctx, projectId, region, credentialsRef) - ret0, _ := ret[0].(v2api.ApiUpdateCredentialsRequest) - return ret0 -} - -// UpdateCredentials indicates an expected call of UpdateCredentials. -func (mr *MockDefaultAPIMockRecorder) UpdateCredentials(ctx, projectId, region, credentialsRef any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCredentials", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateCredentials), ctx, projectId, region, credentialsRef) -} - -// UpdateCredentialsExecute mocks base method. -func (m *MockDefaultAPI) UpdateCredentialsExecute(r v2api.ApiUpdateCredentialsRequest) (*v2api.UpdateCredentialsResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateCredentialsExecute", r) - ret0, _ := ret[0].(*v2api.UpdateCredentialsResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateCredentialsExecute indicates an expected call of UpdateCredentialsExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateCredentialsExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCredentialsExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateCredentialsExecute), r) -} - -// UpdateLoadBalancer mocks base method. -func (m *MockDefaultAPI) UpdateLoadBalancer(ctx context.Context, projectId, region, name string) v2api.ApiUpdateLoadBalancerRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateLoadBalancer", ctx, projectId, region, name) - ret0, _ := ret[0].(v2api.ApiUpdateLoadBalancerRequest) - return ret0 -} - -// UpdateLoadBalancer indicates an expected call of UpdateLoadBalancer. -func (mr *MockDefaultAPIMockRecorder) UpdateLoadBalancer(ctx, projectId, region, name any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateLoadBalancer", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateLoadBalancer), ctx, projectId, region, name) -} - -// UpdateLoadBalancerExecute mocks base method. -func (m *MockDefaultAPI) UpdateLoadBalancerExecute(r v2api.ApiUpdateLoadBalancerRequest) (*v2api.LoadBalancer, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateLoadBalancerExecute", r) - ret0, _ := ret[0].(*v2api.LoadBalancer) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateLoadBalancerExecute indicates an expected call of UpdateLoadBalancerExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateLoadBalancerExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateLoadBalancerExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateLoadBalancerExecute), r) -} - -// UpdateTargetPool mocks base method. -func (m *MockDefaultAPI) UpdateTargetPool(ctx context.Context, projectId, region, name, targetPoolName string) v2api.ApiUpdateTargetPoolRequest { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateTargetPool", ctx, projectId, region, name, targetPoolName) - ret0, _ := ret[0].(v2api.ApiUpdateTargetPoolRequest) - return ret0 -} - -// UpdateTargetPool indicates an expected call of UpdateTargetPool. -func (mr *MockDefaultAPIMockRecorder) UpdateTargetPool(ctx, projectId, region, name, targetPoolName any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTargetPool", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateTargetPool), ctx, projectId, region, name, targetPoolName) -} - -// UpdateTargetPoolExecute mocks base method. -func (m *MockDefaultAPI) UpdateTargetPoolExecute(r v2api.ApiUpdateTargetPoolRequest) (*v2api.TargetPool, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateTargetPoolExecute", r) - ret0, _ := ret[0].(*v2api.TargetPool) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateTargetPoolExecute indicates an expected call of UpdateTargetPoolExecute. -func (mr *MockDefaultAPIMockRecorder) UpdateTargetPoolExecute(r any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTargetPoolExecute", reflect.TypeOf((*MockDefaultAPI)(nil).UpdateTargetPoolExecute), r) -} diff --git a/pkg/stackit/backups.go b/pkg/stackit/backups.go deleted file mode 100644 index 84294519..00000000 --- a/pkg/stackit/backups.go +++ /dev/null @@ -1,182 +0,0 @@ -package stackit - -import ( - "context" - "errors" - "fmt" - "net/http" - "time" - - "github.com/stackitcloud/stackit-sdk-go/core/runtime" - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - wait "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api/wait" - - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/stackiterrors" -) - -const ( - backupReadyStatus = "AVAILABLE" - backupErrorStatus = "error" - backupDescription = "Created by STACKIT CSI driver" - BackupMaxDurationSecondsPerGBDefault = 20 - BackupMaxDurationPerGB = "backup-max-duration-seconds-per-gb" - backupBaseDurationSeconds = 30 - backupReadyCheckIntervalSeconds = 7 -) - -func (os *iaasClient) CreateBackup(ctx context.Context, name, volID, snapshotID string, tags map[string]string) (*iaas.Backup, error) { - opts, err := buildCreateBackupPayload(name, volID, snapshotID, tags) - if err != nil { - return nil, err - } - - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - backup, err := os.iaas.CreateBackup(ctxWithHTTPResp, os.projectID, os.region).CreateBackupPayload(opts).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(wait.XRequestIDHeader) - return nil, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, err - } - - return backup, nil -} - -func buildCreateBackupPayload(name, volID, snapshotID string, tags map[string]string) (iaas.CreateBackupPayload, error) { - if name == "" { - return iaas.CreateBackupPayload{}, errors.New("backup name cannot be empty") - } - - if volID == "" && snapshotID == "" { - return iaas.CreateBackupPayload{}, errors.New("either volID or snapshotID must be provided") - } - - var backupSource VolumeSourceTypes - var backupSourceID string - if volID != "" { - backupSource = VolumeSource - backupSourceID = volID - } - if snapshotID != "" { - backupSource = SnapshotSource - backupSourceID = snapshotID - } - - opts := iaas.CreateBackupPayload{ - Name: new(name), - Description: new(backupDescription), - Source: iaas.BackupSource{ - Type: string(backupSource), - Id: backupSourceID, - }, - } - if tags != nil { - opts.Labels = labelsFromTags(tags) - } - - return opts, nil -} - -func (os *iaasClient) ListBackups(ctx context.Context, filters map[string]string) ([]iaas.Backup, error) { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - // TODO: Add API filter once available. - backups, err := os.iaas.ListBackups(ctxWithHTTPResp, os.projectID, os.region).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(wait.XRequestIDHeader) - return nil, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, err - } - - filteredBackups := filterBackups(backups.Items, filters) - return filteredBackups, nil -} - -func (os *iaasClient) DeleteBackup(ctx context.Context, backupID string) error { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - err := os.iaas.DeleteBackup(ctxWithHTTPResp, os.projectID, backupID, os.region).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(wait.XRequestIDHeader) - return stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return err - } - return nil -} - -func (os *iaasClient) GetBackupByID(ctx context.Context, backupID string) (*iaas.Backup, error) { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - backup, err := os.iaas.GetBackup(ctxWithHTTPResp, os.projectID, os.region, backupID).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(wait.XRequestIDHeader) - return nil, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, err - } - return backup, nil -} - -func (os *iaasClient) WaitBackupReady(ctx context.Context, backupID string, snapshotSize int64, backupMaxDurationSecondsPerGB int) (*string, error) { - var err error - - duration := time.Duration(int64(backupMaxDurationSecondsPerGB)*snapshotSize + backupBaseDurationSeconds) - err = os.waitBackupReadyWithContext(backupID, duration) - if errors.Is(err, context.DeadlineExceeded) { - err = fmt.Errorf("timeout, Backup %s is still not Ready: %v", backupID, err) - } - - back, _ := os.GetBackupByID(ctx, backupID) - - if back != nil { - return back.Status, err - } - return new("Failed to get backup status"), err -} - -func (os *iaasClient) waitBackupReadyWithContext(backupID string, duration time.Duration) error { - ctx, cancel := context.WithTimeout(context.Background(), duration*time.Second) - defer cancel() - var done bool - var err error - ticker := time.NewTicker(backupReadyCheckIntervalSeconds * time.Second) - defer ticker.Stop() - - for { - select { - case <-ticker.C: - done, err = os.backupIsReady(ctx, backupID) - if err != nil { - return err - } - - if done { - return nil - } - case <-ctx.Done(): - return ctx.Err() - } - } -} - -// Supporting function for waitBackupReadyWithContext(). -// Returns true when the backup is ready. -func (os *iaasClient) backupIsReady(ctx context.Context, backupID string) (bool, error) { - backup, err := os.GetBackupByID(ctx, backupID) - if err != nil { - return false, err - } - - if *backup.Status == backupErrorStatus { - return false, errors.New("backup is in error state") - } - - return *backup.Status == backupReadyStatus, nil -} diff --git a/pkg/stackit/backups_test.go b/pkg/stackit/backups_test.go deleted file mode 100644 index 7c110c43..00000000 --- a/pkg/stackit/backups_test.go +++ /dev/null @@ -1,187 +0,0 @@ -package stackit - -import ( - "context" - "fmt" - "os" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - "go.uber.org/mock/gomock" - - mock "github.com/stackitcloud/cloud-provider-stackit/pkg/mock/iaas" -) - -var _ = Describe("Backup", func() { - var ( - err error - mockCtrl *gomock.Controller - mockAPI *mock.MockDefaultAPI - openStack IaasClient - config *stackitconfig.CSIConfig - ) - - const projectID = "project-id" - const region = "eu01" - - BeforeEach(func() { - t := GinkgoT() - mockCtrl = gomock.NewController(t) - mockAPI = mock.NewMockDefaultAPI(mockCtrl) - t.Setenv("STACKIT_REGION", region) - Expect(os.Getenv("STACKIT_REGION")).To(Equal(region)) - }) - - Context("buildCreateBackupPayload", func() { - DescribeTable("successful payload variants", - func( - name, volID, snapshotID string, - tags map[string]string, - expectedPayload iaas.CreateBackupPayload, - ) { - actualPayload, err := buildCreateBackupPayload(name, volID, snapshotID, tags) - Expect(err).ToNot(HaveOccurred()) - Expect(actualPayload).To(Equal(expectedPayload)) - }, - Entry( - "with volume source and nil tags", - "expected-name", "volume-id", "", nil, - iaas.CreateBackupPayload{ - Name: new("expected-name"), - Description: new(backupDescription), - Source: iaas.BackupSource{ - Type: "volume", - Id: "volume-id", - }, - Labels: nil, - }, - ), - Entry( - "with snapshot source and special characters in tags", - "expected-name", "", "snapshot-id", - map[string]string{ - "special": "tag with spaces and !@#$%^&*()", - "normal": "value", - }, - iaas.CreateBackupPayload{ - Name: new("expected-name"), - Description: new(backupDescription), - Source: iaas.BackupSource{ - Type: "snapshot", - Id: "snapshot-id", - }, - Labels: map[string]any{ - "special": "tag with spaces and !@#$%^&*()", - "normal": "value", - }, - }, - ), - Entry( - "with empty tags map", - "expected-name", "volume-id", "", map[string]string{}, - iaas.CreateBackupPayload{ - Name: new("expected-name"), - Description: new(backupDescription), - Source: iaas.BackupSource{ - Type: "volume", - Id: "volume-id", - }, - Labels: map[string]any{}, - }, - ), - Entry( - "with long backup name", - "very-long-backup-name-"+string(make([]byte, 200)), "volume-id", "", nil, - iaas.CreateBackupPayload{ - Name: new("very-long-backup-name-" + string(make([]byte, 200))), - Description: new(backupDescription), - Source: iaas.BackupSource{ - Type: "volume", - Id: "volume-id", - }, - }, - ), - Entry( - "when both volume and snapshot are provided snapshot wins", - "expected-name", "volume-id", "snapshot-id", nil, - iaas.CreateBackupPayload{ - Name: new("expected-name"), - Description: new(backupDescription), - Source: iaas.BackupSource{ - Type: "snapshot", - Id: "snapshot-id", - }, - }, - ), - ) - - DescribeTable("validation error variants", - func(name, volID, snapshotID, expectedError string) { - actualPayload, err := buildCreateBackupPayload(name, volID, snapshotID, nil) - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(Equal(expectedError)) - Expect(actualPayload).To(Equal(iaas.CreateBackupPayload{})) - }, - Entry("empty name", "", "volume-id", "", "backup name cannot be empty"), - Entry("missing volume and snapshot IDs", "expected-name", "", "", "either volID or snapshotID must be provided"), - ) - }) - - Context("CreateBackup", func() { - BeforeEach(func() { - config = &stackitconfig.CSIConfig{ - Global: stackitconfig.GlobalOpts{ - ProjectID: projectID, - }, - } - openStack, err = CreateSTACKITProvider(mockAPI, config) - Expect(err).ToNot(HaveOccurred()) - }) - - It("returns backup on successful API call and uses configured project and region", func() { - mockCreateBackup(mockAPI) - - backup, err := openStack.CreateBackup(context.Background(), "expected-name", "volume-id", "", nil) - Expect(err).ToNot(HaveOccurred()) - Expect(backup).ToNot(BeNil()) - Expect(backup.Id).ToNot(BeNil()) - Expect(*backup.Id).To(Equal("expected backup")) - }) - - It("returns error when API fails", func() { - mockAPI.EXPECT().CreateBackup(gomock.Any(), projectID, region).Return(iaas.ApiCreateBackupRequest{ApiService: mockAPI}) - mockAPI.EXPECT().CreateBackupExecute(gomock.Any()).Return(nil, fmt.Errorf("API error")) - - backup, err := openStack.CreateBackup(context.Background(), "expected-name", "volume-id", "", nil) - Expect(err).To(HaveOccurred()) - Expect(backup).To(BeNil()) - }) - - DescribeTable("returns error when payload is invalid", - func(name, volID, snapshotID, expectedError string) { - mockAPI.EXPECT().CreateBackup(gomock.Any(), gomock.Any(), gomock.Any()).Times(0) - mockAPI.EXPECT().CreateBackupExecute(gomock.Any()).Times(0) - - backup, err := openStack.CreateBackup(context.Background(), name, volID, snapshotID, nil) - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(Equal(expectedError)) - Expect(backup).To(BeNil()) - }, - Entry("empty name", "", "volume-id", "", "backup name cannot be empty"), - Entry("missing volume and snapshot IDs", "expected-name", "", "", "either volID or snapshotID must be provided"), - ) - }) - -}) - -func mockCreateBackup(mockAPI *mock.MockDefaultAPI) { - const ( - projectID = "project-id" - region = "eu01" - ) - - mockAPI.EXPECT().CreateBackup(gomock.Any(), projectID, region).Return(iaas.ApiCreateBackupRequest{ApiService: mockAPI}) - mockAPI.EXPECT().CreateBackupExecute(gomock.Any()).Return(&iaas.Backup{Id: new("expected backup")}, nil) -} diff --git a/pkg/stackit/client.go b/pkg/stackit/client.go deleted file mode 100644 index 12960832..00000000 --- a/pkg/stackit/client.go +++ /dev/null @@ -1,218 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package stackit - -import ( - "context" - "errors" - "fmt" - "io" - "net/http" - "os" - "strings" - - stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" - sdkconfig "github.com/stackitcloud/stackit-sdk-go/core/config" - oapiError "github.com/stackitcloud/stackit-sdk-go/core/oapierror" - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" - "gopkg.in/yaml.v3" - "k8s.io/apimachinery/pkg/util/wait" - - "github.com/stackitcloud/cloud-provider-stackit/pkg/version" - - "github.com/spf13/pflag" - "k8s.io/klog/v2" -) - -// userAgentData is used to add extra information to the STACKIT SDK user-agent -var ( - userAgentData []string - ErrorNotFound = errors.New("not found") -) - -// AddExtraFlags is called by the main package to add component specific command line flags -func AddExtraFlags(fs *pflag.FlagSet) { - fs.StringArrayVar(&userAgentData, "user-agent", nil, "Extra data to add to STACKIT SDK user-agent. Use multiple times to add more than one component.") -} - -type IaasClient interface { - CreateVolume(context.Context, *iaas.CreateVolumePayload) (*iaas.Volume, error) - DeleteVolume(ctx context.Context, volumeID string) error - AttachVolume(ctx context.Context, instanceID, volumeID string) (string, error) - ListVolumes(ctx context.Context, limit int, startingToken string) ([]iaas.Volume, string, error) - WaitDiskAttached(ctx context.Context, instanceID string, volumeID string) error - DetachVolume(ctx context.Context, instanceID, volumeID string) error - WaitDiskDetached(ctx context.Context, instanceID string, volumeID string) error - WaitVolumeTargetStatus(ctx context.Context, volumeID string, tStatus []string) error - GetVolume(ctx context.Context, volumeID string) (*iaas.Volume, error) - GetVolumesByName(ctx context.Context, name string) ([]iaas.Volume, error) - GetVolumeByName(ctx context.Context, name string) (*iaas.Volume, error) - CreateSnapshot(ctx context.Context, name, volID string, tags map[string]string) (*iaas.Snapshot, error) - ListSnapshots(ctx context.Context, filters map[string]string) ([]iaas.Snapshot, string, error) - DeleteSnapshot(ctx context.Context, snapID string) error - GetSnapshotByID(ctx context.Context, snapshotID string) (*iaas.Snapshot, error) - WaitSnapshotReady(ctx context.Context, snapshotID string) (*string, error) - CreateBackup(ctx context.Context, name, volID, snapshotID string, tags map[string]string) (*iaas.Backup, error) - ListBackups(ctx context.Context, filters map[string]string) ([]iaas.Backup, error) - DeleteBackup(ctx context.Context, backupID string) error - GetBackupByID(ctx context.Context, backupID string) (*iaas.Backup, error) - WaitBackupReady(ctx context.Context, backupID string, snapshotSize int64, backupMaxDurationSecondsPerGB int) (*string, error) - GetInstanceByID(ctx context.Context, instanceID string) (*iaas.Server, error) - ExpandVolume(ctx context.Context, volumeID string, status string, size int64) error - GetBlockStorageOpts() stackitconfig.BlockStorageOpts - WaitVolumeTargetStatusWithCustomBackoff(ctx context.Context, volumeID string, targetStatus []string, backoff *wait.Backoff) error -} - -type LoadbalancerClient interface { - GetLoadBalancer(ctx context.Context, projectID string, name string) (*loadbalancer.LoadBalancer, error) - // DeleteLoadBalancer returns no error if the load balancer doesn't exist. - DeleteLoadBalancer(ctx context.Context, projectID string, name string) error - // CreateLoadBalancer returns ErrorNotFound if the project is not enabled. - CreateLoadBalancer(ctx context.Context, projectID string, loadbalancer *loadbalancer.CreateLoadBalancerPayload) (*loadbalancer.LoadBalancer, error) - UpdateLoadBalancer(ctx context.Context, projectID, name string, update *loadbalancer.UpdateLoadBalancerPayload) (*loadbalancer.LoadBalancer, error) - UpdateTargetPool(ctx context.Context, projectID string, name string, targetPoolName string, payload loadbalancer.UpdateTargetPoolPayload) error - CreateCredentials(ctx context.Context, projectID string, payload loadbalancer.CreateCredentialsPayload) (*loadbalancer.CreateCredentialsResponse, error) - ListCredentials(ctx context.Context, projectID string) (*loadbalancer.ListCredentialsResponse, error) - GetCredentials(ctx context.Context, projectID string, credentialRef string) (*loadbalancer.GetCredentialsResponse, error) - UpdateCredentials(ctx context.Context, projectID, credentialRef string, payload loadbalancer.UpdateCredentialsPayload) error - DeleteCredentials(ctx context.Context, projectID string, credentialRef string) error -} - -// NodeClient is the API client wrapper for the cloud-controller-manager's node-controller -type NodeClient interface { - GetServer(ctx context.Context, projectID, region, serverID string) (*iaas.Server, error) - DeleteServer(ctx context.Context, projectID, region, serverID string) error - CreateServer(ctx context.Context, projectID string, region string, create *iaas.CreateServerPayload) (*iaas.Server, error) - UpdateServer(ctx context.Context, projectID, region, serverID string, update *iaas.UpdateServerPayload) (*iaas.Server, error) - ListServers(ctx context.Context, projectID, region string) (*[]iaas.Server, error) -} - -type iaasClient struct { - iaas iaas.DefaultAPI - projectID string - region string - bsOpts stackitconfig.BlockStorageOpts -} - -type lbClient struct { - client loadbalancer.DefaultAPI - region string -} - -type nodeClient struct { - client *iaas.APIClient -} - -//nolint:gocritic // The openstack package currently shadows but will be renamed anyway. -func (os *iaasClient) GetBlockStorageOpts() stackitconfig.BlockStorageOpts { - return os.bsOpts -} - -func GetConfig(reader io.Reader) (stackitconfig.CSIConfig, error) { - var cfg stackitconfig.CSIConfig - - content, err := io.ReadAll(reader) - if err != nil { - klog.ErrorS(err, "Failed to read config content") - return cfg, err - } - - err = yaml.Unmarshal(content, &cfg) - if err != nil { - klog.ErrorS(err, "Failed to parse config as YAML") - return cfg, err - } - - return cfg, nil -} - -func GetConfigFromFile(path string) (stackitconfig.CSIConfig, error) { - var cfg stackitconfig.CSIConfig - - config, err := os.Open(path) - if err != nil { - klog.ErrorS(err, "Failed to open stackitconfig file", "path", path) - return cfg, err - } - defer config.Close() - - return GetConfig(config) -} - -// CreateSTACKITProvider creates STACKIT Instance -func CreateSTACKITProvider(client iaas.DefaultAPI, cfg *stackitconfig.CSIConfig) (IaasClient, error) { - region := os.Getenv("STACKIT_REGION") - if region == "" { - panic("STACKIT_REGION environment variable not set") - } - // Init iaasClient - instance := &iaasClient{ - iaas: client, - bsOpts: cfg.BlockStorage, - projectID: cfg.Global.ProjectID, - region: region, - } - - return instance, nil -} - -func CreateIaaSClient(cfg *stackitconfig.CSIConfig) (iaas.DefaultAPI, error) { - var userAgent []string - var opts []sdkconfig.ConfigurationOption - userAgent = append(userAgent, fmt.Sprintf("%s/%s", "block-storage-csi-driver", version.Version)) - for _, data := range userAgentData { - // Prepend userAgents - userAgent = append([]string{data}, userAgent...) - } - klog.V(4).Infof("Using user-agent: %s", userAgent) - - if cfg.Global.APIEndpoints.IaasAPI != "" { - opts = append(opts, sdkconfig.WithEndpoint(cfg.Global.APIEndpoints.IaasAPI)) - } - - opts = append(opts, sdkconfig.WithUserAgent(strings.Join(userAgent, " "))) - - client, err := iaas.NewAPIClient(opts...) - if err != nil { - return nil, err - } - return client.DefaultAPI, nil -} - -func NewLoadbalancerClient(cl loadbalancer.DefaultAPI, region string) (LoadbalancerClient, error) { - return &lbClient{ - client: cl, - region: region, - }, nil -} - -func NewNodeClient(cl *iaas.APIClient) (NodeClient, error) { - return &nodeClient{client: cl}, nil -} - -func isOpenAPINotFound(err error) bool { - apiErr := &oapiError.GenericOpenAPIError{} - if !errors.As(err, &apiErr) { - return false - } - return apiErr.StatusCode == http.StatusNotFound -} - -func IsNotFound(err error) bool { - return errors.Is(err, ErrorNotFound) -} diff --git a/pkg/stackit/client/factory.go b/pkg/stackit/client/factory.go new file mode 100644 index 00000000..77e2e3b2 --- /dev/null +++ b/pkg/stackit/client/factory.go @@ -0,0 +1,87 @@ +package client + +import ( + "errors" + "io" + "os" + + "github.com/spf13/pflag" + stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" + sdkconfig "github.com/stackitcloud/stackit-sdk-go/core/config" + "gopkg.in/yaml.v3" + "k8s.io/klog/v2" +) + +func AddExtraFlags(fs *pflag.FlagSet) { + fs.StringArrayVar(&userAgentData, "user-agent", nil, "Extra data to add to STACKIT SDK user-agent. Use multiple times to add more than one component.") +} + +const ( + UserAgent = "cloud-provider-stackit" +) + +// userAgentData is used to add extra information to the STACKIT SDK user-agent +var ( + userAgentData []string + ErrorNotFound = errors.New("not found") +) + +// Factory produces clients for various STACKIT services. +type Factory interface { + // LoadBalancing returns a STACKIT load balancing service client. + LoadBalancing(ptions []sdkconfig.ConfigurationOption) (LoadBalancingClient, error) + + // IaaS returns a STACKIT IaaS service client. + IaaS(options []sdkconfig.ConfigurationOption) (IaaSClient, error) +} + +type factory struct { + StackitRegion string + StackitProjectID string +} + +func New(region, projectID string) Factory { + return &factory{ + StackitRegion: region, + StackitProjectID: projectID, + } +} + +func (f factory) LoadBalancing(options []sdkconfig.ConfigurationOption) (LoadBalancingClient, error) { + return NewLoadBalancingClient(f.StackitRegion, f.StackitProjectID, options) +} + +func (f factory) IaaS(options []sdkconfig.ConfigurationOption) (IaaSClient, error) { + return NewIaaSClient(f.StackitRegion, f.StackitProjectID, options) +} + +func GetConfigFromFile(path string) (stackitconfig.CSIConfig, error) { + var cfg stackitconfig.CSIConfig + + config, err := os.Open(path) + if err != nil { + klog.ErrorS(err, "Failed to open stackitconfig file", "path", path) + return cfg, err + } + defer config.Close() + + return GetConfig(config) +} + +func GetConfig(reader io.Reader) (stackitconfig.CSIConfig, error) { + var cfg stackitconfig.CSIConfig + + content, err := io.ReadAll(reader) + if err != nil { + klog.ErrorS(err, "Failed to read config content") + return cfg, err + } + + err = yaml.Unmarshal(content, &cfg) + if err != nil { + klog.ErrorS(err, "Failed to parse config as YAML") + return cfg, err + } + + return cfg, nil +} diff --git a/pkg/stackit/client_test.go b/pkg/stackit/client/factory_test.go similarity index 99% rename from pkg/stackit/client_test.go rename to pkg/stackit/client/factory_test.go index 2fe6d1a3..5b095c70 100644 --- a/pkg/stackit/client_test.go +++ b/pkg/stackit/client/factory_test.go @@ -1,4 +1,4 @@ -package stackit +package client import ( "fmt" diff --git a/pkg/stackit/client/iaas.go b/pkg/stackit/client/iaas.go new file mode 100644 index 00000000..4b2ba64d --- /dev/null +++ b/pkg/stackit/client/iaas.go @@ -0,0 +1,561 @@ +package client + +import ( + "context" + "errors" + "fmt" + "slices" + "time" + + stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" + "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/stackiterrors" + sdkconfig "github.com/stackitcloud/stackit-sdk-go/core/config" + iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/klog/v2" + "k8s.io/utils/ptr" +) + +type IaaSClient interface { + GetServer(ctx context.Context, serverID string) (*iaas.Server, error) + DeleteServer(ctx context.Context, serverID string) error + CreateServer(ctx context.Context, create iaas.CreateServerPayload) (*iaas.Server, error) + UpdateServer(ctx context.Context, serverID string, update iaas.UpdateServerPayload) (*iaas.Server, error) + ListServers(ctx context.Context) (*[]iaas.Server, error) + + CreateSnapshot(ctx context.Context, payload iaas.CreateSnapshotPayload) (*iaas.Snapshot, error) + ListSnapshots(ctx context.Context, filters map[string]string) ([]iaas.Snapshot, error) + DeleteSnapshot(ctx context.Context, snapshotID string) error + GetSnapshot(ctx context.Context, snapshotID string) (*iaas.Snapshot, error) + WaitSnapshotReady(ctx context.Context, snapshotID string) (*string, error) + + CreateBackup(ctx context.Context, name, volID, snapshotID string, tags map[string]string) (*iaas.Backup, error) + ListBackups(ctx context.Context, filters map[string]string) ([]iaas.Backup, error) + DeleteBackup(ctx context.Context, backupID string) error + GetBackup(ctx context.Context, backupID string) (*iaas.Backup, error) + WaitBackupReady(ctx context.Context, backupID string, snapshotSize int64, backupMaxDurationSecondsPerGB int) (*string, error) + + CreateVolume(ctx context.Context, payload iaas.CreateVolumePayload) (*iaas.Volume, error) + DeleteVolume(ctx context.Context, volumeID string) error + AttachVolume(ctx context.Context, serverID, volumeID string, payload iaas.AddVolumeToServerPayload) (string, error) + DetachVolume(ctx context.Context, serverID, volumeID string) error + GetVolume(ctx context.Context, volumeID string) (*iaas.Volume, error) + GetVolumesByName(ctx context.Context, volName string) ([]iaas.Volume, error) + GetVolumeByName(ctx context.Context, name string) (*iaas.Volume, error) + ListVolumes(ctx context.Context, _ int, _ string) ([]iaas.Volume, error) + ExpandVolume(ctx context.Context, volumeID, volumeStatus string, payload iaas.ResizeVolumePayload) error + WaitVolumeTargetStatus(ctx context.Context, volumeID string, tStatus []string) error + WaitDiskAttached(ctx context.Context, instanceID, volumeID string) error + WaitDiskDetached(ctx context.Context, instanceID, volumeID string) error + WaitVolumeTargetStatusWithCustomBackoff(ctx context.Context, volumeID string, tStatus []string, backoff *wait.Backoff) error +} + +const ( + VolumeAvailableStatus = "AVAILABLE" + VolumeAttachedStatus = "ATTACHED" + operationFinishInitDelay = 1 * time.Second + operationFinishFactor = 1.1 + operationFinishSteps = 10 + diskAttachInitDelay = 1 * time.Second + diskAttachFactor = 1.2 + diskAttachSteps = 15 + diskDetachInitDelay = 1 * time.Second + diskDetachFactor = 1.2 + diskDetachSteps = 13 + VolumeDescription = "Created by STACKIT CSI driver" +) + +const ( + BackupDescription = "Created by STACKIT CSI driver" + backupReadyStatus = "AVAILABLE" + backupErrorStatus = "error" + BackupMaxDurationSecondsPerGBDefault = 20 + BackupMaxDurationPerGB = "backup-max-duration-seconds-per-gb" + backupBaseDurationSeconds = 30 + backupReadyCheckIntervalSeconds = 7 +) + +const ( + SnapshotReadyStatus = "AVAILABLE" + SnapshotType = "type" +) + +type VolumeSourceTypes string + +const ( + VolumeSource VolumeSourceTypes = "volume" + SnapshotSource VolumeSourceTypes = "snapshot" + BackupSource VolumeSourceTypes = "backup" +) + +var volumeErrorStates = [...]string{"ERROR", "ERROR_RESIZING", "ERROR_DELETING"} + +type iaasClient struct { + Client iaas.DefaultAPI + bsOpts stackitconfig.BlockStorageOpts + projectID string + region string +} + +func NewIaaSClient(region, projectID string, options []sdkconfig.ConfigurationOption) (IaaSClient, error) { + apiClient, err := iaas.NewAPIClient(options...) + if err != nil { + return nil, err + } + return &iaasClient{ + Client: apiClient.DefaultAPI, + projectID: projectID, + region: region, + }, nil +} + +func (i iaasClient) GetServer(ctx context.Context, serverID string) (*iaas.Server, error) { + server, err := i.Client.GetServer(ctx, i.projectID, i.region, serverID).Execute() + if isOpenAPINotFound(err) { + return nil, ErrorNotFound + } + + return server, nil +} + +func (i iaasClient) DeleteServer(ctx context.Context, serverID string) error { + return i.Client.DeleteServer(ctx, i.projectID, i.region, serverID).Execute() +} + +func (i iaasClient) CreateServer(ctx context.Context, create iaas.CreateServerPayload) (*iaas.Server, error) { + server, err := i.Client.CreateServer(ctx, i.projectID, i.region).CreateServerPayload(create).Execute() + if isOpenAPINotFound(err) { + return nil, ErrorNotFound + } + return server, err +} + +func (i iaasClient) UpdateServer(ctx context.Context, serverID string, update iaas.UpdateServerPayload) (*iaas.Server, error) { + return i.Client.UpdateServer(ctx, i.projectID, i.region, serverID).UpdateServerPayload(update).Execute() +} + +func (i iaasClient) ListServers(ctx context.Context) (*[]iaas.Server, error) { + resp, err := i.Client.ListServers(ctx, i.projectID, i.region).Details(true).Execute() + if err != nil { + return nil, err + } + return &resp.Items, nil +} + +func (i iaasClient) CreateSnapshot(ctx context.Context, payload iaas.CreateSnapshotPayload) (*iaas.Snapshot, error) { + snapshot, err := i.Client.CreateSnapshot(ctx, i.projectID, i.region).CreateSnapshotPayload(payload).Execute() + if err != nil { + return nil, err + } + + return snapshot, nil +} + +func (i iaasClient) ListSnapshots(ctx context.Context, filters map[string]string) ([]iaas.Snapshot, error) { + snaps, err := i.Client.ListSnapshotsInProject(ctx, i.projectID, i.region).Execute() + if err != nil { + return nil, err + } + + filteredSnapshots := filterSnapshots(snaps.Items, filters) + + return filteredSnapshots, nil +} + +func (i iaasClient) DeleteSnapshot(ctx context.Context, snapshotID string) error { + return i.Client.DeleteSnapshot(ctx, i.projectID, i.region, snapshotID).Execute() +} + +func (i iaasClient) GetSnapshot(ctx context.Context, snapshotID string) (*iaas.Snapshot, error) { + snapshot, err := i.Client.GetSnapshot(ctx, i.projectID, i.region, snapshotID).Execute() + if err != nil { + return nil, err + } + + return snapshot, nil +} + +func (i iaasClient) WaitSnapshotReady(ctx context.Context, snapshotID string) (*string, error) { + snap, err := i.GetSnapshot(ctx, snapshotID) + if err != nil { + return nil, err + } + + if snap != nil { + return snap.Status, nil + } + + return new("Failed to get Snapshot status"), nil +} + +func (i iaasClient) CreateBackup(ctx context.Context, name, volID, snapshotID string, tags map[string]string) (*iaas.Backup, error) { + payload, err := BuildCreateBackupPayload(name, volID, snapshotID, tags) + if err != nil { + return nil, err + } + + backup, err := i.Client.CreateBackup(ctx, i.projectID, i.region).CreateBackupPayload(payload).Execute() + if err != nil { + return nil, err + } + + return backup, nil +} + +func BuildCreateBackupPayload(name, volID, snapshotID string, tags map[string]string) (iaas.CreateBackupPayload, error) { + if name == "" { + return iaas.CreateBackupPayload{}, errors.New("backup name cannot be empty") + } + + if volID == "" && snapshotID == "" { + return iaas.CreateBackupPayload{}, errors.New("either volID or snapshotID must be provided") + } + + var backupSource VolumeSourceTypes + var backupSourceID string + if volID != "" { + backupSource = VolumeSource + backupSourceID = volID + } + if snapshotID != "" { + backupSource = SnapshotSource + backupSourceID = snapshotID + } + + opts := iaas.CreateBackupPayload{ + Name: new(name), + Description: new(BackupDescription), + Source: iaas.BackupSource{ + Type: string(backupSource), + Id: backupSourceID, + }, + } + if tags != nil { + opts.Labels = LabelsFromTags(tags) + } + + return opts, nil +} + +func (i iaasClient) ListBackups(ctx context.Context, filters map[string]string) ([]iaas.Backup, error) { + backups, err := i.Client.ListBackups(ctx, i.projectID, i.region).Execute() + if err != nil { + return nil, err + } + + filteredBackups := filterBackups(backups.Items, filters) + + return filteredBackups, nil +} + +func (i iaasClient) DeleteBackup(ctx context.Context, backupID string) error { + return i.Client.DeleteBackup(ctx, i.projectID, i.region, backupID).Execute() +} + +func (i iaasClient) GetBackup(ctx context.Context, backupID string) (*iaas.Backup, error) { + backup, err := i.Client.GetBackup(ctx, i.projectID, i.region, backupID).Execute() + if err != nil { + return nil, err + } + + return backup, nil +} + +func (i iaasClient) WaitBackupReady(ctx context.Context, backupID string, snapshotSize int64, backupMaxDurationSecondsPerGB int) (*string, error) { + var err error + + duration := time.Duration(int64(backupMaxDurationSecondsPerGB)*snapshotSize + backupBaseDurationSeconds) + err = i.waitBackupReadyWithContext(backupID, duration) + if errors.Is(err, context.DeadlineExceeded) { + err = fmt.Errorf("timeout, Backup %s is still not Ready: %v", backupID, err) + } + + backup, err := i.GetBackup(ctx, backupID) + if err != nil { + return nil, err + } + + if backup != nil { + return backup.Status, err + } + + return new("Failed to get backup status"), err +} + +func (i iaasClient) waitBackupReadyWithContext(backupID string, duration time.Duration) error { + ctx, cancel := context.WithTimeout(context.Background(), duration*time.Second) + defer cancel() + var done bool + var err error + ticker := time.NewTicker(backupReadyCheckIntervalSeconds * time.Second) + defer ticker.Stop() + + for { + select { + case <-ticker.C: + done, err = i.backupIsReady(ctx, backupID) + if err != nil { + return err + } + + if done { + return nil + } + case <-ctx.Done(): + return ctx.Err() + } + } +} + +// Supporting function for waitBackupReadyWithContext(). +// Returns true when the backup is ready. +func (i iaasClient) backupIsReady(ctx context.Context, backupID string) (bool, error) { + backup, err := i.GetBackup(ctx, backupID) + if err != nil { + return false, err + } + + if *backup.Status == backupErrorStatus { + return false, errors.New("backup is in error state") + } + + return *backup.Status == backupReadyStatus, nil +} + +func (i iaasClient) CreateVolume(ctx context.Context, payload iaas.CreateVolumePayload) (*iaas.Volume, error) { + payload.Description = new(VolumeDescription) + volume, err := i.Client.CreateVolume(ctx, i.projectID, i.region).CreateVolumePayload(payload).Execute() + if err != nil { + return nil, err + } + + return volume, nil +} + +func (i iaasClient) DeleteVolume(ctx context.Context, volumeID string) error { + used, err := i.diskIsUsed(ctx, volumeID) + if err != nil { + return err + } + if used { + return fmt.Errorf("cannot delete the volume %q, it's still attached to a node", volumeID) + } + + return i.Client.DeleteVolume(ctx, i.projectID, i.region, volumeID).Execute() +} + +func (i iaasClient) AttachVolume(ctx context.Context, serverID, volumeID string, payload iaas.AddVolumeToServerPayload) (string, error) { + volume, err := i.GetVolume(ctx, volumeID) + if err != nil { + return "", err + } + if volume.ServerId != nil && serverID == *volume.ServerId { + klog.V(4).Infof("Disk %s is already attached to instance %s", volumeID, serverID) + return *volume.Id, nil + } + payload.DeleteOnTermination = new(false) + + if _, err = i.Client.AddVolumeToServer(ctx, i.projectID, i.region, serverID, volumeID). + AddVolumeToServerPayload(payload). + Execute(); err != nil { + return "", nil + } + + return volume.GetId(), nil +} + +func (i iaasClient) GetVolume(ctx context.Context, volumeID string) (*iaas.Volume, error) { + volume, err := i.Client.GetVolume(ctx, i.projectID, i.region, volumeID).Execute() + if err != nil { + return nil, err + } + + return volume, nil +} + +func (i iaasClient) GetVolumesByName(ctx context.Context, volName string) ([]iaas.Volume, error) { + volumes, err := i.Client.ListVolumes(ctx, i.projectID, i.region).Execute() + if err != nil { + return nil, err + } + + filterMap := map[string]string{"Name": volName} + filteredVolumes := filterVolumes(volumes.Items, filterMap) + + return filteredVolumes, nil +} + +// GetVolumeByName(ctx context.Context, name string) (*iaas.Volume, error) +func (i iaasClient) GetVolumeByName(ctx context.Context, name string) (*iaas.Volume, error) { + vols, err := i.GetVolumesByName(ctx, name) + if err != nil { + return nil, err + } + + if len(vols) == 0 { + return nil, stackiterrors.ErrNotFound + } + + if len(vols) > 1 { + return nil, fmt.Errorf("found %d volumes with name %q", len(vols), name) + } + + return &vols[0], nil +} + +func (i iaasClient) ListVolumes(ctx context.Context, _ int, _ string) ([]iaas.Volume, error) { + volumes, err := i.Client.ListVolumes(ctx, i.projectID, i.region).Execute() + if err != nil { + return nil, err + } + + return volumes.Items, nil +} + +// ExpandVolume(ctx context.Context, volumeID, volumeStatus string, newSize int64) error +func (i iaasClient) ExpandVolume(ctx context.Context, volumeID, volumeStatus string, payload iaas.ResizeVolumePayload) error { + switch volumeStatus { + case VolumeAttachedStatus, VolumeAvailableStatus: + return i.Client.ResizeVolume(ctx, i.projectID, i.region, volumeID).ResizeVolumePayload(payload).Execute() + default: + return fmt.Errorf("volume cannot be resized, when status is %s", volumeStatus) + } +} + +func (i iaasClient) WaitVolumeTargetStatus(ctx context.Context, volumeID string, tStatus []string) error { + backoff := wait.Backoff{ + Duration: operationFinishInitDelay, + Factor: operationFinishFactor, + Steps: operationFinishSteps, + } + + waitErr := wait.ExponentialBackoff(backoff, func() (bool, error) { + vol, err := i.GetVolume(ctx, volumeID) + if err != nil { + return false, err + } + if slices.Contains(tStatus, *vol.Status) { + return true, nil + } + for _, eState := range volumeErrorStates { + if *vol.Status == eState { + return false, fmt.Errorf("volume is in Error State : %s", ptr.Deref(vol.Status, "")) + } + } + return false, nil + }) + + if wait.Interrupted(waitErr) { + waitErr = fmt.Errorf("timeout on waiting for volume %s status to be in %v", volumeID, tStatus) + } + + return waitErr +} + +func (i iaasClient) WaitDiskAttached(ctx context.Context, instanceID, volumeID string) error { + backoff := wait.Backoff{ + Duration: diskAttachInitDelay, + Factor: diskAttachFactor, + Steps: diskAttachSteps, + } + + err := wait.ExponentialBackoff(backoff, func() (bool, error) { + attached, err := i.diskIsAttached(ctx, instanceID, volumeID) + if err != nil && !stackiterrors.IsNotFound(err) { + // if this is a race condition indicate the volume is deleted + // during sleep phase, ignore the error and return attach=false + return false, err + } + return attached, nil + }) + + if wait.Interrupted(err) { + err = fmt.Errorf("volume %q failed to be attached within the allowed time", volumeID) + } + + return err +} + +func (i iaasClient) WaitDiskDetached(ctx context.Context, instanceID, volumeID string) error { + backoff := wait.Backoff{ + Duration: diskDetachInitDelay, + Factor: diskDetachFactor, + Steps: diskDetachSteps, + } + + err := wait.ExponentialBackoff(backoff, func() (bool, error) { + attached, err := i.diskIsAttached(ctx, instanceID, volumeID) + if err != nil { + return false, err + } + return !attached, nil + }) + + if wait.Interrupted(err) { + err = fmt.Errorf("volume %q failed to detach within the allowed time", volumeID) + } + + return err +} + +func (i iaasClient) DetachVolume(ctx context.Context, serverID, volumeID string) error { + volume, err := i.GetVolume(ctx, volumeID) + if err != nil { + return err + } + + if *volume.Status != VolumeAvailableStatus { + return fmt.Errorf("can not detach volume %s, its status is %s", *volume.Name, *volume.Status) + } + + return i.Client.RemoveVolumeFromServer(ctx, i.projectID, i.region, serverID, volumeID).Execute() +} + +func (i iaasClient) WaitVolumeTargetStatusWithCustomBackoff(ctx context.Context, volumeID string, tStatus []string, backoff *wait.Backoff) error { + waitErr := wait.ExponentialBackoff(*backoff, func() (bool, error) { + vol, err := i.GetVolume(ctx, volumeID) + if err != nil { + return false, err + } + if slices.Contains(tStatus, *vol.Status) { + return true, nil + } + for _, eState := range volumeErrorStates { + if *vol.Status == eState { + return false, fmt.Errorf("volume is in error state: %s", *vol.Status) + } + } + return false, nil + }) + + if wait.Interrupted(waitErr) { + waitErr = fmt.Errorf("timeout on waiting for volume %s status to be in %v", volumeID, tStatus) + } + + return waitErr +} + +// diskIsAttached queries if a volume is attached to a compute instance +func (i iaasClient) diskIsAttached(ctx context.Context, instanceID, volumeID string) (bool, error) { + volume, err := i.GetVolume(ctx, volumeID) + if err != nil { + return false, err + } + + if volume.ServerId != nil && *volume.ServerId == instanceID { + return true, nil + } + return false, nil +} + +// diskIsUsed returns true whether a disk is attached to any node +func (i iaasClient) diskIsUsed(ctx context.Context, volumeID string) (bool, error) { + volume, err := i.GetVolume(ctx, volumeID) + if err != nil { + return false, err + } + + diskUsed := volume.ServerId != nil && *volume.ServerId != "" + + return diskUsed, nil +} diff --git a/pkg/stackit/client/iaas_test.go b/pkg/stackit/client/iaas_test.go new file mode 100644 index 00000000..f358a619 --- /dev/null +++ b/pkg/stackit/client/iaas_test.go @@ -0,0 +1,470 @@ +package client_test + +import ( + "context" + "fmt" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" + "go.uber.org/mock/gomock" + + "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" + mock "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client/mock" +) + +var _ = Describe("Server", func() { + var ( + mockCtrl *gomock.Controller + mockIaaSClient *mock.MockIaaSClient + ) + + const ( + serverID = "server-uuid-123" + ) + + BeforeEach(func() { + mockCtrl = gomock.NewController(GinkgoT()) + mockIaaSClient = mock.NewMockIaaSClient(mockCtrl) + }) + + AfterEach(func() { + mockCtrl.Finish() + }) + + Context("GetServer", func() { + It("returns a server on success", func() { + mockIaaSClient.EXPECT(). + GetServer(gomock.Any(), gomock.Any()). + Return(&iaas.Server{Id: new(serverID), Name: new("my-server")}, nil) + + server, err := mockIaaSClient.GetServer(context.Background(), "my-server") + Expect(err).ToNot(HaveOccurred()) + Expect(*server.Id).To(Equal(serverID)) + }) + + It("returns ErrorNotFound when API returns 404", func() { + mockIaaSClient.EXPECT(). + GetServer(gomock.Any(), gomock.Any()). + Return(nil, client.ErrorNotFound) + + _, err := mockIaaSClient.GetServer(context.Background(), "my-server") + Expect(err).To(HaveOccurred()) + }) + }) + + Context("CreateServer", func() { + It("successfully creates a server", func() { + mockIaaSClient.EXPECT(). + CreateServer(gomock.Any(), gomock.Any()). + Return(iaas.Server{ + Id: new(serverID), Name: new("new-server")}, nil) + payload := iaas.CreateServerPayload{Name: new("new-server")} + + server, err := mockIaaSClient.CreateServer(context.Background(), payload) + Expect(err).ToNot(HaveOccurred()) + Expect(*server.Id).To(Equal(serverID)) + }) + }) + + Context("DeleteServer", func() { + It("deletes the server successfully", func() { + mockIaaSClient.EXPECT(). + DeleteServer(gomock.Any(), gomock.Any()). + Return(nil) + + err := mockIaaSClient.DeleteServer(context.Background(), serverID) + Expect(err).ToNot(HaveOccurred()) + }) + }) + + Context("ListServers", func() { + It("returns a list of servers with details", func() { + mockItems := []iaas.Server{ + {Id: new("id-1"), Name: new("server-1")}, + } + + mockIaaSClient.EXPECT(). + ListServers(gomock.Any()). + Return(&iaas.ServerListResponse{Items: mockItems}, nil) + + resp, err := mockIaaSClient.ListServers(context.Background()) + Expect(err).ToNot(HaveOccurred()) + Expect(resp).To(HaveLen(1)) + items := *resp + Expect(items).To(HaveLen(1)) + Expect(*items[0].Id).To(Equal("id-1")) + }) + }) + + Context("UpdateServer", func() { + It("updates server properties", func() { + mockIaaSClient.EXPECT(). + UpdateServer(gomock.Any(), gomock.Any(), gomock.Any()). + Return(&iaas.Server{Id: new(serverID), Name: new("updated-name")}, nil) + + updatePayload := iaas.UpdateServerPayload{Name: new("updated-name")} + server, err := mockIaaSClient.UpdateServer(context.Background(), serverID, updatePayload) + Expect(err).ToNot(HaveOccurred()) + Expect(server.Name).To(Equal("updated-name")) + }) + }) +}) + +var _ = Describe("Snapshot", func() { + var ( + mockCtrl *gomock.Controller + mockIaaSClient *mock.MockIaaSClient + ) + + const ( + snapshotID = "snapshot-uuid-123" + ) + + BeforeEach(func() { + mockCtrl = gomock.NewController(GinkgoT()) + mockIaaSClient = mock.NewMockIaaSClient(mockCtrl) + }) + + AfterEach(func() { + mockCtrl.Finish() + }) + + Context("CreateSnapshot", func() { + It("successfully creates a snapshot", func() { + mockIaaSClient.EXPECT(). + CreateSnapshot(gomock.Any(), gomock.Any()). + Return(&iaas.Snapshot{Id: new(snapshotID)}, nil) + + payload := iaas.CreateSnapshotPayload{Name: new("new-snapshot")} + snapshot, err := mockIaaSClient.CreateSnapshot(context.Background(), payload) + Expect(err).ToNot(HaveOccurred()) + Expect(*snapshot.Id).To(Equal(snapshotID)) + }) + }) + + Context("ListSnapshots", func() { + It("returns a filtered list of snapshots", func() { + mockItems := []iaas.Snapshot{ + {Id: new("id-1"), Name: new("snap-1")}, + {Id: new("id-2"), Name: new("snap-2")}, + } + + mockIaaSClient.EXPECT(). + ListSnapshots(gomock.Any(), gomock.Any()). + Return(&iaas.SnapshotListResponse{Items: mockItems}, nil) + + resp, err := mockIaaSClient.ListSnapshots(context.Background(), nil) + Expect(err).ToNot(HaveOccurred()) + Expect(resp).To(HaveLen(2)) + }) + }) + + Context("GetSnapshot", func() { + It("returns a specific snapshot on success", func() { + mockIaaSClient.EXPECT(). + GetSnapshot(gomock.Any(), gomock.Any()). + Return(&iaas.Snapshot{Id: new(snapshotID), Status: new("AVAILABLE")}, nil) + + snapshot, err := mockIaaSClient.GetSnapshot(context.Background(), snapshotID) + Expect(err).ToNot(HaveOccurred()) + Expect(*snapshot.Id).To(Equal(snapshotID)) + }) + }) + + Context("DeleteSnapshot", func() { + It("deletes the snapshot successfully", func() { + mockIaaSClient.EXPECT(). + DeleteSnapshot(gomock.Any(), gomock.Any()). + Return(nil) + + err := mockIaaSClient.DeleteSnapshot(context.Background(), snapshotID) + Expect(err).ToNot(HaveOccurred()) + }) + }) + + Context("WaitSnapshotReady", func() { + It("returns the current status of the snapshot", func() { + // WaitSnapshotReady internally calls GetSnapshot + mockIaaSClient.EXPECT(). + WaitSnapshotReady(gomock.Any(), snapshotID). + Return(new("READY"), nil) + + status, err := mockIaaSClient.WaitSnapshotReady(context.Background(), snapshotID) + Expect(err).ToNot(HaveOccurred()) + Expect(*status).To(Equal("READY")) + }) + + It("returns an error if the snapshot retrieval fails", func() { + mockIaaSClient.EXPECT(). + WaitSnapshotReady(gomock.Any(), snapshotID). + Return(nil, fmt.Errorf("api error")) + + status, err := mockIaaSClient.WaitSnapshotReady(context.Background(), snapshotID) + Expect(err).To(HaveOccurred()) + Expect(status).To(BeNil()) + }) + }) +}) + +var _ = Describe("Backup", func() { + var ( + mockCtrl *gomock.Controller + mockIaaSClient *mock.MockIaaSClient + ) + + BeforeEach(func() { + mockCtrl = gomock.NewController(GinkgoT()) + mockIaaSClient = mock.NewMockIaaSClient(mockCtrl) + }) + + AfterEach(func() { + mockCtrl.Finish() + }) + + Context("buildCreateBackupPayload", func() { + DescribeTable("successful payload variants", + func(name, volID, snapshotID string, tags map[string]string, expectedPayload iaas.CreateBackupPayload) { + actualPayload, err := client.BuildCreateBackupPayload(name, volID, snapshotID, tags) + Expect(err).ToNot(HaveOccurred()) + Expect(actualPayload).To(Equal(expectedPayload)) + }, + Entry("with volume source", "expected-name", "volume-id", "", nil, iaas.CreateBackupPayload{ + Name: new("expected-name"), + Description: new(client.BackupDescription), + Source: iaas.BackupSource{Type: "volume", Id: "volume-id"}, + }), + Entry("with snapshot source", "expected-name", "", "snapshot-id", nil, iaas.CreateBackupPayload{ + Name: new("expected-name"), + Description: new(client.BackupDescription), + Source: iaas.BackupSource{Type: "snapshot", Id: "snapshot-id"}, + }), + ) + }) + + Context("CreateBackup API Calls", func() { + It("returns backup on successful API call", func() { + mockIaaSClient.EXPECT(). + CreateBackup(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + Return(&iaas.Backup{Id: new("expected-backup-id")}, nil) + + backup, err := mockIaaSClient.CreateBackup(context.Background(), "expected-name", "volume-id", "", nil) + + Expect(err).ToNot(HaveOccurred()) + Expect(*backup.Id).To(Equal("expected-backup-id")) + }) + + It("returns error when API fails", func() { + mockIaaSClient.EXPECT(). + CreateBackup(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + Return(nil, fmt.Errorf("API error")) + + _, err := mockIaaSClient.CreateBackup(context.Background(), "expected-name", "volume-id", "", nil) + Expect(err).To(HaveOccurred()) + Expect(err.Error()).To(ContainSubstring("API error")) + }) + }) + + Context("ListBackups", func() { + It("returns a filtered list of backups on success", func() { + mockBackups := &iaas.BackupListResponse{ + Items: []iaas.Backup{ + {Id: new("id-1"), Name: new("backup-1")}, + {Id: new("id-2"), Name: new("backup-2")}, + }, + } + + mockIaaSClient.EXPECT(). + ListBackups(gomock.Any(), gomock.Any()). + Return(mockBackups.Items, nil) + + backups, err := mockIaaSClient.ListBackups(context.Background(), nil) + + Expect(err).ToNot(HaveOccurred()) + Expect(backups).To(HaveLen(2)) + Expect(*backups[0].Id).To(Equal("id-1")) + }) + + It("returns error when list API fails", func() { + mockIaaSClient.EXPECT(). + ListBackups(gomock.Any(), gomock.Any()). + Return(nil, fmt.Errorf("list error")) + + _, err := mockIaaSClient.ListBackups(context.Background(), nil) + Expect(err).To(HaveOccurred()) + }) + }) + + Context("GetBackup", func() { + It("returns a specific backup", func() { + mockIaaSClient.EXPECT(). + GetBackup(gomock.Any(), "backup-id"). + Return(&iaas.Backup{Id: new("backup-id")}, nil) + + backup, err := mockIaaSClient.GetBackup(context.Background(), "backup-id") + Expect(err).ToNot(HaveOccurred()) + Expect(*backup.Id).To(Equal("backup-id")) + }) + }) + + Context("DeleteBackup", func() { + It("calls delete successfully", func() { + mockIaaSClient.EXPECT(). + DeleteBackup(gomock.Any(), "backup-id"). + Return(nil) + + err := mockIaaSClient.DeleteBackup(context.Background(), "backup-id") + Expect(err).ToNot(HaveOccurred()) + }) + + It("returns error if delete fails", func() { + mockIaaSClient.EXPECT(). + DeleteBackup(gomock.Any(), gomock.Any()). + Return(fmt.Errorf("delete failed")) + + err := mockIaaSClient.DeleteBackup(context.Background(), "any-id") + Expect(err).To(HaveOccurred()) + }) + }) + + Context("WaitBackupReady", func() { + It("returns the backup status when it becomes ready", func() { + // WaitBackupReady internally calls GetBackup to return the final status + mockIaaSClient.EXPECT(). + WaitBackupReady(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + Return(new("Ready"), nil) + + status, err := mockIaaSClient.WaitBackupReady(context.Background(), "backup-id", 10, 60) + + Expect(err).ToNot(HaveOccurred()) + Expect(*status).To(Equal("Ready")) + }) + + It("returns error on timeout or wait failure", func() { + mockIaaSClient.EXPECT(). + WaitBackupReady(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + Return(nil, fmt.Errorf("timeout waiting for backup")) + + status, err := mockIaaSClient.WaitBackupReady(context.Background(), "id", 1, 1) + Expect(err).To(HaveOccurred()) + Expect(status).To(BeNil()) + }) + }) +}) + +var _ = Describe("Volume", func() { + var ( + mockCtrl *gomock.Controller + mockIaaSClient *mock.MockIaaSClient + ) + + const ( + projectID = "project-id" + region = "eu01" + volumeID = "vol-123" + serverID = "server-123" + ) + + BeforeEach(func() { + mockCtrl = gomock.NewController(GinkgoT()) + mockIaaSClient = mock.NewMockIaaSClient(mockCtrl) + }) + + AfterEach(func() { + mockCtrl.Finish() + }) + + Context("Volume Lifecycle", func() { + It("CreateVolume successfully calls the API", func() { + mockIaaSClient.EXPECT(). + CreateVolume(gomock.Any(), gomock.Any()). + Return(&iaas.Volume{Id: new(volumeID)}, nil) + + vol, err := mockIaaSClient.CreateVolume(context.Background(), iaas.CreateVolumePayload{}) + Expect(err).ToNot(HaveOccurred()) + Expect(*vol.Id).To(Equal(volumeID)) + }) + + It("GetVolume returns a specific volume", func() { + mockIaaSClient.EXPECT(). + GetVolume(gomock.Any(), gomock.Any()). + Return(&iaas.Volume{Id: new(volumeID), Name: new("test-vol")}, nil) + + vol, err := mockIaaSClient.GetVolume(context.Background(), volumeID) + Expect(err).ToNot(HaveOccurred()) + Expect(*vol.Name).To(Equal("test-vol")) + }) + + It("DeleteVolume fails if volume is still attached (diskIsUsed logic)", func() { + mockIaaSClient.EXPECT(). + GetVolume(gomock.Any(), gomock.Any()). + Return(&iaas.Volume{Id: new(volumeID), ServerId: new(serverID)}, nil) + + err := mockIaaSClient.DeleteVolume(context.Background(), volumeID) + Expect(err).To(HaveOccurred()) + Expect(err.Error()).To(ContainSubstring("still attached")) + }) + }) + + Context("Attach/Detach Volume", func() { + It("AttachVolume calls API when not already attached", func() { + mockIaaSClient.EXPECT().GetVolume(gomock.Any(), gomock.Any()). + Return(&iaas.Volume{Id: new(volumeID), ServerId: nil}, nil) + + mockIaaSClient.EXPECT(). + AttachVolume(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + Return(new(volumeID), nil) + + id, err := mockIaaSClient.AttachVolume(context.Background(), serverID, volumeID, iaas.AddVolumeToServerPayload{}) + Expect(err).ToNot(HaveOccurred()) + Expect(id).To(Equal(volumeID)) + }) + + It("DetachVolume fails if status is not Available", func() { + mockIaaSClient.EXPECT().GetVolume(gomock.Any(), gomock.Any()). + Return(&iaas.Volume{Id: new(volumeID), Status: new("CREATING")}, nil) + + err := mockIaaSClient.DetachVolume(context.Background(), serverID, volumeID) + Expect(err).To(HaveOccurred()) + Expect(err.Error()).To(ContainSubstring("its status is CREATING")) + }) + }) + + Context("ExpandVolume", func() { + It("successfully resizes an Available volume", func() { + mockIaaSClient.EXPECT(). + ExpandVolume(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + Return(nil) + + err := mockIaaSClient.ExpandVolume(context.Background(), volumeID, "available", iaas.ResizeVolumePayload{}) + Expect(err).ToNot(HaveOccurred()) + }) + + It("errors when volume is in a bad state for resize", func() { + err := mockIaaSClient.ExpandVolume(context.Background(), volumeID, "ERROR", iaas.ResizeVolumePayload{}) + Expect(err).To(HaveOccurred()) + Expect(err.Error()).To(ContainSubstring("cannot be resized")) + }) + }) + + Context("Waiting Logic", func() { + It("WaitVolumeTargetStatus returns nil when target status is reached", func() { + // Mocking the behavior of WaitVolumeTargetStatus + mockIaaSClient.EXPECT(). + WaitVolumeTargetStatus(gomock.Any(), volumeID, []string{"available"}). + Return(nil) + + err := mockIaaSClient.WaitVolumeTargetStatus(context.Background(), volumeID, []string{"available"}) + Expect(err).ToNot(HaveOccurred()) + }) + + It("WaitDiskAttached returns error on timeout", func() { + mockIaaSClient.EXPECT(). + WaitDiskAttached(gomock.Any(), serverID, volumeID). + Return(fmt.Errorf("timeout")) + + err := mockIaaSClient.WaitDiskAttached(context.Background(), serverID, volumeID) + Expect(err).To(HaveOccurred()) + }) + }) +}) diff --git a/pkg/stackit/labels.go b/pkg/stackit/client/labels.go similarity index 61% rename from pkg/stackit/labels.go rename to pkg/stackit/client/labels.go index 0948daac..7578a031 100644 --- a/pkg/stackit/labels.go +++ b/pkg/stackit/client/labels.go @@ -1,8 +1,8 @@ -package stackit +package client -type labels map[string]any +type Labels map[string]any -func labelsFromTags(tags map[string]string) labels { +func LabelsFromTags(tags map[string]string) Labels { // Create a new map of type map[string]any l := make(map[string]any, len(tags)) @@ -11,5 +11,5 @@ func labelsFromTags(tags map[string]string) labels { l[key] = value } - return labels(l) + return Labels(l) } diff --git a/pkg/stackit/labels_test.go b/pkg/stackit/client/labels_test.go similarity index 84% rename from pkg/stackit/labels_test.go rename to pkg/stackit/client/labels_test.go index 00753051..926d4e52 100644 --- a/pkg/stackit/labels_test.go +++ b/pkg/stackit/client/labels_test.go @@ -1,4 +1,4 @@ -package stackit +package client import ( . "github.com/onsi/ginkgo/v2" @@ -13,7 +13,7 @@ var _ = Describe("Labels", func() { "key2": "value2", } - labels := labelsFromTags(tags) + labels := LabelsFromTags(tags) Expect(labels).To(HaveKeyWithValue("key1", "value1")) Expect(labels).To(HaveKeyWithValue("key2", "value2")) @@ -22,7 +22,7 @@ var _ = Describe("Labels", func() { It("should handle empty tags", func() { tags := map[string]string{} - labels := labelsFromTags(tags) + labels := LabelsFromTags(tags) Expect(labels).To(BeEmpty()) }) @@ -30,7 +30,7 @@ var _ = Describe("Labels", func() { It("should handle nil tags", func() { var tags map[string]string - labels := labelsFromTags(tags) + labels := LabelsFromTags(tags) Expect(labels).To(BeEmpty()) }) diff --git a/pkg/stackit/client/loadbalancer.go b/pkg/stackit/client/loadbalancer.go new file mode 100644 index 00000000..f0c6e5c5 --- /dev/null +++ b/pkg/stackit/client/loadbalancer.go @@ -0,0 +1,121 @@ +package client + +import ( + "context" + + sdkconfig "github.com/stackitcloud/stackit-sdk-go/core/config" + loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" +) + +type LoadBalancingClient interface { + CreateLoadBalancer(ctx context.Context, payload loadbalancer.CreateLoadBalancerPayload) (*loadbalancer.LoadBalancer, error) + ListLoadBalancers(ctx context.Context) ([]loadbalancer.LoadBalancer, error) + DeleteLoadBalancer(ctx context.Context, lbName string) error + GetLoadBalancer(ctx context.Context, id string) (*loadbalancer.LoadBalancer, error) + UpdateLoadBalancer(ctx context.Context, lbName string, updates loadbalancer.UpdateLoadBalancerPayload) error + UpdateTargetPool(ctx context.Context, name, targetPoolName string, payload loadbalancer.UpdateTargetPoolPayload) error + + CreateCredentials(ctx context.Context, payload loadbalancer.CreateCredentialsPayload) (*loadbalancer.CreateCredentialsResponse, error) + GetCredentials(ctx context.Context, credentialsRef string) (*loadbalancer.GetCredentialsResponse, error) + ListCredentials(ctx context.Context) (*loadbalancer.ListCredentialsResponse, error) + UpdateCredentials(ctx context.Context, credentialsRef string, payload loadbalancer.UpdateCredentialsPayload) error + DeleteCredentials(ctx context.Context, credentialsRef string) error +} + +type loadBalancingClient struct { + Client loadbalancer.DefaultAPI + projectID string + region string +} + +func NewLoadBalancingClient(region, projectID string, options []sdkconfig.ConfigurationOption) (LoadBalancingClient, error) { + apiClient, err := loadbalancer.NewAPIClient(options...) + if err != nil { + return nil, err + } + return &loadBalancingClient{ + Client: apiClient.DefaultAPI, + projectID: projectID, + region: region, + }, nil +} + +func (l loadBalancingClient) CreateLoadBalancer(ctx context.Context, payload loadbalancer.CreateLoadBalancerPayload) (*loadbalancer.LoadBalancer, error) { + lb, err := l.Client.CreateLoadBalancer(ctx, l.projectID, l.region).CreateLoadBalancerPayload(payload).Execute() + if isOpenAPINotFound(err) { + return lb, ErrorNotFound + } + return lb, err +} + +func (l loadBalancingClient) ListLoadBalancers(ctx context.Context) ([]loadbalancer.LoadBalancer, error) { + lbResponse, err := l.Client.ListLoadBalancers(ctx, l.projectID, l.region).Execute() + if err != nil { + return nil, err + } + return lbResponse.GetLoadBalancers(), nil +} + +func (l loadBalancingClient) DeleteLoadBalancer(ctx context.Context, lbName string) error { + _, err := l.Client.DeleteLoadBalancer(ctx, l.projectID, l.region, lbName).Execute() + return err +} + +func (l loadBalancingClient) GetLoadBalancer(ctx context.Context, lbName string) (*loadbalancer.LoadBalancer, error) { + return l.Client.GetLoadBalancer(ctx, l.projectID, l.region, lbName).Execute() +} + +func (l loadBalancingClient) UpdateLoadBalancer(ctx context.Context, lbName string, updates loadbalancer.UpdateLoadBalancerPayload) error { + if _, err := l.Client.UpdateLoadBalancer(ctx, l.projectID, l.region, lbName).UpdateLoadBalancerPayload(updates).Execute(); err != nil { + return err + } + + return nil +} + +func (l loadBalancingClient) UpdateTargetPool(ctx context.Context, name, targetPoolName string, payload loadbalancer.UpdateTargetPoolPayload) error { + _, err := l.Client.UpdateTargetPool(ctx, l.projectID, l.region, name, targetPoolName).UpdateTargetPoolPayload(payload).Execute() + return err +} + +func (l loadBalancingClient) UpdateTargatPool(ctx context.Context, lbName, targetPoolName string, payload loadbalancer.UpdateTargetPoolPayload) error { + _, err := l.Client.UpdateTargetPool(ctx, l.projectID, l.region, lbName, targetPoolName).UpdateTargetPoolPayload(payload).Execute() + return err +} + +func (l loadBalancingClient) CreateCredentials(ctx context.Context, payload loadbalancer.CreateCredentialsPayload) (*loadbalancer.CreateCredentialsResponse, error) { + resp, err := l.Client.CreateCredentials(ctx, l.projectID, l.region).CreateCredentialsPayload(payload).Execute() + if err != nil { + return nil, err + } + + return resp, nil +} + +func (l loadBalancingClient) GetCredentials(ctx context.Context, credentialsRef string) (*loadbalancer.GetCredentialsResponse, error) { + resp, err := l.Client.GetCredentials(ctx, l.projectID, l.region, credentialsRef).Execute() + if err != nil { + return nil, err + } + + return resp, nil +} + +func (l loadBalancingClient) ListCredentials(ctx context.Context) (*loadbalancer.ListCredentialsResponse, error) { + resp, err := l.Client.ListCredentials(ctx, l.projectID, l.region).Execute() + if err != nil { + return nil, err + } + + return resp, nil +} + +func (l loadBalancingClient) UpdateCredentials(ctx context.Context, credentialsRef string, payload loadbalancer.UpdateCredentialsPayload) error { + _, err := l.Client.UpdateCredentials(ctx, l.projectID, l.region, credentialsRef).UpdateCredentialsPayload(payload).Execute() + return err +} + +func (l loadBalancingClient) DeleteCredentials(ctx context.Context, credentialsRef string) error { + _, err := l.Client.DeleteCredentials(ctx, l.projectID, l.region, credentialsRef).Execute() + return err +} diff --git a/pkg/stackit/client/loadbalancer_test.go b/pkg/stackit/client/loadbalancer_test.go new file mode 100644 index 00000000..43000fd0 --- /dev/null +++ b/pkg/stackit/client/loadbalancer_test.go @@ -0,0 +1,133 @@ +package client_test + +import ( + "context" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" + "go.uber.org/mock/gomock" + + mock "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client/mock" +) + +var _ = Describe("LoadBalancer", func() { + var ( + mockCtrl *gomock.Controller + mockLBClient *mock.MockLoadBalancingClient + ) + + const ( + lbName = "my-lb" + ) + + BeforeEach(func() { + mockCtrl = gomock.NewController(GinkgoT()) + mockLBClient = mock.NewMockLoadBalancingClient(mockCtrl) + }) + + AfterEach(func() { + mockCtrl.Finish() + }) + + Context("LoadBalancer Management", func() { + It("CreateLoadBalancer successfully calls the API", func() { + payload := loadbalancer.CreateLoadBalancerPayload{Name: new(lbName)} + mockLBClient.EXPECT(). + CreateLoadBalancer(gomock.Any(), payload). + Return(&loadbalancer.LoadBalancer{Name: new(lbName)}, nil) + + lb, err := mockLBClient.CreateLoadBalancer(context.Background(), payload) + Expect(err).ToNot(HaveOccurred()) + Expect(*lb.Name).To(Equal(lbName)) + }) + + It("ListLoadBalancers returns a slice of load balancers", func() { + mockItems := []loadbalancer.LoadBalancer{ + {Name: new("lb-1")}, + {Name: new("lb-2")}, + } + mockLBClient.EXPECT(). + ListLoadBalancers(gomock.Any()). + Return(mockItems, nil) + + lbs, err := mockLBClient.ListLoadBalancers(context.Background()) + Expect(err).ToNot(HaveOccurred()) + Expect(lbs).To(HaveLen(2)) + Expect(*lbs[0].Name).To(Equal("lb-1")) + }) + + It("GetLoadBalancer returns a specific LB", func() { + mockLBClient.EXPECT(). + GetLoadBalancer(gomock.Any(), lbName). + Return(&loadbalancer.LoadBalancer{Name: new(lbName)}, nil) + + lb, err := mockLBClient.GetLoadBalancer(context.Background(), lbName) + Expect(err).ToNot(HaveOccurred()) + Expect(*lb.Name).To(Equal(lbName)) + }) + + It("UpdateLoadBalancer calls API successfully", func() { + mockLBClient.EXPECT(). + UpdateLoadBalancer(gomock.Any(), lbName, gomock.Any()). + Return(nil) + + err := mockLBClient.UpdateLoadBalancer(context.Background(), lbName, loadbalancer.UpdateLoadBalancerPayload{}) + Expect(err).ToNot(HaveOccurred()) + }) + + It("DeleteLoadBalancer calls API successfully", func() { + mockLBClient.EXPECT(). + DeleteLoadBalancer(gomock.Any(), lbName). + Return(nil) + + err := mockLBClient.DeleteLoadBalancer(context.Background(), lbName) + Expect(err).ToNot(HaveOccurred()) + }) + }) + + Context("Target Pools", func() { + It("UpdateTargetPool calls API successfully", func() { + payload := loadbalancer.UpdateTargetPoolPayload{} + mockLBClient.EXPECT(). + UpdateTargetPool(gomock.Any(), lbName, "pool-1", payload). + Return(nil) + + err := mockLBClient.UpdateTargetPool(context.Background(), lbName, "pool-1", payload) + Expect(err).ToNot(HaveOccurred()) + }) + }) + + Context("Credentials", func() { + It("CreateCredentials returns response on success", func() { + mockLBClient.EXPECT(). + CreateCredentials(gomock.Any(), gomock.Any()). + Return(&loadbalancer.CreateCredentialsResponse{Credential: &loadbalancer.CredentialsResponse{ + DisplayName: new("cred-1"), + }}, nil) + + resp, err := mockLBClient.CreateCredentials(context.Background(), loadbalancer.CreateCredentialsPayload{}) + Expect(err).ToNot(HaveOccurred()) + Expect(*resp.Credential.DisplayName).To(Equal("cred-1")) + }) + + It("ListCredentials returns all credentials", func() { + mockLBClient.EXPECT(). + ListCredentials(gomock.Any()). + Return(&loadbalancer.ListCredentialsResponse{Credentials: []loadbalancer.CredentialsResponse{{DisplayName: new("cred-1")}}}, nil) + + resp, err := mockLBClient.ListCredentials(context.Background()) + Expect(err).ToNot(HaveOccurred()) + Expect(resp.Credentials).To(HaveLen(1)) + }) + + It("DeleteCredentials calls API successfully", func() { + mockLBClient.EXPECT(). + DeleteCredentials(gomock.Any(), "cred-ref"). + Return(nil) + + err := mockLBClient.DeleteCredentials(context.Background(), "cred-ref") + Expect(err).ToNot(HaveOccurred()) + }) + }) +}) diff --git a/pkg/stackit/client/mock/iaas_mock.go b/pkg/stackit/client/mock/iaas_mock.go new file mode 100644 index 00000000..cf572930 --- /dev/null +++ b/pkg/stackit/client/mock/iaas_mock.go @@ -0,0 +1,453 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./pkg/stackit/client (interfaces: IaaSClient) +// +// Generated by this command: +// +// mockgen -destination ./pkg/stackit/client/mock/iaas_mock.go -package client ./pkg/stackit/client IaaSClient +// + +// Package client is a generated GoMock package. +package client + +import ( + context "context" + reflect "reflect" + + v2api "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" + gomock "go.uber.org/mock/gomock" + wait "k8s.io/apimachinery/pkg/util/wait" +) + +// MockIaaSClient is a mock of IaaSClient interface. +type MockIaaSClient struct { + ctrl *gomock.Controller + recorder *MockIaaSClientMockRecorder + isgomock struct{} +} + +// MockIaaSClientMockRecorder is the mock recorder for MockIaaSClient. +type MockIaaSClientMockRecorder struct { + mock *MockIaaSClient +} + +// NewMockIaaSClient creates a new mock instance. +func NewMockIaaSClient(ctrl *gomock.Controller) *MockIaaSClient { + mock := &MockIaaSClient{ctrl: ctrl} + mock.recorder = &MockIaaSClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockIaaSClient) EXPECT() *MockIaaSClientMockRecorder { + return m.recorder +} + +// AttachVolume mocks base method. +func (m *MockIaaSClient) AttachVolume(ctx context.Context, serverID, volumeID string, payload v2api.AddVolumeToServerPayload) (string, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AttachVolume", ctx, serverID, volumeID, payload) + ret0, _ := ret[0].(string) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// AttachVolume indicates an expected call of AttachVolume. +func (mr *MockIaaSClientMockRecorder) AttachVolume(ctx, serverID, volumeID, payload any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AttachVolume", reflect.TypeOf((*MockIaaSClient)(nil).AttachVolume), ctx, serverID, volumeID, payload) +} + +// CreateBackup mocks base method. +func (m *MockIaaSClient) CreateBackup(ctx context.Context, name, volID, snapshotID string, tags map[string]string) (*v2api.Backup, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateBackup", ctx, name, volID, snapshotID, tags) + ret0, _ := ret[0].(*v2api.Backup) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateBackup indicates an expected call of CreateBackup. +func (mr *MockIaaSClientMockRecorder) CreateBackup(ctx, name, volID, snapshotID, tags any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateBackup", reflect.TypeOf((*MockIaaSClient)(nil).CreateBackup), ctx, name, volID, snapshotID, tags) +} + +// CreateServer mocks base method. +func (m *MockIaaSClient) CreateServer(ctx context.Context, create v2api.CreateServerPayload) (*v2api.Server, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateServer", ctx, create) + ret0, _ := ret[0].(*v2api.Server) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateServer indicates an expected call of CreateServer. +func (mr *MockIaaSClientMockRecorder) CreateServer(ctx, create any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateServer", reflect.TypeOf((*MockIaaSClient)(nil).CreateServer), ctx, create) +} + +// CreateSnapshot mocks base method. +func (m *MockIaaSClient) CreateSnapshot(ctx context.Context, payload v2api.CreateSnapshotPayload) (*v2api.Snapshot, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateSnapshot", ctx, payload) + ret0, _ := ret[0].(*v2api.Snapshot) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateSnapshot indicates an expected call of CreateSnapshot. +func (mr *MockIaaSClientMockRecorder) CreateSnapshot(ctx, payload any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSnapshot", reflect.TypeOf((*MockIaaSClient)(nil).CreateSnapshot), ctx, payload) +} + +// CreateVolume mocks base method. +func (m *MockIaaSClient) CreateVolume(ctx context.Context, payload v2api.CreateVolumePayload) (*v2api.Volume, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateVolume", ctx, payload) + ret0, _ := ret[0].(*v2api.Volume) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateVolume indicates an expected call of CreateVolume. +func (mr *MockIaaSClientMockRecorder) CreateVolume(ctx, payload any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVolume", reflect.TypeOf((*MockIaaSClient)(nil).CreateVolume), ctx, payload) +} + +// DeleteBackup mocks base method. +func (m *MockIaaSClient) DeleteBackup(ctx context.Context, backupID string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteBackup", ctx, backupID) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteBackup indicates an expected call of DeleteBackup. +func (mr *MockIaaSClientMockRecorder) DeleteBackup(ctx, backupID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteBackup", reflect.TypeOf((*MockIaaSClient)(nil).DeleteBackup), ctx, backupID) +} + +// DeleteServer mocks base method. +func (m *MockIaaSClient) DeleteServer(ctx context.Context, serverID string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteServer", ctx, serverID) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteServer indicates an expected call of DeleteServer. +func (mr *MockIaaSClientMockRecorder) DeleteServer(ctx, serverID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteServer", reflect.TypeOf((*MockIaaSClient)(nil).DeleteServer), ctx, serverID) +} + +// DeleteSnapshot mocks base method. +func (m *MockIaaSClient) DeleteSnapshot(ctx context.Context, snapshotID string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteSnapshot", ctx, snapshotID) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteSnapshot indicates an expected call of DeleteSnapshot. +func (mr *MockIaaSClientMockRecorder) DeleteSnapshot(ctx, snapshotID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSnapshot", reflect.TypeOf((*MockIaaSClient)(nil).DeleteSnapshot), ctx, snapshotID) +} + +// DeleteVolume mocks base method. +func (m *MockIaaSClient) DeleteVolume(ctx context.Context, volumeID string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteVolume", ctx, volumeID) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteVolume indicates an expected call of DeleteVolume. +func (mr *MockIaaSClientMockRecorder) DeleteVolume(ctx, volumeID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVolume", reflect.TypeOf((*MockIaaSClient)(nil).DeleteVolume), ctx, volumeID) +} + +// DetachVolume mocks base method. +func (m *MockIaaSClient) DetachVolume(ctx context.Context, serverID, volumeID string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DetachVolume", ctx, serverID, volumeID) + ret0, _ := ret[0].(error) + return ret0 +} + +// DetachVolume indicates an expected call of DetachVolume. +func (mr *MockIaaSClientMockRecorder) DetachVolume(ctx, serverID, volumeID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DetachVolume", reflect.TypeOf((*MockIaaSClient)(nil).DetachVolume), ctx, serverID, volumeID) +} + +// ExpandVolume mocks base method. +func (m *MockIaaSClient) ExpandVolume(ctx context.Context, volumeID, volumeStatus string, payload v2api.ResizeVolumePayload) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ExpandVolume", ctx, volumeID, volumeStatus, payload) + ret0, _ := ret[0].(error) + return ret0 +} + +// ExpandVolume indicates an expected call of ExpandVolume. +func (mr *MockIaaSClientMockRecorder) ExpandVolume(ctx, volumeID, volumeStatus, payload any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExpandVolume", reflect.TypeOf((*MockIaaSClient)(nil).ExpandVolume), ctx, volumeID, volumeStatus, payload) +} + +// GetBackup mocks base method. +func (m *MockIaaSClient) GetBackup(ctx context.Context, backupID string) (*v2api.Backup, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetBackup", ctx, backupID) + ret0, _ := ret[0].(*v2api.Backup) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetBackup indicates an expected call of GetBackup. +func (mr *MockIaaSClientMockRecorder) GetBackup(ctx, backupID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBackup", reflect.TypeOf((*MockIaaSClient)(nil).GetBackup), ctx, backupID) +} + +// GetServer mocks base method. +func (m *MockIaaSClient) GetServer(ctx context.Context, serverID string) (*v2api.Server, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetServer", ctx, serverID) + ret0, _ := ret[0].(*v2api.Server) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetServer indicates an expected call of GetServer. +func (mr *MockIaaSClientMockRecorder) GetServer(ctx, serverID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServer", reflect.TypeOf((*MockIaaSClient)(nil).GetServer), ctx, serverID) +} + +// GetSnapshot mocks base method. +func (m *MockIaaSClient) GetSnapshot(ctx context.Context, snapshotID string) (*v2api.Snapshot, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSnapshot", ctx, snapshotID) + ret0, _ := ret[0].(*v2api.Snapshot) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSnapshot indicates an expected call of GetSnapshot. +func (mr *MockIaaSClientMockRecorder) GetSnapshot(ctx, snapshotID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSnapshot", reflect.TypeOf((*MockIaaSClient)(nil).GetSnapshot), ctx, snapshotID) +} + +// GetVolume mocks base method. +func (m *MockIaaSClient) GetVolume(ctx context.Context, volumeID string) (*v2api.Volume, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetVolume", ctx, volumeID) + ret0, _ := ret[0].(*v2api.Volume) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVolume indicates an expected call of GetVolume. +func (mr *MockIaaSClientMockRecorder) GetVolume(ctx, volumeID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolume", reflect.TypeOf((*MockIaaSClient)(nil).GetVolume), ctx, volumeID) +} + +// GetVolumeByName mocks base method. +func (m *MockIaaSClient) GetVolumeByName(ctx context.Context, name string) (*v2api.Volume, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetVolumeByName", ctx, name) + ret0, _ := ret[0].(*v2api.Volume) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVolumeByName indicates an expected call of GetVolumeByName. +func (mr *MockIaaSClientMockRecorder) GetVolumeByName(ctx, name any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolumeByName", reflect.TypeOf((*MockIaaSClient)(nil).GetVolumeByName), ctx, name) +} + +// GetVolumesByName mocks base method. +func (m *MockIaaSClient) GetVolumesByName(ctx context.Context, volName string) ([]v2api.Volume, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetVolumesByName", ctx, volName) + ret0, _ := ret[0].([]v2api.Volume) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVolumesByName indicates an expected call of GetVolumesByName. +func (mr *MockIaaSClientMockRecorder) GetVolumesByName(ctx, volName any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolumesByName", reflect.TypeOf((*MockIaaSClient)(nil).GetVolumesByName), ctx, volName) +} + +// ListBackups mocks base method. +func (m *MockIaaSClient) ListBackups(ctx context.Context, filters map[string]string) ([]v2api.Backup, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListBackups", ctx, filters) + ret0, _ := ret[0].([]v2api.Backup) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListBackups indicates an expected call of ListBackups. +func (mr *MockIaaSClientMockRecorder) ListBackups(ctx, filters any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListBackups", reflect.TypeOf((*MockIaaSClient)(nil).ListBackups), ctx, filters) +} + +// ListServers mocks base method. +func (m *MockIaaSClient) ListServers(ctx context.Context) (*[]v2api.Server, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListServers", ctx) + ret0, _ := ret[0].(*[]v2api.Server) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListServers indicates an expected call of ListServers. +func (mr *MockIaaSClientMockRecorder) ListServers(ctx any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServers", reflect.TypeOf((*MockIaaSClient)(nil).ListServers), ctx) +} + +// ListSnapshots mocks base method. +func (m *MockIaaSClient) ListSnapshots(ctx context.Context, filters map[string]string) ([]v2api.Snapshot, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListSnapshots", ctx, filters) + ret0, _ := ret[0].([]v2api.Snapshot) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListSnapshots indicates an expected call of ListSnapshots. +func (mr *MockIaaSClientMockRecorder) ListSnapshots(ctx, filters any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSnapshots", reflect.TypeOf((*MockIaaSClient)(nil).ListSnapshots), ctx, filters) +} + +// ListVolumes mocks base method. +func (m *MockIaaSClient) ListVolumes(ctx context.Context, arg1 int, arg2 string) ([]v2api.Volume, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListVolumes", ctx, arg1, arg2) + ret0, _ := ret[0].([]v2api.Volume) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListVolumes indicates an expected call of ListVolumes. +func (mr *MockIaaSClientMockRecorder) ListVolumes(ctx, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVolumes", reflect.TypeOf((*MockIaaSClient)(nil).ListVolumes), ctx, arg1, arg2) +} + +// UpdateServer mocks base method. +func (m *MockIaaSClient) UpdateServer(ctx context.Context, serverID string, update v2api.UpdateServerPayload) (*v2api.Server, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateServer", ctx, serverID, update) + ret0, _ := ret[0].(*v2api.Server) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateServer indicates an expected call of UpdateServer. +func (mr *MockIaaSClientMockRecorder) UpdateServer(ctx, serverID, update any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateServer", reflect.TypeOf((*MockIaaSClient)(nil).UpdateServer), ctx, serverID, update) +} + +// WaitBackupReady mocks base method. +func (m *MockIaaSClient) WaitBackupReady(ctx context.Context, backupID string, snapshotSize int64, backupMaxDurationSecondsPerGB int) (*string, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "WaitBackupReady", ctx, backupID, snapshotSize, backupMaxDurationSecondsPerGB) + ret0, _ := ret[0].(*string) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// WaitBackupReady indicates an expected call of WaitBackupReady. +func (mr *MockIaaSClientMockRecorder) WaitBackupReady(ctx, backupID, snapshotSize, backupMaxDurationSecondsPerGB any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitBackupReady", reflect.TypeOf((*MockIaaSClient)(nil).WaitBackupReady), ctx, backupID, snapshotSize, backupMaxDurationSecondsPerGB) +} + +// WaitDiskAttached mocks base method. +func (m *MockIaaSClient) WaitDiskAttached(ctx context.Context, instanceID, volumeID string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "WaitDiskAttached", ctx, instanceID, volumeID) + ret0, _ := ret[0].(error) + return ret0 +} + +// WaitDiskAttached indicates an expected call of WaitDiskAttached. +func (mr *MockIaaSClientMockRecorder) WaitDiskAttached(ctx, instanceID, volumeID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitDiskAttached", reflect.TypeOf((*MockIaaSClient)(nil).WaitDiskAttached), ctx, instanceID, volumeID) +} + +// WaitDiskDetached mocks base method. +func (m *MockIaaSClient) WaitDiskDetached(ctx context.Context, instanceID, volumeID string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "WaitDiskDetached", ctx, instanceID, volumeID) + ret0, _ := ret[0].(error) + return ret0 +} + +// WaitDiskDetached indicates an expected call of WaitDiskDetached. +func (mr *MockIaaSClientMockRecorder) WaitDiskDetached(ctx, instanceID, volumeID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitDiskDetached", reflect.TypeOf((*MockIaaSClient)(nil).WaitDiskDetached), ctx, instanceID, volumeID) +} + +// WaitSnapshotReady mocks base method. +func (m *MockIaaSClient) WaitSnapshotReady(ctx context.Context, snapshotID string) (*string, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "WaitSnapshotReady", ctx, snapshotID) + ret0, _ := ret[0].(*string) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// WaitSnapshotReady indicates an expected call of WaitSnapshotReady. +func (mr *MockIaaSClientMockRecorder) WaitSnapshotReady(ctx, snapshotID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitSnapshotReady", reflect.TypeOf((*MockIaaSClient)(nil).WaitSnapshotReady), ctx, snapshotID) +} + +// WaitVolumeTargetStatus mocks base method. +func (m *MockIaaSClient) WaitVolumeTargetStatus(ctx context.Context, volumeID string, tStatus []string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "WaitVolumeTargetStatus", ctx, volumeID, tStatus) + ret0, _ := ret[0].(error) + return ret0 +} + +// WaitVolumeTargetStatus indicates an expected call of WaitVolumeTargetStatus. +func (mr *MockIaaSClientMockRecorder) WaitVolumeTargetStatus(ctx, volumeID, tStatus any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitVolumeTargetStatus", reflect.TypeOf((*MockIaaSClient)(nil).WaitVolumeTargetStatus), ctx, volumeID, tStatus) +} + +// WaitVolumeTargetStatusWithCustomBackoff mocks base method. +func (m *MockIaaSClient) WaitVolumeTargetStatusWithCustomBackoff(ctx context.Context, volumeID string, tStatus []string, backoff *wait.Backoff) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "WaitVolumeTargetStatusWithCustomBackoff", ctx, volumeID, tStatus, backoff) + ret0, _ := ret[0].(error) + return ret0 +} + +// WaitVolumeTargetStatusWithCustomBackoff indicates an expected call of WaitVolumeTargetStatusWithCustomBackoff. +func (mr *MockIaaSClientMockRecorder) WaitVolumeTargetStatusWithCustomBackoff(ctx, volumeID, tStatus, backoff any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitVolumeTargetStatusWithCustomBackoff", reflect.TypeOf((*MockIaaSClient)(nil).WaitVolumeTargetStatusWithCustomBackoff), ctx, volumeID, tStatus, backoff) +} diff --git a/pkg/stackit/client/mock/loadbalancer_mock.go b/pkg/stackit/client/mock/loadbalancer_mock.go new file mode 100644 index 00000000..cf24f889 --- /dev/null +++ b/pkg/stackit/client/mock/loadbalancer_mock.go @@ -0,0 +1,202 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./pkg/stackit/client (interfaces: LoadBalancingClient) +// +// Generated by this command: +// +// mockgen -destination ./pkg/stackit/client/mock/loadbalancer_mock.go -package client ./pkg/stackit/client LoadBalancingClient +// + +// Package client is a generated GoMock package. +package client + +import ( + context "context" + reflect "reflect" + + v2api "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" + gomock "go.uber.org/mock/gomock" +) + +// MockLoadBalancingClient is a mock of LoadBalancingClient interface. +type MockLoadBalancingClient struct { + ctrl *gomock.Controller + recorder *MockLoadBalancingClientMockRecorder + isgomock struct{} +} + +// MockLoadBalancingClientMockRecorder is the mock recorder for MockLoadBalancingClient. +type MockLoadBalancingClientMockRecorder struct { + mock *MockLoadBalancingClient +} + +// NewMockLoadBalancingClient creates a new mock instance. +func NewMockLoadBalancingClient(ctrl *gomock.Controller) *MockLoadBalancingClient { + mock := &MockLoadBalancingClient{ctrl: ctrl} + mock.recorder = &MockLoadBalancingClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockLoadBalancingClient) EXPECT() *MockLoadBalancingClientMockRecorder { + return m.recorder +} + +// CreateCredentials mocks base method. +func (m *MockLoadBalancingClient) CreateCredentials(ctx context.Context, payload v2api.CreateCredentialsPayload) (*v2api.CreateCredentialsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateCredentials", ctx, payload) + ret0, _ := ret[0].(*v2api.CreateCredentialsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateCredentials indicates an expected call of CreateCredentials. +func (mr *MockLoadBalancingClientMockRecorder) CreateCredentials(ctx, payload any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateCredentials", reflect.TypeOf((*MockLoadBalancingClient)(nil).CreateCredentials), ctx, payload) +} + +// CreateLoadBalancer mocks base method. +func (m *MockLoadBalancingClient) CreateLoadBalancer(ctx context.Context, payload v2api.CreateLoadBalancerPayload) (*v2api.LoadBalancer, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateLoadBalancer", ctx, payload) + ret0, _ := ret[0].(*v2api.LoadBalancer) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateLoadBalancer indicates an expected call of CreateLoadBalancer. +func (mr *MockLoadBalancingClientMockRecorder) CreateLoadBalancer(ctx, payload any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateLoadBalancer", reflect.TypeOf((*MockLoadBalancingClient)(nil).CreateLoadBalancer), ctx, payload) +} + +// DeleteCredentials mocks base method. +func (m *MockLoadBalancingClient) DeleteCredentials(ctx context.Context, credentialsRef string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteCredentials", ctx, credentialsRef) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteCredentials indicates an expected call of DeleteCredentials. +func (mr *MockLoadBalancingClientMockRecorder) DeleteCredentials(ctx, credentialsRef any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCredentials", reflect.TypeOf((*MockLoadBalancingClient)(nil).DeleteCredentials), ctx, credentialsRef) +} + +// DeleteLoadBalancer mocks base method. +func (m *MockLoadBalancingClient) DeleteLoadBalancer(ctx context.Context, lbName string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteLoadBalancer", ctx, lbName) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteLoadBalancer indicates an expected call of DeleteLoadBalancer. +func (mr *MockLoadBalancingClientMockRecorder) DeleteLoadBalancer(ctx, lbName any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteLoadBalancer", reflect.TypeOf((*MockLoadBalancingClient)(nil).DeleteLoadBalancer), ctx, lbName) +} + +// GetCredentials mocks base method. +func (m *MockLoadBalancingClient) GetCredentials(ctx context.Context, credentialsRef string) (*v2api.GetCredentialsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetCredentials", ctx, credentialsRef) + ret0, _ := ret[0].(*v2api.GetCredentialsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCredentials indicates an expected call of GetCredentials. +func (mr *MockLoadBalancingClientMockRecorder) GetCredentials(ctx, credentialsRef any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCredentials", reflect.TypeOf((*MockLoadBalancingClient)(nil).GetCredentials), ctx, credentialsRef) +} + +// GetLoadBalancer mocks base method. +func (m *MockLoadBalancingClient) GetLoadBalancer(ctx context.Context, id string) (*v2api.LoadBalancer, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetLoadBalancer", ctx, id) + ret0, _ := ret[0].(*v2api.LoadBalancer) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLoadBalancer indicates an expected call of GetLoadBalancer. +func (mr *MockLoadBalancingClientMockRecorder) GetLoadBalancer(ctx, id any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLoadBalancer", reflect.TypeOf((*MockLoadBalancingClient)(nil).GetLoadBalancer), ctx, id) +} + +// ListCredentials mocks base method. +func (m *MockLoadBalancingClient) ListCredentials(ctx context.Context) (*v2api.ListCredentialsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListCredentials", ctx) + ret0, _ := ret[0].(*v2api.ListCredentialsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListCredentials indicates an expected call of ListCredentials. +func (mr *MockLoadBalancingClientMockRecorder) ListCredentials(ctx any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCredentials", reflect.TypeOf((*MockLoadBalancingClient)(nil).ListCredentials), ctx) +} + +// ListLoadBalancers mocks base method. +func (m *MockLoadBalancingClient) ListLoadBalancers(ctx context.Context) ([]v2api.LoadBalancer, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListLoadBalancers", ctx) + ret0, _ := ret[0].([]v2api.LoadBalancer) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListLoadBalancers indicates an expected call of ListLoadBalancers. +func (mr *MockLoadBalancingClientMockRecorder) ListLoadBalancers(ctx any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListLoadBalancers", reflect.TypeOf((*MockLoadBalancingClient)(nil).ListLoadBalancers), ctx) +} + +// UpdateCredentials mocks base method. +func (m *MockLoadBalancingClient) UpdateCredentials(ctx context.Context, credentialsRef string, payload v2api.UpdateCredentialsPayload) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateCredentials", ctx, credentialsRef, payload) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateCredentials indicates an expected call of UpdateCredentials. +func (mr *MockLoadBalancingClientMockRecorder) UpdateCredentials(ctx, credentialsRef, payload any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCredentials", reflect.TypeOf((*MockLoadBalancingClient)(nil).UpdateCredentials), ctx, credentialsRef, payload) +} + +// UpdateLoadBalancer mocks base method. +func (m *MockLoadBalancingClient) UpdateLoadBalancer(ctx context.Context, lbName string, updates v2api.UpdateLoadBalancerPayload) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateLoadBalancer", ctx, lbName, updates) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateLoadBalancer indicates an expected call of UpdateLoadBalancer. +func (mr *MockLoadBalancingClientMockRecorder) UpdateLoadBalancer(ctx, lbName, updates any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateLoadBalancer", reflect.TypeOf((*MockLoadBalancingClient)(nil).UpdateLoadBalancer), ctx, lbName, updates) +} + +// UpdateTargetPool mocks base method. +func (m *MockLoadBalancingClient) UpdateTargetPool(ctx context.Context, name, targetPoolName string, payload v2api.UpdateTargetPoolPayload) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateTargetPool", ctx, name, targetPoolName, payload) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateTargetPool indicates an expected call of UpdateTargetPool. +func (mr *MockLoadBalancingClientMockRecorder) UpdateTargetPool(ctx, name, targetPoolName, payload any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTargetPool", reflect.TypeOf((*MockLoadBalancingClient)(nil).UpdateTargetPool), ctx, name, targetPoolName, payload) +} diff --git a/pkg/stackit/client/mock/mock.go b/pkg/stackit/client/mock/mock.go new file mode 100644 index 00000000..aa5cbf0b --- /dev/null +++ b/pkg/stackit/client/mock/mock.go @@ -0,0 +1,72 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./pkg/stackit/client (interfaces: Factory) +// +// Generated by this command: +// +// mockgen -destination ./pkg/stackit/client/mock/mock.go -package client ./pkg/stackit/client Factory +// + +// Package client is a generated GoMock package. +package client + +import ( + reflect "reflect" + + client "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client" + config "github.com/stackitcloud/stackit-sdk-go/core/config" + gomock "go.uber.org/mock/gomock" +) + +// MockFactory is a mock of Factory interface. +type MockFactory struct { + ctrl *gomock.Controller + recorder *MockFactoryMockRecorder + isgomock struct{} +} + +// MockFactoryMockRecorder is the mock recorder for MockFactory. +type MockFactoryMockRecorder struct { + mock *MockFactory +} + +// NewMockFactory creates a new mock instance. +func NewMockFactory(ctrl *gomock.Controller) *MockFactory { + mock := &MockFactory{ctrl: ctrl} + mock.recorder = &MockFactoryMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFactory) EXPECT() *MockFactoryMockRecorder { + return m.recorder +} + +// IaaS mocks base method. +func (m *MockFactory) IaaS(options []config.ConfigurationOption) (client.IaaSClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "IaaS", options) + ret0, _ := ret[0].(client.IaaSClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// IaaS indicates an expected call of IaaS. +func (mr *MockFactoryMockRecorder) IaaS(options any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IaaS", reflect.TypeOf((*MockFactory)(nil).IaaS), options) +} + +// LoadBalancing mocks base method. +func (m *MockFactory) LoadBalancing(ptions []config.ConfigurationOption) (client.LoadBalancingClient, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "LoadBalancing", ptions) + ret0, _ := ret[0].(client.LoadBalancingClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// LoadBalancing indicates an expected call of LoadBalancing. +func (mr *MockFactoryMockRecorder) LoadBalancing(ptions any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LoadBalancing", reflect.TypeOf((*MockFactory)(nil).LoadBalancing), ptions) +} diff --git a/pkg/stackit/suite_test.go b/pkg/stackit/client/suite_test.go similarity index 92% rename from pkg/stackit/suite_test.go rename to pkg/stackit/client/suite_test.go index 5450af33..99c512b7 100644 --- a/pkg/stackit/suite_test.go +++ b/pkg/stackit/client/suite_test.go @@ -1,4 +1,4 @@ -package stackit +package client import ( "testing" diff --git a/pkg/stackit/client/utils.go b/pkg/stackit/client/utils.go new file mode 100644 index 00000000..15f04c30 --- /dev/null +++ b/pkg/stackit/client/utils.go @@ -0,0 +1,157 @@ +package client + +import ( + "errors" + "fmt" + "net/http" + + "github.com/gardener/gardener/extensions/pkg/controller" + stackitv1alpha1 "github.com/stackitcloud/gardener-extension-provider-stackit/v2/pkg/apis/stackit/v1alpha1" + oapiError "github.com/stackitcloud/stackit-sdk-go/core/oapierror" + iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + k8sclient "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/apiutil" +) + +var ( + // Scheme is a scheme with the types relevant for OpenStack actuators. + Scheme *runtime.Scheme + + decoder runtime.Decoder +) + +type objectWithGVK interface { + runtime.Object + SetGroupVersionKind(gvk schema.GroupVersionKind) +} + +func isOpenAPINotFound(err error) bool { + apiErr := &oapiError.GenericOpenAPIError{} + if !errors.As(err, &apiErr) { + return false + } + return apiErr.StatusCode == http.StatusNotFound +} + +// cloudProfileConfigFromCluster decodes the provider specific cloud profile configuration for a cluster +func cloudProfileConfigFromCluster(cluster *controller.Cluster) (*stackitv1alpha1.CloudProfileConfig, error) { + cloudProfileConfig := &stackitv1alpha1.CloudProfileConfig{} + setGVK(cloudProfileConfig) + + if cluster == nil || cluster.CloudProfile == nil { + return cloudProfileConfig, nil + } + + cloudProfileSpecifier := fmt.Sprintf("cloudProfile '%q'", k8sclient.ObjectKeyFromObject(cluster.CloudProfile)) + if cluster.Shoot != nil && cluster.Shoot.Spec.CloudProfile != nil { + cloudProfileSpecifier = fmt.Sprintf("%s '%s/%s'", cluster.Shoot.Spec.CloudProfile.Kind, cluster.Shoot.Namespace, cluster.Shoot.Spec.CloudProfile.Name) + } + + if err := decode(cluster.CloudProfile.Spec.ProviderConfig, cloudProfileConfig); err != nil { + return nil, fmt.Errorf("could not decode providerConfig of %s: %w", cloudProfileSpecifier, err) + } + return cloudProfileConfig, nil +} + +// setGVK sets the type meta based on the scheme. We do this to ensure that we always have a valid type meta (apiVersion +// + kind) when returning the object. +func setGVK(obj objectWithGVK) { + gkv, err := apiutil.GVKForObject(obj, Scheme) + if err != nil { + panic(fmt.Errorf("could not get kinds from schema: %w", err)) + } + obj.SetGroupVersionKind(gkv) +} + +func decode(raw *runtime.RawExtension, into objectWithGVK) error { + return decodeWith(decoder, raw, nil, into) +} + +// decodeWith decodes the given raw extension into the given object using the given decoder. After decoding, it ensures +// that the type meta is set correctly. +func decodeWith(dec runtime.Decoder, raw *runtime.RawExtension, defaults *schema.GroupVersionKind, into objectWithGVK) error { + var data []byte + if raw != nil { + data = raw.Raw + } + _, gkv, err := dec.Decode(data, defaults, into) + if err != nil { + return err + } + if gkv != nil { + into.SetGroupVersionKind(*gkv) + } + return nil +} + +func filterVolumes(volumes []iaas.Volume, filters map[string]string) []iaas.Volume { + filteredVolumes := make([]iaas.Volume, 0) + + if filters == nil { + return volumes + } + + for i := range volumes { + volume := &volumes[i] + if val, ok := filters["Name"]; ok && val != volume.GetName() { + continue + } + filteredVolumes = append(filteredVolumes, *volume) + } + + return filteredVolumes +} + +//nolint:dupl // We don't feel like doing generics to undupe this. +func filterSnapshots(snapshots []iaas.Snapshot, filters map[string]string) []iaas.Snapshot { + filteredSnapshots := make([]iaas.Snapshot, 0) + + if filters == nil { + return snapshots + } + + for _, obj := range snapshots { + if val, ok := filters["Status"]; ok && val != obj.GetStatus() { + continue + } + if val, ok := filters["VolumeID"]; ok && val != obj.GetVolumeId() { + continue + } + if val, ok := filters["Name"]; ok && val != obj.GetName() { + continue + } + filteredSnapshots = append(filteredSnapshots, obj) + } + + return filteredSnapshots +} + +//nolint:dupl // We don't feel like doing generics to undupe this. +func filterBackups(backups []iaas.Backup, filters map[string]string) []iaas.Backup { + filteredBackups := make([]iaas.Backup, 0) + + if filters == nil { + return backups + } + + for _, obj := range backups { + if val, ok := filters["Status"]; ok && val != obj.GetStatus() { + continue + } + if val, ok := filters["VolumeID"]; ok && val != obj.GetVolumeId() { + continue + } + if val, ok := filters["Name"]; ok && val != obj.GetName() { + continue + } + filteredBackups = append(filteredBackups, obj) + } + + return filteredBackups +} + +func IsNotFound(err error) bool { + return errors.Is(err, ErrorNotFound) +} diff --git a/pkg/stackit/filter_test.go b/pkg/stackit/client/utils_test.go similarity index 99% rename from pkg/stackit/filter_test.go rename to pkg/stackit/client/utils_test.go index 13bd5b47..ad1725fc 100644 --- a/pkg/stackit/filter_test.go +++ b/pkg/stackit/client/utils_test.go @@ -1,4 +1,4 @@ -package stackit +package client import ( . "github.com/onsi/ginkgo/v2" diff --git a/pkg/stackit/filter.go b/pkg/stackit/filter.go deleted file mode 100644 index e91e5853..00000000 --- a/pkg/stackit/filter.go +++ /dev/null @@ -1,73 +0,0 @@ -package stackit - -import ( - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" -) - -// TODO: Remove this once the IaaS API supports filtering by name, status, and volume ID. - -//nolint:dupl // We don't feel like doing generics to undupe this. -func filterBackups(backups []iaas.Backup, filters map[string]string) []iaas.Backup { - filteredBackups := make([]iaas.Backup, 0) - - if filters == nil { - return backups - } - - for _, obj := range backups { - if val, ok := filters["Status"]; ok && val != obj.GetStatus() { - continue - } - if val, ok := filters["VolumeID"]; ok && val != obj.GetVolumeId() { - continue - } - if val, ok := filters["Name"]; ok && val != obj.GetName() { - continue - } - filteredBackups = append(filteredBackups, obj) - } - - return filteredBackups -} - -func filterVolumes(volumes []iaas.Volume, filters map[string]string) []iaas.Volume { - filteredVolumes := make([]iaas.Volume, 0) - - if filters == nil { - return volumes - } - - for i := range volumes { - volume := &volumes[i] - if val, ok := filters["Name"]; ok && val != volume.GetName() { - continue - } - filteredVolumes = append(filteredVolumes, *volume) - } - - return filteredVolumes -} - -//nolint:dupl // We don't feel like doing generics to undupe this. -func filterSnapshots(snapshots []iaas.Snapshot, filters map[string]string) []iaas.Snapshot { - filteredSnapshots := make([]iaas.Snapshot, 0) - - if filters == nil { - return snapshots - } - - for _, obj := range snapshots { - if val, ok := filters["Status"]; ok && val != obj.GetStatus() { - continue - } - if val, ok := filters["VolumeID"]; ok && val != obj.GetVolumeId() { - continue - } - if val, ok := filters["Name"]; ok && val != obj.GetName() { - continue - } - filteredSnapshots = append(filteredSnapshots, obj) - } - - return filteredSnapshots -} diff --git a/pkg/stackit/iaas_mock.go b/pkg/stackit/iaas_mock.go deleted file mode 100644 index 397d3cf3..00000000 --- a/pkg/stackit/iaas_mock.go +++ /dev/null @@ -1,411 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: ./pkg/stackit (interfaces: IaasClient) -// -// Generated by this command: -// -// mockgen -destination ./pkg/stackit/iaas_mock.go -package stackit ./pkg/stackit IaasClient -// - -// Package stackit is a generated GoMock package. -package stackit - -import ( - context "context" - reflect "reflect" - - config "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" - v2api "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - gomock "go.uber.org/mock/gomock" - wait "k8s.io/apimachinery/pkg/util/wait" -) - -// MockIaasClient is a mock of IaasClient interface. -type MockIaasClient struct { - ctrl *gomock.Controller - recorder *MockIaasClientMockRecorder - isgomock struct{} -} - -// MockIaasClientMockRecorder is the mock recorder for MockIaasClient. -type MockIaasClientMockRecorder struct { - mock *MockIaasClient -} - -// NewMockIaasClient creates a new mock instance. -func NewMockIaasClient(ctrl *gomock.Controller) *MockIaasClient { - mock := &MockIaasClient{ctrl: ctrl} - mock.recorder = &MockIaasClientMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockIaasClient) EXPECT() *MockIaasClientMockRecorder { - return m.recorder -} - -// AttachVolume mocks base method. -func (m *MockIaasClient) AttachVolume(ctx context.Context, instanceID, volumeID string) (string, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AttachVolume", ctx, instanceID, volumeID) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// AttachVolume indicates an expected call of AttachVolume. -func (mr *MockIaasClientMockRecorder) AttachVolume(ctx, instanceID, volumeID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AttachVolume", reflect.TypeOf((*MockIaasClient)(nil).AttachVolume), ctx, instanceID, volumeID) -} - -// CreateBackup mocks base method. -func (m *MockIaasClient) CreateBackup(ctx context.Context, name, volID, snapshotID string, tags map[string]string) (*v2api.Backup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateBackup", ctx, name, volID, snapshotID, tags) - ret0, _ := ret[0].(*v2api.Backup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateBackup indicates an expected call of CreateBackup. -func (mr *MockIaasClientMockRecorder) CreateBackup(ctx, name, volID, snapshotID, tags any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateBackup", reflect.TypeOf((*MockIaasClient)(nil).CreateBackup), ctx, name, volID, snapshotID, tags) -} - -// CreateSnapshot mocks base method. -func (m *MockIaasClient) CreateSnapshot(ctx context.Context, name, volID string, tags map[string]string) (*v2api.Snapshot, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateSnapshot", ctx, name, volID, tags) - ret0, _ := ret[0].(*v2api.Snapshot) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateSnapshot indicates an expected call of CreateSnapshot. -func (mr *MockIaasClientMockRecorder) CreateSnapshot(ctx, name, volID, tags any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSnapshot", reflect.TypeOf((*MockIaasClient)(nil).CreateSnapshot), ctx, name, volID, tags) -} - -// CreateVolume mocks base method. -func (m *MockIaasClient) CreateVolume(arg0 context.Context, arg1 *v2api.CreateVolumePayload) (*v2api.Volume, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateVolume", arg0, arg1) - ret0, _ := ret[0].(*v2api.Volume) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateVolume indicates an expected call of CreateVolume. -func (mr *MockIaasClientMockRecorder) CreateVolume(arg0, arg1 any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateVolume", reflect.TypeOf((*MockIaasClient)(nil).CreateVolume), arg0, arg1) -} - -// DeleteBackup mocks base method. -func (m *MockIaasClient) DeleteBackup(ctx context.Context, backupID string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteBackup", ctx, backupID) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteBackup indicates an expected call of DeleteBackup. -func (mr *MockIaasClientMockRecorder) DeleteBackup(ctx, backupID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteBackup", reflect.TypeOf((*MockIaasClient)(nil).DeleteBackup), ctx, backupID) -} - -// DeleteSnapshot mocks base method. -func (m *MockIaasClient) DeleteSnapshot(ctx context.Context, snapID string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteSnapshot", ctx, snapID) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteSnapshot indicates an expected call of DeleteSnapshot. -func (mr *MockIaasClientMockRecorder) DeleteSnapshot(ctx, snapID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSnapshot", reflect.TypeOf((*MockIaasClient)(nil).DeleteSnapshot), ctx, snapID) -} - -// DeleteVolume mocks base method. -func (m *MockIaasClient) DeleteVolume(ctx context.Context, volumeID string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteVolume", ctx, volumeID) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteVolume indicates an expected call of DeleteVolume. -func (mr *MockIaasClientMockRecorder) DeleteVolume(ctx, volumeID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteVolume", reflect.TypeOf((*MockIaasClient)(nil).DeleteVolume), ctx, volumeID) -} - -// DetachVolume mocks base method. -func (m *MockIaasClient) DetachVolume(ctx context.Context, instanceID, volumeID string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DetachVolume", ctx, instanceID, volumeID) - ret0, _ := ret[0].(error) - return ret0 -} - -// DetachVolume indicates an expected call of DetachVolume. -func (mr *MockIaasClientMockRecorder) DetachVolume(ctx, instanceID, volumeID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DetachVolume", reflect.TypeOf((*MockIaasClient)(nil).DetachVolume), ctx, instanceID, volumeID) -} - -// ExpandVolume mocks base method. -func (m *MockIaasClient) ExpandVolume(ctx context.Context, volumeID, status string, size int64) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ExpandVolume", ctx, volumeID, status, size) - ret0, _ := ret[0].(error) - return ret0 -} - -// ExpandVolume indicates an expected call of ExpandVolume. -func (mr *MockIaasClientMockRecorder) ExpandVolume(ctx, volumeID, status, size any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExpandVolume", reflect.TypeOf((*MockIaasClient)(nil).ExpandVolume), ctx, volumeID, status, size) -} - -// GetBackupByID mocks base method. -func (m *MockIaasClient) GetBackupByID(ctx context.Context, backupID string) (*v2api.Backup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBackupByID", ctx, backupID) - ret0, _ := ret[0].(*v2api.Backup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetBackupByID indicates an expected call of GetBackupByID. -func (mr *MockIaasClientMockRecorder) GetBackupByID(ctx, backupID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBackupByID", reflect.TypeOf((*MockIaasClient)(nil).GetBackupByID), ctx, backupID) -} - -// GetBlockStorageOpts mocks base method. -func (m *MockIaasClient) GetBlockStorageOpts() config.BlockStorageOpts { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBlockStorageOpts") - ret0, _ := ret[0].(config.BlockStorageOpts) - return ret0 -} - -// GetBlockStorageOpts indicates an expected call of GetBlockStorageOpts. -func (mr *MockIaasClientMockRecorder) GetBlockStorageOpts() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBlockStorageOpts", reflect.TypeOf((*MockIaasClient)(nil).GetBlockStorageOpts)) -} - -// GetInstanceByID mocks base method. -func (m *MockIaasClient) GetInstanceByID(ctx context.Context, instanceID string) (*v2api.Server, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetInstanceByID", ctx, instanceID) - ret0, _ := ret[0].(*v2api.Server) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetInstanceByID indicates an expected call of GetInstanceByID. -func (mr *MockIaasClientMockRecorder) GetInstanceByID(ctx, instanceID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetInstanceByID", reflect.TypeOf((*MockIaasClient)(nil).GetInstanceByID), ctx, instanceID) -} - -// GetSnapshotByID mocks base method. -func (m *MockIaasClient) GetSnapshotByID(ctx context.Context, snapshotID string) (*v2api.Snapshot, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSnapshotByID", ctx, snapshotID) - ret0, _ := ret[0].(*v2api.Snapshot) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetSnapshotByID indicates an expected call of GetSnapshotByID. -func (mr *MockIaasClientMockRecorder) GetSnapshotByID(ctx, snapshotID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSnapshotByID", reflect.TypeOf((*MockIaasClient)(nil).GetSnapshotByID), ctx, snapshotID) -} - -// GetVolume mocks base method. -func (m *MockIaasClient) GetVolume(ctx context.Context, volumeID string) (*v2api.Volume, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVolume", ctx, volumeID) - ret0, _ := ret[0].(*v2api.Volume) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetVolume indicates an expected call of GetVolume. -func (mr *MockIaasClientMockRecorder) GetVolume(ctx, volumeID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolume", reflect.TypeOf((*MockIaasClient)(nil).GetVolume), ctx, volumeID) -} - -// GetVolumeByName mocks base method. -func (m *MockIaasClient) GetVolumeByName(ctx context.Context, name string) (*v2api.Volume, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVolumeByName", ctx, name) - ret0, _ := ret[0].(*v2api.Volume) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetVolumeByName indicates an expected call of GetVolumeByName. -func (mr *MockIaasClientMockRecorder) GetVolumeByName(ctx, name any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolumeByName", reflect.TypeOf((*MockIaasClient)(nil).GetVolumeByName), ctx, name) -} - -// GetVolumesByName mocks base method. -func (m *MockIaasClient) GetVolumesByName(ctx context.Context, name string) ([]v2api.Volume, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVolumesByName", ctx, name) - ret0, _ := ret[0].([]v2api.Volume) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetVolumesByName indicates an expected call of GetVolumesByName. -func (mr *MockIaasClientMockRecorder) GetVolumesByName(ctx, name any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolumesByName", reflect.TypeOf((*MockIaasClient)(nil).GetVolumesByName), ctx, name) -} - -// ListBackups mocks base method. -func (m *MockIaasClient) ListBackups(ctx context.Context, filters map[string]string) ([]v2api.Backup, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListBackups", ctx, filters) - ret0, _ := ret[0].([]v2api.Backup) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListBackups indicates an expected call of ListBackups. -func (mr *MockIaasClientMockRecorder) ListBackups(ctx, filters any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListBackups", reflect.TypeOf((*MockIaasClient)(nil).ListBackups), ctx, filters) -} - -// ListSnapshots mocks base method. -func (m *MockIaasClient) ListSnapshots(ctx context.Context, filters map[string]string) ([]v2api.Snapshot, string, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSnapshots", ctx, filters) - ret0, _ := ret[0].([]v2api.Snapshot) - ret1, _ := ret[1].(string) - ret2, _ := ret[2].(error) - return ret0, ret1, ret2 -} - -// ListSnapshots indicates an expected call of ListSnapshots. -func (mr *MockIaasClientMockRecorder) ListSnapshots(ctx, filters any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSnapshots", reflect.TypeOf((*MockIaasClient)(nil).ListSnapshots), ctx, filters) -} - -// ListVolumes mocks base method. -func (m *MockIaasClient) ListVolumes(ctx context.Context, limit int, startingToken string) ([]v2api.Volume, string, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListVolumes", ctx, limit, startingToken) - ret0, _ := ret[0].([]v2api.Volume) - ret1, _ := ret[1].(string) - ret2, _ := ret[2].(error) - return ret0, ret1, ret2 -} - -// ListVolumes indicates an expected call of ListVolumes. -func (mr *MockIaasClientMockRecorder) ListVolumes(ctx, limit, startingToken any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVolumes", reflect.TypeOf((*MockIaasClient)(nil).ListVolumes), ctx, limit, startingToken) -} - -// WaitBackupReady mocks base method. -func (m *MockIaasClient) WaitBackupReady(ctx context.Context, backupID string, snapshotSize int64, backupMaxDurationSecondsPerGB int) (*string, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "WaitBackupReady", ctx, backupID, snapshotSize, backupMaxDurationSecondsPerGB) - ret0, _ := ret[0].(*string) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// WaitBackupReady indicates an expected call of WaitBackupReady. -func (mr *MockIaasClientMockRecorder) WaitBackupReady(ctx, backupID, snapshotSize, backupMaxDurationSecondsPerGB any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitBackupReady", reflect.TypeOf((*MockIaasClient)(nil).WaitBackupReady), ctx, backupID, snapshotSize, backupMaxDurationSecondsPerGB) -} - -// WaitDiskAttached mocks base method. -func (m *MockIaasClient) WaitDiskAttached(ctx context.Context, instanceID, volumeID string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "WaitDiskAttached", ctx, instanceID, volumeID) - ret0, _ := ret[0].(error) - return ret0 -} - -// WaitDiskAttached indicates an expected call of WaitDiskAttached. -func (mr *MockIaasClientMockRecorder) WaitDiskAttached(ctx, instanceID, volumeID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitDiskAttached", reflect.TypeOf((*MockIaasClient)(nil).WaitDiskAttached), ctx, instanceID, volumeID) -} - -// WaitDiskDetached mocks base method. -func (m *MockIaasClient) WaitDiskDetached(ctx context.Context, instanceID, volumeID string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "WaitDiskDetached", ctx, instanceID, volumeID) - ret0, _ := ret[0].(error) - return ret0 -} - -// WaitDiskDetached indicates an expected call of WaitDiskDetached. -func (mr *MockIaasClientMockRecorder) WaitDiskDetached(ctx, instanceID, volumeID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitDiskDetached", reflect.TypeOf((*MockIaasClient)(nil).WaitDiskDetached), ctx, instanceID, volumeID) -} - -// WaitSnapshotReady mocks base method. -func (m *MockIaasClient) WaitSnapshotReady(ctx context.Context, snapshotID string) (*string, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "WaitSnapshotReady", ctx, snapshotID) - ret0, _ := ret[0].(*string) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// WaitSnapshotReady indicates an expected call of WaitSnapshotReady. -func (mr *MockIaasClientMockRecorder) WaitSnapshotReady(ctx, snapshotID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitSnapshotReady", reflect.TypeOf((*MockIaasClient)(nil).WaitSnapshotReady), ctx, snapshotID) -} - -// WaitVolumeTargetStatus mocks base method. -func (m *MockIaasClient) WaitVolumeTargetStatus(ctx context.Context, volumeID string, tStatus []string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "WaitVolumeTargetStatus", ctx, volumeID, tStatus) - ret0, _ := ret[0].(error) - return ret0 -} - -// WaitVolumeTargetStatus indicates an expected call of WaitVolumeTargetStatus. -func (mr *MockIaasClientMockRecorder) WaitVolumeTargetStatus(ctx, volumeID, tStatus any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitVolumeTargetStatus", reflect.TypeOf((*MockIaasClient)(nil).WaitVolumeTargetStatus), ctx, volumeID, tStatus) -} - -// WaitVolumeTargetStatusWithCustomBackoff mocks base method. -func (m *MockIaasClient) WaitVolumeTargetStatusWithCustomBackoff(ctx context.Context, volumeID string, targetStatus []string, backoff *wait.Backoff) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "WaitVolumeTargetStatusWithCustomBackoff", ctx, volumeID, targetStatus, backoff) - ret0, _ := ret[0].(error) - return ret0 -} - -// WaitVolumeTargetStatusWithCustomBackoff indicates an expected call of WaitVolumeTargetStatusWithCustomBackoff. -func (mr *MockIaasClientMockRecorder) WaitVolumeTargetStatusWithCustomBackoff(ctx, volumeID, targetStatus, backoff any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitVolumeTargetStatusWithCustomBackoff", reflect.TypeOf((*MockIaasClient)(nil).WaitVolumeTargetStatusWithCustomBackoff), ctx, volumeID, targetStatus, backoff) -} diff --git a/pkg/stackit/instances.go b/pkg/stackit/instances.go deleted file mode 100644 index 0c22b83b..00000000 --- a/pkg/stackit/instances.go +++ /dev/null @@ -1,25 +0,0 @@ -package stackit - -import ( - "context" - "net/http" - - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/stackiterrors" - "github.com/stackitcloud/stackit-sdk-go/core/runtime" - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - wait "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api/wait" -) - -func (os *iaasClient) GetInstanceByID(ctx context.Context, instanceID string) (*iaas.Server, error) { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - server, err := os.iaas.GetServer(ctxWithHTTPResp, os.projectID, os.region, instanceID).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(wait.XRequestIDHeader) - return nil, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, err - } - return server, nil -} diff --git a/pkg/stackit/loadbalancer.go b/pkg/stackit/loadbalancer.go deleted file mode 100644 index 6820c60a..00000000 --- a/pkg/stackit/loadbalancer.go +++ /dev/null @@ -1,76 +0,0 @@ -package stackit - -import ( - "context" - - "github.com/google/uuid" - loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" -) - -func (cl lbClient) GetLoadBalancer(ctx context.Context, projectID, name string) (*loadbalancer.LoadBalancer, error) { - lb, err := cl.client.GetLoadBalancer(ctx, projectID, cl.region, name).Execute() - if isOpenAPINotFound(err) { - return lb, ErrorNotFound - } - return lb, err -} - -// DeleteLoadBalancer returns no error if the load balancer doesn't exist. -func (cl lbClient) DeleteLoadBalancer(ctx context.Context, projectID, name string) error { - _, err := cl.client.DeleteLoadBalancer(ctx, projectID, cl.region, name).Execute() - return err -} - -// CreateLoadBalancer returns ErrorNotFound if the project is not enabled. -func (cl lbClient) CreateLoadBalancer(ctx context.Context, projectID string, create *loadbalancer.CreateLoadBalancerPayload) (*loadbalancer.LoadBalancer, error) { - lb, err := cl.client.CreateLoadBalancer(ctx, projectID, cl.region). - CreateLoadBalancerPayload(*create). - XRequestID(uuid.NewString()). - Execute() - if isOpenAPINotFound(err) { - return lb, ErrorNotFound - } - return lb, err -} - -func (cl lbClient) UpdateLoadBalancer(ctx context.Context, projectID, name string, update *loadbalancer.UpdateLoadBalancerPayload) ( - *loadbalancer.LoadBalancer, error, -) { - return cl.client.UpdateLoadBalancer(ctx, projectID, cl.region, name). - UpdateLoadBalancerPayload(*update). - Execute() -} - -func (cl lbClient) UpdateTargetPool(ctx context.Context, projectID, name, targetPoolName string, payload loadbalancer.UpdateTargetPoolPayload) error { - _, err := cl.client.UpdateTargetPool(ctx, projectID, cl.region, name, targetPoolName). - UpdateTargetPoolPayload(payload). - Execute() - return err -} - -func (cl lbClient) ListCredentials(ctx context.Context, projectID string) (*loadbalancer.ListCredentialsResponse, error) { - return cl.client.ListCredentials(ctx, projectID, cl.region).Execute() -} - -func (cl lbClient) GetCredentials(ctx context.Context, projectID, credentialsRef string) (*loadbalancer.GetCredentialsResponse, error) { - return cl.client.GetCredentials(ctx, projectID, cl.region, credentialsRef).Execute() -} - -func (cl lbClient) CreateCredentials(ctx context.Context, projectID string, payload loadbalancer.CreateCredentialsPayload) (*loadbalancer.CreateCredentialsResponse, error) { //nolint:lll // looks weird when shortened - return cl.client.CreateCredentials(ctx, projectID, cl.region). - CreateCredentialsPayload(payload). - XRequestID(uuid.NewString()). - Execute() -} - -func (cl lbClient) UpdateCredentials(ctx context.Context, projectID, credentialsRef string, payload loadbalancer.UpdateCredentialsPayload) error { - _, err := cl.client.UpdateCredentials(ctx, projectID, cl.region, credentialsRef). - UpdateCredentialsPayload(payload). - Execute() - return err -} - -func (cl lbClient) DeleteCredentials(ctx context.Context, projectID, credentialsRef string) error { - _, err := cl.client.DeleteCredentials(ctx, projectID, cl.region, credentialsRef).Execute() - return err -} diff --git a/pkg/stackit/loadbalancer_mock.go b/pkg/stackit/loadbalancer_mock.go deleted file mode 100644 index 18dbf72a..00000000 --- a/pkg/stackit/loadbalancer_mock.go +++ /dev/null @@ -1,188 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: ./pkg/stackit (interfaces: LoadbalancerClient) -// -// Generated by this command: -// -// mockgen -destination ./pkg/stackit/loadbalancer_mock.go -package stackit ./pkg/stackit LoadbalancerClient -// - -// Package stackit is a generated GoMock package. -package stackit - -import ( - context "context" - reflect "reflect" - - v2api "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" - gomock "go.uber.org/mock/gomock" -) - -// MockLoadbalancerClient is a mock of LoadbalancerClient interface. -type MockLoadbalancerClient struct { - ctrl *gomock.Controller - recorder *MockLoadbalancerClientMockRecorder - isgomock struct{} -} - -// MockLoadbalancerClientMockRecorder is the mock recorder for MockLoadbalancerClient. -type MockLoadbalancerClientMockRecorder struct { - mock *MockLoadbalancerClient -} - -// NewMockLoadbalancerClient creates a new mock instance. -func NewMockLoadbalancerClient(ctrl *gomock.Controller) *MockLoadbalancerClient { - mock := &MockLoadbalancerClient{ctrl: ctrl} - mock.recorder = &MockLoadbalancerClientMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockLoadbalancerClient) EXPECT() *MockLoadbalancerClientMockRecorder { - return m.recorder -} - -// CreateCredentials mocks base method. -func (m *MockLoadbalancerClient) CreateCredentials(ctx context.Context, projectID string, payload v2api.CreateCredentialsPayload) (*v2api.CreateCredentialsResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateCredentials", ctx, projectID, payload) - ret0, _ := ret[0].(*v2api.CreateCredentialsResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateCredentials indicates an expected call of CreateCredentials. -func (mr *MockLoadbalancerClientMockRecorder) CreateCredentials(ctx, projectID, payload any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateCredentials", reflect.TypeOf((*MockLoadbalancerClient)(nil).CreateCredentials), ctx, projectID, payload) -} - -// CreateLoadBalancer mocks base method. -func (m *MockLoadbalancerClient) CreateLoadBalancer(ctx context.Context, projectID string, loadbalancer *v2api.CreateLoadBalancerPayload) (*v2api.LoadBalancer, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateLoadBalancer", ctx, projectID, loadbalancer) - ret0, _ := ret[0].(*v2api.LoadBalancer) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateLoadBalancer indicates an expected call of CreateLoadBalancer. -func (mr *MockLoadbalancerClientMockRecorder) CreateLoadBalancer(ctx, projectID, loadbalancer any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateLoadBalancer", reflect.TypeOf((*MockLoadbalancerClient)(nil).CreateLoadBalancer), ctx, projectID, loadbalancer) -} - -// DeleteCredentials mocks base method. -func (m *MockLoadbalancerClient) DeleteCredentials(ctx context.Context, projectID, credentialRef string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteCredentials", ctx, projectID, credentialRef) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteCredentials indicates an expected call of DeleteCredentials. -func (mr *MockLoadbalancerClientMockRecorder) DeleteCredentials(ctx, projectID, credentialRef any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCredentials", reflect.TypeOf((*MockLoadbalancerClient)(nil).DeleteCredentials), ctx, projectID, credentialRef) -} - -// DeleteLoadBalancer mocks base method. -func (m *MockLoadbalancerClient) DeleteLoadBalancer(ctx context.Context, projectID, name string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteLoadBalancer", ctx, projectID, name) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteLoadBalancer indicates an expected call of DeleteLoadBalancer. -func (mr *MockLoadbalancerClientMockRecorder) DeleteLoadBalancer(ctx, projectID, name any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteLoadBalancer", reflect.TypeOf((*MockLoadbalancerClient)(nil).DeleteLoadBalancer), ctx, projectID, name) -} - -// GetCredentials mocks base method. -func (m *MockLoadbalancerClient) GetCredentials(ctx context.Context, projectID, credentialRef string) (*v2api.GetCredentialsResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetCredentials", ctx, projectID, credentialRef) - ret0, _ := ret[0].(*v2api.GetCredentialsResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetCredentials indicates an expected call of GetCredentials. -func (mr *MockLoadbalancerClientMockRecorder) GetCredentials(ctx, projectID, credentialRef any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCredentials", reflect.TypeOf((*MockLoadbalancerClient)(nil).GetCredentials), ctx, projectID, credentialRef) -} - -// GetLoadBalancer mocks base method. -func (m *MockLoadbalancerClient) GetLoadBalancer(ctx context.Context, projectID, name string) (*v2api.LoadBalancer, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetLoadBalancer", ctx, projectID, name) - ret0, _ := ret[0].(*v2api.LoadBalancer) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetLoadBalancer indicates an expected call of GetLoadBalancer. -func (mr *MockLoadbalancerClientMockRecorder) GetLoadBalancer(ctx, projectID, name any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLoadBalancer", reflect.TypeOf((*MockLoadbalancerClient)(nil).GetLoadBalancer), ctx, projectID, name) -} - -// ListCredentials mocks base method. -func (m *MockLoadbalancerClient) ListCredentials(ctx context.Context, projectID string) (*v2api.ListCredentialsResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListCredentials", ctx, projectID) - ret0, _ := ret[0].(*v2api.ListCredentialsResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListCredentials indicates an expected call of ListCredentials. -func (mr *MockLoadbalancerClientMockRecorder) ListCredentials(ctx, projectID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCredentials", reflect.TypeOf((*MockLoadbalancerClient)(nil).ListCredentials), ctx, projectID) -} - -// UpdateCredentials mocks base method. -func (m *MockLoadbalancerClient) UpdateCredentials(ctx context.Context, projectID, credentialRef string, payload v2api.UpdateCredentialsPayload) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateCredentials", ctx, projectID, credentialRef, payload) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateCredentials indicates an expected call of UpdateCredentials. -func (mr *MockLoadbalancerClientMockRecorder) UpdateCredentials(ctx, projectID, credentialRef, payload any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCredentials", reflect.TypeOf((*MockLoadbalancerClient)(nil).UpdateCredentials), ctx, projectID, credentialRef, payload) -} - -// UpdateLoadBalancer mocks base method. -func (m *MockLoadbalancerClient) UpdateLoadBalancer(ctx context.Context, projectID, name string, update *v2api.UpdateLoadBalancerPayload) (*v2api.LoadBalancer, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateLoadBalancer", ctx, projectID, name, update) - ret0, _ := ret[0].(*v2api.LoadBalancer) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateLoadBalancer indicates an expected call of UpdateLoadBalancer. -func (mr *MockLoadbalancerClientMockRecorder) UpdateLoadBalancer(ctx, projectID, name, update any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateLoadBalancer", reflect.TypeOf((*MockLoadbalancerClient)(nil).UpdateLoadBalancer), ctx, projectID, name, update) -} - -// UpdateTargetPool mocks base method. -func (m *MockLoadbalancerClient) UpdateTargetPool(ctx context.Context, projectID, name, targetPoolName string, payload v2api.UpdateTargetPoolPayload) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateTargetPool", ctx, projectID, name, targetPoolName, payload) - ret0, _ := ret[0].(error) - return ret0 -} - -// UpdateTargetPool indicates an expected call of UpdateTargetPool. -func (mr *MockLoadbalancerClientMockRecorder) UpdateTargetPool(ctx, projectID, name, targetPoolName, payload any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTargetPool", reflect.TypeOf((*MockLoadbalancerClient)(nil).UpdateTargetPool), ctx, projectID, name, targetPoolName, payload) -} diff --git a/pkg/stackit/loadbalancer_test.go b/pkg/stackit/loadbalancer_test.go deleted file mode 100644 index 96a83f91..00000000 --- a/pkg/stackit/loadbalancer_test.go +++ /dev/null @@ -1,69 +0,0 @@ -package stackit - -import ( - "context" - "net/http" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - "github.com/stackitcloud/stackit-sdk-go/core/oapierror" - loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api" - "go.uber.org/mock/gomock" - "k8s.io/utils/ptr" - - mock "github.com/stackitcloud/cloud-provider-stackit/pkg/mock/loadbalancer" -) - -var _ = Describe("LBAPI Client", func() { - var ( - region = "eu01" - - mockCtrl *gomock.Controller - mockAPI *mock.MockDefaultAPI - lbClient LoadbalancerClient - ) - - BeforeEach(func() { - mockCtrl = gomock.NewController(GinkgoT()) - mockAPI = mock.NewMockDefaultAPI(mockCtrl) - - var err error - lbClient, err = NewLoadbalancerClient(mockAPI, region) - Expect(err).ToNot(HaveOccurred()) - }) - - Describe("GetLoadBalancer", func() { - It("should return the received load balancer instance", func() { - expectedName := "test LB instance" - expectedLB := &loadbalancer.LoadBalancer{Name: new(expectedName)} - mockAPI.EXPECT().GetLoadBalancer(gomock.Any(), "projectID", gomock.Any(), expectedName). - Return(loadbalancer.ApiGetLoadBalancerRequest{ApiService: mockAPI}).Times(1) - mockAPI.EXPECT().GetLoadBalancerExecute(gomock.Any()).Return(expectedLB, nil).Times(1) - - actualLB, err := lbClient.GetLoadBalancer(context.Background(), "projectID", expectedName) - Expect(err).ToNot(HaveOccurred()) - Expect(actualLB).To(Equal(expectedLB)) - actualName := ptr.Deref(actualLB.Name, "") - Expect(actualName).To(Equal(expectedName)) - }) - - It("should use the configured STACKIT region", func() { - mockAPI.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any(), region, gomock.Any()). - Return(loadbalancer.ApiGetLoadBalancerRequest{ApiService: mockAPI}).Times(1) - mockAPI.EXPECT().GetLoadBalancerExecute(gomock.Any()).Return(&loadbalancer.LoadBalancer{}, nil).Times(1) - - _, err := lbClient.GetLoadBalancer(context.Background(), "projectID", "name") - Expect(err).ToNot(HaveOccurred()) - }) - - It("should return ErrorNotFound if a GenericOpenAPIError with status 404 occurs", func() { - mockAPI.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). - Return(loadbalancer.ApiGetLoadBalancerRequest{ApiService: mockAPI}).Times(1) - mockAPI.EXPECT().GetLoadBalancerExecute(gomock.Any()).Return(nil, &oapierror.GenericOpenAPIError{StatusCode: http.StatusNotFound}).Times(1) - - actualLB, err := lbClient.GetLoadBalancer(context.Background(), "projectID", "name") - Expect(actualLB).To(BeNil()) - Expect(err).To(MatchError(ErrorNotFound)) - }) - }) -}) diff --git a/pkg/stackit/server.go b/pkg/stackit/server.go deleted file mode 100644 index 69444f33..00000000 --- a/pkg/stackit/server.go +++ /dev/null @@ -1,39 +0,0 @@ -package stackit - -import ( - "context" - - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" -) - -func (cl nodeClient) GetServer(ctx context.Context, projectID, region, serverID string) (*iaas.Server, error) { - server, err := cl.client.DefaultAPI.GetServer(ctx, projectID, region, serverID).Details(true).Execute() - if isOpenAPINotFound(err) { - return server, ErrorNotFound - } - return server, err -} - -func (cl nodeClient) DeleteServer(ctx context.Context, projectID, region, serverID string) error { - return cl.client.DefaultAPI.DeleteServer(ctx, projectID, region, serverID).Execute() -} - -func (cl nodeClient) CreateServer(ctx context.Context, projectID, region string, create *iaas.CreateServerPayload) (*iaas.Server, error) { - server, err := cl.client.DefaultAPI.CreateServer(ctx, projectID, region).CreateServerPayload(*create).Execute() - if isOpenAPINotFound(err) { - return server, ErrorNotFound - } - return server, err -} - -func (cl nodeClient) UpdateServer(ctx context.Context, projectID, region, serverID string, update *iaas.UpdateServerPayload) (*iaas.Server, error) { - return cl.client.DefaultAPI.UpdateServer(ctx, projectID, region, serverID).UpdateServerPayload(*update).Execute() -} - -func (cl nodeClient) ListServers(ctx context.Context, projectID, region string) (*[]iaas.Server, error) { - resp, err := cl.client.DefaultAPI.ListServers(ctx, projectID, region).Details(true).Execute() - if err != nil { - return nil, err - } - return &resp.Items, nil -} diff --git a/pkg/stackit/server_mock.go b/pkg/stackit/server_mock.go deleted file mode 100644 index 0de0902c..00000000 --- a/pkg/stackit/server_mock.go +++ /dev/null @@ -1,116 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: ./pkg/stackit (interfaces: NodeClient) -// -// Generated by this command: -// -// mockgen -destination ./pkg/stackit/server_mock.go -package stackit ./pkg/stackit NodeClient -// - -// Package stackit is a generated GoMock package. -package stackit - -import ( - context "context" - reflect "reflect" - - v2api "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - gomock "go.uber.org/mock/gomock" -) - -// MockNodeClient is a mock of NodeClient interface. -type MockNodeClient struct { - ctrl *gomock.Controller - recorder *MockNodeClientMockRecorder - isgomock struct{} -} - -// MockNodeClientMockRecorder is the mock recorder for MockNodeClient. -type MockNodeClientMockRecorder struct { - mock *MockNodeClient -} - -// NewMockNodeClient creates a new mock instance. -func NewMockNodeClient(ctrl *gomock.Controller) *MockNodeClient { - mock := &MockNodeClient{ctrl: ctrl} - mock.recorder = &MockNodeClientMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockNodeClient) EXPECT() *MockNodeClientMockRecorder { - return m.recorder -} - -// CreateServer mocks base method. -func (m *MockNodeClient) CreateServer(ctx context.Context, projectID, region string, create *v2api.CreateServerPayload) (*v2api.Server, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateServer", ctx, projectID, region, create) - ret0, _ := ret[0].(*v2api.Server) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreateServer indicates an expected call of CreateServer. -func (mr *MockNodeClientMockRecorder) CreateServer(ctx, projectID, region, create any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateServer", reflect.TypeOf((*MockNodeClient)(nil).CreateServer), ctx, projectID, region, create) -} - -// DeleteServer mocks base method. -func (m *MockNodeClient) DeleteServer(ctx context.Context, projectID, region, serverID string) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteServer", ctx, projectID, region, serverID) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteServer indicates an expected call of DeleteServer. -func (mr *MockNodeClientMockRecorder) DeleteServer(ctx, projectID, region, serverID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteServer", reflect.TypeOf((*MockNodeClient)(nil).DeleteServer), ctx, projectID, region, serverID) -} - -// GetServer mocks base method. -func (m *MockNodeClient) GetServer(ctx context.Context, projectID, region, serverID string) (*v2api.Server, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetServer", ctx, projectID, region, serverID) - ret0, _ := ret[0].(*v2api.Server) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetServer indicates an expected call of GetServer. -func (mr *MockNodeClientMockRecorder) GetServer(ctx, projectID, region, serverID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServer", reflect.TypeOf((*MockNodeClient)(nil).GetServer), ctx, projectID, region, serverID) -} - -// ListServers mocks base method. -func (m *MockNodeClient) ListServers(ctx context.Context, projectID, region string) (*[]v2api.Server, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListServers", ctx, projectID, region) - ret0, _ := ret[0].(*[]v2api.Server) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// ListServers indicates an expected call of ListServers. -func (mr *MockNodeClientMockRecorder) ListServers(ctx, projectID, region any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServers", reflect.TypeOf((*MockNodeClient)(nil).ListServers), ctx, projectID, region) -} - -// UpdateServer mocks base method. -func (m *MockNodeClient) UpdateServer(ctx context.Context, projectID, region, serverID string, update *v2api.UpdateServerPayload) (*v2api.Server, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateServer", ctx, projectID, region, serverID, update) - ret0, _ := ret[0].(*v2api.Server) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateServer indicates an expected call of UpdateServer. -func (mr *MockNodeClientMockRecorder) UpdateServer(ctx, projectID, region, serverID, update any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateServer", reflect.TypeOf((*MockNodeClient)(nil).UpdateServer), ctx, projectID, region, serverID, update) -} diff --git a/pkg/stackit/snapshots.go b/pkg/stackit/snapshots.go deleted file mode 100644 index 3dd8b5dd..00000000 --- a/pkg/stackit/snapshots.go +++ /dev/null @@ -1,133 +0,0 @@ -package stackit - -import ( - "context" - "fmt" - "net/http" - "time" - - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/stackiterrors" - "github.com/stackitcloud/stackit-sdk-go/core/runtime" - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - sdkWait "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api/wait" - "k8s.io/apimachinery/pkg/util/wait" -) - -const ( - SnapshotReadyStatus = "AVAILABLE" - snapReadyDuration = 1 * time.Second - snapReadyFactor = 1.2 - snapReadySteps = 10 - - SnapshotType = "type" - SnapshotAvailabilityZone = "availability" -) - -func (os *iaasClient) CreateSnapshot(ctx context.Context, name, volID string, tags map[string]string) (*iaas.Snapshot, error) { - opts := iaas.CreateSnapshotPayload{ - VolumeId: volID, - Name: new(name), - } - if tags != nil { - opts.Labels = labelsFromTags(tags) - } - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - snapshot, err := os.iaas.CreateSnapshot(ctxWithHTTPResp, os.projectID, os.region).CreateSnapshotPayload(opts).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return nil, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, err - } - - return snapshot, nil -} - -func (os *iaasClient) ListSnapshots(ctx context.Context, filters map[string]string) ([]iaas.Snapshot, string, error) { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - // TODO: Add API filter once available. - snaps, err := os.iaas.ListSnapshotsInProject(ctxWithHTTPResp, os.projectID, os.region).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return nil, "", stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, "", err - } - - filteredSnaps := filterSnapshots(snaps.Items, filters) - return filteredSnaps, "", nil -} - -func (os *iaasClient) DeleteSnapshot(ctx context.Context, snapID string) error { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - err := os.iaas.DeleteSnapshot(ctxWithHTTPResp, os.projectID, os.region, snapID).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return err - } - return nil -} - -func (os *iaasClient) GetSnapshotByID(ctx context.Context, snapshotID string) (*iaas.Snapshot, error) { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - snap, err := os.iaas.GetSnapshot(ctxWithHTTPResp, os.projectID, os.region, snapshotID).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return nil, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, err - } - return snap, nil -} - -func (os *iaasClient) WaitSnapshotReady(ctx context.Context, snapshotID string) (*string, error) { - backoff := wait.Backoff{ - Duration: snapReadyDuration, - Factor: snapReadyFactor, - Steps: snapReadySteps, - } - - err := wait.ExponentialBackoff(backoff, func() (bool, error) { - ready, err := os.snapshotIsReady(ctx, snapshotID) - if err != nil { - return false, err - } - return ready, nil - }) - - if wait.Interrupted(err) { - err = fmt.Errorf("timeout, Snapshot %s is still not Ready %v", snapshotID, err) - } - - snap, _ := os.GetSnapshotByID(ctx, snapshotID) - - if snap != nil { - return snap.Status, err - } - return new("Failed to get snapshot status"), err -} - -func (os *iaasClient) snapshotIsReady(ctx context.Context, snapshotID string) (bool, error) { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - snap, err := os.iaas.GetSnapshot(ctxWithHTTPResp, os.projectID, os.region, snapshotID).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return false, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return false, err - } - - return *snap.Status == SnapshotReadyStatus, nil -} diff --git a/pkg/stackit/snapshots_test.go b/pkg/stackit/snapshots_test.go deleted file mode 100644 index 017201d5..00000000 --- a/pkg/stackit/snapshots_test.go +++ /dev/null @@ -1,124 +0,0 @@ -package stackit - -import ( - "context" - "os" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config" - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - "go.uber.org/mock/gomock" - - mock "github.com/stackitcloud/cloud-provider-stackit/pkg/mock/iaas" -) - -var _ = Describe("Snapshot", func() { - var ( - err error - mockCtrl *gomock.Controller - mockAPI *mock.MockDefaultAPI - stackitClient IaasClient - config *stackitconfig.CSIConfig - ) - const projectID = "project-id" - const region = "eu01" - - BeforeEach(func() { - t := GinkgoT() - mockCtrl = gomock.NewController(t) - mockAPI = mock.NewMockDefaultAPI(mockCtrl) - t.Setenv("STACKIT_REGION", region) - Expect(os.Getenv("STACKIT_REGION")).To(Equal(region)) - }) - - Context("ListSnapshot", func() { - - snapShotListResponse := iaas.SnapshotListResponse{ - Items: []iaas.Snapshot{ - { - Id: new("fake-snapshot"), - Name: new("fake-snapshot"), - VolumeId: "some-special-volume", - Status: new("ERROR"), - }, - { - Id: new("fake-snapshot2"), - Name: new("fake-snapshot2"), - VolumeId: "some-special-volume", - Status: new("AVAILABLE"), - }, - { - Id: new("wrong snapshot"), - Name: new("wrong snapshot"), - VolumeId: "another-special-volume", - Status: new("AVAILABLE"), - }, - }, - } - - BeforeEach(func() { - config = &stackitconfig.CSIConfig{ - Global: stackitconfig.GlobalOpts{ - ProjectID: projectID, - }, - } - stackitClient, err = CreateSTACKITProvider(mockAPI, config) - Expect(err).ToNot(HaveOccurred()) - }) - - DescribeTable("should return a filtered list of snapshots", - func(filters map[string]string, expectedSnaps []iaas.Snapshot) { - mockAPI.EXPECT().ListSnapshotsInProject(gomock.Any(), config.Global.ProjectID, region).Return(iaas.ApiListSnapshotsInProjectRequest{ApiService: mockAPI}) - mockAPI.EXPECT().ListSnapshotsInProjectExecute(gomock.Any()).Return(&snapShotListResponse, nil) - - snaps, _, err := stackitClient.ListSnapshots(context.Background(), filters) - Expect(err).ToNot(HaveOccurred()) - Expect(snaps).To(Equal(expectedSnaps)) - }, - Entry("filter by VolumeID", - map[string]string{"VolumeID": "some-special-volume"}, - []iaas.Snapshot{ - { - Id: new("fake-snapshot"), - Name: new("fake-snapshot"), - VolumeId: "some-special-volume", - Status: new("ERROR"), - }, - { - Id: new("fake-snapshot2"), - Name: new("fake-snapshot2"), - VolumeId: "some-special-volume", - Status: new("AVAILABLE"), - }, - }, - ), - Entry("filter by name", - map[string]string{"Name": "fake-snapshot"}, - []iaas.Snapshot{ - { - Id: new("fake-snapshot"), - Name: new("fake-snapshot"), - VolumeId: "some-special-volume", - Status: new("ERROR"), - }, - }, - ), - Entry("filter by status and name", - map[string]string{"Name": "fake-snapshot2", "Status": "AVAILABLE"}, - []iaas.Snapshot{ - { - Id: new("fake-snapshot2"), - Name: new("fake-snapshot2"), - VolumeId: "some-special-volume", - Status: new("AVAILABLE"), - }, - }, - ), - Entry("no filters", - map[string]string{}, - snapShotListResponse.Items, - ), - ) - }) -}) diff --git a/pkg/stackit/types.go b/pkg/stackit/types.go deleted file mode 100644 index 1dc9c44b..00000000 --- a/pkg/stackit/types.go +++ /dev/null @@ -1,9 +0,0 @@ -package stackit - -type VolumeSourceTypes string - -const ( - VolumeSource VolumeSourceTypes = "volume" - SnapshotSource VolumeSourceTypes = "snapshot" - BackupSource VolumeSourceTypes = "backup" -) diff --git a/pkg/stackit/volumes.go b/pkg/stackit/volumes.go deleted file mode 100644 index 5813e54a..00000000 --- a/pkg/stackit/volumes.go +++ /dev/null @@ -1,344 +0,0 @@ -package stackit - -import ( - "context" - "fmt" - "net/http" - "slices" - "time" - - "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/stackiterrors" - "github.com/stackitcloud/stackit-sdk-go/core/runtime" - iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api" - sdkWait "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api/wait" - "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/klog/v2" - "k8s.io/utils/ptr" -) - -const ( - VolumeAvailableStatus = "AVAILABLE" - VolumeAttachedStatus = "ATTACHED" - operationFinishInitDelay = 1 * time.Second - operationFinishFactor = 1.1 - operationFinishSteps = 10 - diskAttachInitDelay = 1 * time.Second - diskAttachFactor = 1.2 - diskAttachSteps = 15 - diskDetachInitDelay = 1 * time.Second - diskDetachFactor = 1.2 - diskDetachSteps = 13 - VolumeDescription = "Created by STACKIT CSI driver" -) - -var volumeErrorStates = [...]string{"ERROR", "ERROR_RESIZING", "ERROR_DELETING"} - -func (os *iaasClient) CreateVolume(ctx context.Context, payload *iaas.CreateVolumePayload) (*iaas.Volume, error) { - payload.Description = new(VolumeDescription) - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - req, err := os.iaas.CreateVolume(ctxWithHTTPResp, os.projectID, os.region).CreateVolumePayload(*payload).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return nil, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, err - } - - return req, nil -} - -func (os *iaasClient) DeleteVolume(ctx context.Context, volumeID string) error { - used, err := os.diskIsUsed(ctx, volumeID) - if err != nil { - return err - } - if used { - return fmt.Errorf("cannot delete the volume %q, it's still attached to a node", volumeID) - } - - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - err = os.iaas.DeleteVolume(ctxWithHTTPResp, os.projectID, os.region, volumeID).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return err - } - - return err -} - -func (os *iaasClient) AttachVolume(ctx context.Context, instanceID, volumeID string) (string, error) { - volume, err := os.GetVolume(ctx, volumeID) - if err != nil { - return "", err - } - - if volume.ServerId != nil && instanceID == *volume.ServerId { - klog.V(4).Infof("Disk %s is already attached to instance %s", volumeID, instanceID) - return *volume.Id, nil - } - payload := iaas.AddVolumeToServerPayload{ - DeleteOnTermination: new(false), - } - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - _, err = os.iaas.AddVolumeToServer(ctxWithHTTPResp, os.projectID, os.region, instanceID, volumeID).AddVolumeToServerPayload(payload).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return "", stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return "", err - } - return *volume.Id, err -} - -// WaitVolumeTargetStatusWithCustomBackoff waits for volume to be in target state with custom backoff -func (os *iaasClient) WaitVolumeTargetStatusWithCustomBackoff(ctx context.Context, volumeID string, tStatus []string, backoff *wait.Backoff) error { - waitErr := wait.ExponentialBackoff(*backoff, func() (bool, error) { - vol, err := os.GetVolume(ctx, volumeID) - if err != nil { - return false, err - } - if slices.Contains(tStatus, *vol.Status) { - return true, nil - } - for _, eState := range volumeErrorStates { - if *vol.Status == eState { - return false, fmt.Errorf("volume is in error state: %s", *vol.Status) - } - } - return false, nil - }) - - if wait.Interrupted(waitErr) { - waitErr = fmt.Errorf("timeout on waiting for volume %s status to be in %v", volumeID, tStatus) - } - - return waitErr -} - -func (os *iaasClient) ListVolumes(ctx context.Context, _ int, _ string) ([]iaas.Volume, string, error) { - // TODO: Add support for pagination when IaaS adds it - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - volumes, err := os.iaas.ListVolumes(ctxWithHTTPResp, os.projectID, os.region).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return nil, "", stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, "", err - } - - return volumes.Items, "", err -} - -func (os *iaasClient) WaitDiskAttached(ctx context.Context, instanceID, volumeID string) error { - backoff := wait.Backoff{ - Duration: diskAttachInitDelay, - Factor: diskAttachFactor, - Steps: diskAttachSteps, - } - - err := wait.ExponentialBackoff(backoff, func() (bool, error) { - attached, err := os.diskIsAttached(ctx, instanceID, volumeID) - if err != nil && !stackiterrors.IsNotFound(err) { - // if this is a race condition indicate the volume is deleted - // during sleep phase, ignore the error and return attach=false - return false, err - } - return attached, nil - }) - - if wait.Interrupted(err) { - err = fmt.Errorf("volume %q failed to be attached within the allowed time", volumeID) - } - - return err -} - -func (os *iaasClient) DetachVolume(ctx context.Context, instanceID, volumeID string) error { - volume, err := os.GetVolume(ctx, volumeID) - if err != nil { - return err - } - if *volume.Status == VolumeAvailableStatus { - klog.V(2).Infof("Volume: %s has been detached from compute: %s ", *volume.Id, instanceID) - return nil - } - - if *volume.Status != VolumeAttachedStatus { - return fmt.Errorf("can not detach volume %s, its status is %s", *volume.Name, *volume.Status) - } - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - if volume.ServerId != nil && *volume.ServerId == instanceID { - err = os.iaas.RemoveVolumeFromServer(ctxWithHTTPResp, os.projectID, os.region, instanceID, volumeID).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return stackiterrors.WrapErrorWithResponseID(fmt.Errorf("failed to detach volume %s from compute %s : %v", *volume.Id, instanceID, err), reqID) - } - return err - } - klog.V(2).Infof("Successfully detached volume: %s from compute: %s", *volume.Id, instanceID) - return nil - } - - // Disk has no attachments or not attached to provided compute - return nil -} - -func (os *iaasClient) WaitDiskDetached(ctx context.Context, instanceID, volumeID string) error { - backoff := wait.Backoff{ - Duration: diskDetachInitDelay, - Factor: diskDetachFactor, - Steps: diskDetachSteps, - } - - err := wait.ExponentialBackoff(backoff, func() (bool, error) { - attached, err := os.diskIsAttached(ctx, instanceID, volumeID) - if err != nil { - return false, err - } - return !attached, nil - }) - - if wait.Interrupted(err) { - err = fmt.Errorf("volume %q failed to detach within the allowed time", volumeID) - } - - return err -} - -// diskIsUsed returns true whether a disk is attached to any node -func (os *iaasClient) diskIsUsed(ctx context.Context, volumeID string) (bool, error) { - volume, err := os.GetVolume(ctx, volumeID) - if err != nil { - return false, err - } - - diskUsed := volume.ServerId != nil && *volume.ServerId != "" - - return diskUsed, nil -} - -// diskIsAttached queries if a volume is attached to a compute instance -func (os *iaasClient) diskIsAttached(ctx context.Context, instanceID, volumeID string) (bool, error) { - volume, err := os.GetVolume(ctx, volumeID) - if err != nil { - return false, err - } - - if volume.ServerId != nil && *volume.ServerId == instanceID { - return true, nil - } - return false, nil -} - -func (os *iaasClient) GetVolume(ctx context.Context, volumeID string) (*iaas.Volume, error) { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - vol, err := os.iaas.GetVolume(ctxWithHTTPResp, os.projectID, os.region, volumeID).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return nil, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, err - } - return vol, nil -} - -func (os *iaasClient) GetVolumesByName(ctx context.Context, volName string) ([]iaas.Volume, error) { - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - // TODO: Add API filter once available. - volumes, err := os.iaas.ListVolumes(ctxWithHTTPResp, os.projectID, os.region).Execute() - if err != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return nil, stackiterrors.WrapErrorWithResponseID(err, reqID) - } - return nil, err - } - - filterMap := map[string]string{"Name": volName} - filteredVolumes := filterVolumes(volumes.Items, filterMap) - - return filteredVolumes, nil -} - -func (os *iaasClient) GetVolumeByName(ctx context.Context, name string) (*iaas.Volume, error) { - vols, err := os.GetVolumesByName(ctx, name) - if err != nil { - return nil, err - } - - if len(vols) == 0 { - return nil, stackiterrors.ErrNotFound - } - - if len(vols) > 1 { - return nil, fmt.Errorf("found %d volumes with name %q", len(vols), name) - } - - return &vols[0], nil -} - -func (os *iaasClient) WaitVolumeTargetStatus(ctx context.Context, volumeID string, tStatus []string) error { - backoff := wait.Backoff{ - Duration: operationFinishInitDelay, - Factor: operationFinishFactor, - Steps: operationFinishSteps, - } - - waitErr := wait.ExponentialBackoff(backoff, func() (bool, error) { - vol, err := os.GetVolume(ctx, volumeID) - if err != nil { - return false, err - } - if slices.Contains(tStatus, *vol.Status) { - return true, nil - } - for _, eState := range volumeErrorStates { - if *vol.Status == eState { - return false, fmt.Errorf("volume is in Error State : %s", ptr.Deref(vol.Status, "")) - } - } - return false, nil - }) - - if wait.Interrupted(waitErr) { - waitErr = fmt.Errorf("timeout on waiting for volume %s status to be in %v", volumeID, tStatus) - } - - return waitErr -} - -func (os *iaasClient) ExpandVolume(ctx context.Context, volumeID, volumeStatus string, newSize int64) error { - extendOpts := iaas.ResizeVolumePayload{Size: newSize} - var httpResp *http.Response - ctxWithHTTPResp := runtime.WithCaptureHTTPResponse(ctx, &httpResp) - - switch volumeStatus { - case VolumeAttachedStatus, VolumeAvailableStatus: - resizeErr := os.iaas.ResizeVolume(ctxWithHTTPResp, os.projectID, os.region, volumeID).ResizeVolumePayload(extendOpts).Execute() - if resizeErr != nil { - if httpResp != nil { - reqID := httpResp.Header.Get(sdkWait.XRequestIDHeader) - return stackiterrors.WrapErrorWithResponseID(resizeErr, reqID) - } - return resizeErr - } - return nil - default: - return fmt.Errorf("volume cannot be resized, when status is %s", volumeStatus) - } -}