From 424ea725c10ca2cc68e8e08a45a41ed4693d851c Mon Sep 17 00:00:00 2001 From: Alexander Dahmen Date: Tue, 22 Jul 2025 12:19:41 +0200 Subject: [PATCH 1/4] Adjust project files and configuration Initial pipeline, add gotools install action Signed-off-by: Alexander Dahmen --- .github/ISSUE_TEMPLATE/bug_report.md | 11 +- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- .github/actions/gotools/action.yaml | 16 +++ .github/workflows/ci.yaml | 59 ++++++++++ .github/workflows/release.yaml | 20 ++-- .gitignore | 1 + .golangci.yml | 107 +++++++++++++++---- .goreleaser.yaml | 2 +- CODE-OF-CONDUCT.md | 73 ------------- CONTRIBUTING.md | 36 ------- CONTRIBUTION.md | 51 +++++++++ Makefile | 11 ++ README.md | 7 +- provider/cmd/pulumi-resource-stackit/main.go | 3 +- provider/cmd/pulumi-tfgen-stackit/main.go | 2 +- provider/resources.go | 34 +----- provider/shim/shim.go | 2 +- scripts/project.sh | 23 ++++ 18 files changed, 281 insertions(+), 179 deletions(-) create mode 100644 .github/actions/gotools/action.yaml create mode 100644 .github/workflows/ci.yaml delete mode 100644 CODE-OF-CONDUCT.md delete mode 100644 CONTRIBUTING.md create mode 100644 CONTRIBUTION.md create mode 100755 scripts/project.sh diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 23d6345e..182a662a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,6 +1,6 @@ --- name: Bug report -about: Report a bug in the STACKIT pulumi provider +about: Report a bug in the STACKIT Pulumi Provider title: '' labels: bug assignees: '' @@ -26,16 +26,17 @@ assignees: '' ## Actual behavior -*Please describe the current behavior of the STACKIT pulumi provider. Don't forget to add detailed information like error messages.* +*Please describe the current behavior of the STACKIT Pulumi Provider. Don't forget to add detailed information like error messages.* ## Expected behavior -*Please describe the behavior which you would expect from the STACKIT pulumi provider in that case.* +*Please describe the behavior which you would expect from the STACKIT Pulumi Provider in that case.* ## Environment - OS: - - pulumi version (see `pulumi --version`): `vX.X.X` - - Version of the STACKIT pulumi provider: `vX.X.X` + - pulumi version (see `pulumi version`): `vX.X.X` + - pulumictl version (see `pulumictl version`) `X.X.X` + - Version of the STACKIT Pulumi Provider: `vX.X.X` **Additional information** diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 379d8d15..bcff1f61 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,6 +1,6 @@ --- name: Feature request -about: Suggest an idea for the STACKIT pulumi provider +about: Suggest an idea for the STACKIT Pulumi Provider title: '' labels: enhancement assignees: '' diff --git a/.github/actions/gotools/action.yaml b/.github/actions/gotools/action.yaml new file mode 100644 index 00000000..278c7125 --- /dev/null +++ b/.github/actions/gotools/action.yaml @@ -0,0 +1,16 @@ +name: Install Go Tools +description: "Install Go Tools for pipeline" +inputs: + go-version: + description: "Go version to install" + required: true +runs: + using: "composite" + steps: + - name: Install Go ${{ inputs.go-version }} + uses: actions/setup-go@v5 + with: + go-version: ${{ inputs.go-version }} + - name: Install project tools and dependencies + shell: bash + run: make project-tools \ No newline at end of file diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 00000000..1ba0c47d --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,59 @@ +name: CI Workflow + +on: + pull_request: + workflow_dispatch: + push: + branches: + - main + +permissions: + contents: write + id-token: write + +env: + GO_VERSION: "1.24" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + main: + name: CI + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Unshallow clone for tags + run: git fetch --prune --unshallow --tags + + - name: Install pulumictl + uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # tag=v2.1.0 + with: + repo: pulumi/pulumictl + + - name: Install pulumi + uses: pulumi/actions@v4 + + - name: Install Go Tools + uses: ./.github/actions/gotools + with: + go-version: ${{ env.GO_VERSION }} + + - name: Build sdks + run: make build + + - name: Lint + run: make lint_provider + + config: + name: Check GoReleaser config + if: github.event_name == 'pull_request' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Check GoReleaser + uses: goreleaser/goreleaser-action@v6 + with: + args: check \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index b60bb700..66cd90b1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -32,14 +32,14 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Unshallow clone for tags run: git fetch --prune --unshallow --tags - - name: Install Go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # tag=v5.5.0 - with: - go-version: ${{matrix.goversion}} - name: Install pulumictl uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # tag=v2.1.0 with: repo: pulumi/pulumictl + - name: Install Go Tools + uses: ./.github/actions/gotools + with: + go-version: ${{ matrix.goversion }} - name: Set PreRelease Version run: echo "GORELEASER_CURRENT_TAG=v$(pulumictl get version --language generic)" >> $GITHUB_ENV - uses: sigstore/cosign-installer@d58896d6a1865668819e1d91763c7751a165e159 # v3.9.2 @@ -63,7 +63,7 @@ jobs: fail-fast: true matrix: goversion: - - 1.22.x + - 1.24.x publish_sdk: name: Publish SDKs runs-on: ubuntu-latest @@ -73,16 +73,16 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2 - name: Unshallow clone for tags run: git fetch --prune --unshallow --tags - - name: Install Go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # tag=v5.5.0 - with: - go-version: ${{ matrix.goversion }} - name: Install pulumictl uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # tag=v2.1.0 with: repo: pulumi/pulumictl - name: Install Pulumi CLI uses: pulumi/action-install-pulumi-cli@b374ceb6168550de27c6eba92e01c1a774040e11 # tag=v2.0.0 + - name: Install Go Tools + uses: ./.github/actions/gotools + with: + go-version: ${{ matrix.goversion }} - name: Setup Node uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # tag=v4.4.0 with: @@ -132,7 +132,7 @@ jobs: dotnetversion: - 3.1.301 goversion: - - 1.22.x + - 1.24.x language: - nodejs - python diff --git a/.gitignore b/.gitignore index 5ad2e405..370f91bc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .idea .code +pulumi-stackit.sln **/vendor/ .pulumi **/bin/ diff --git a/.golangci.yml b/.golangci.yml index 6569b5b7..3487f745 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,24 +1,95 @@ +# This file contains all available configuration options +# with their default values. + +# options for analysis running +run: + # default concurrency is a available CPU number + concurrency: 4 + + # timeout for analysis, e.g. 30s, 5m, default is 1m + timeout: 5m +linters-settings: + goimports: + # put imports beginning with prefix after 3rd-party packages; + # it's a comma-separated list of prefixes + local-prefixes: github.com/freiheit-com/nmww + depguard: + rules: + main: + list-mode: lax # Everything is allowed unless it is denied + deny: + - pkg: "github.com/stretchr/testify" + desc: Do not use a testing framework + misspell: + # Correct spellings using locale preferences for US or UK. + # Default is to use a neutral variety of English. + # Setting locale to US will correct the British spelling of 'colour' to 'color'. + locale: US + golint: + min-confidence: 0.8 + gosec: + excludes: + # Suppressions: (see https://github.com/securego/gosec#available-rules for details) + - G104 # "Audit errors not checked" -> which we don't need and is a badly implemented version of errcheck + - G102 # "Bind to all interfaces" -> since this is normal in k8s + - G304 # "File path provided as taint input" -> too many false positives + - G307 # "Deferring unsafe method "Close" on type "io.ReadCloser" -> false positive when calling defer resp.Body.Close() + nakedret: + max-func-lines: 0 + revive: + ignore-generated-header: true + severity: error + # https://github.com/mgechev/revive + rules: + - name: errorf + - name: context-as-argument + - name: error-return + - name: increment-decrement + - name: indent-error-flow + - name: superfluous-else + - name: unused-parameter + - name: unreachable-code + - name: atomic + - name: empty-lines + - name: early-return + gocritic: + enabled-tags: + - performance + - style + - experimental + disabled-checks: + - wrapperFunc + - typeDefFirst + - ifElseChain + - dupImport # https://github.com/go-critic/go-critic/issues/845 linters: enable: - - deadcode - - errcheck - - goconst - - gofmt - - golint - - gosec + # https://golangci-lint.run/usage/linters/ + # default linters + - gosimple - govet - ineffassign - - interfacer - - lll - - megacheck + - staticcheck + - typecheck + - unused + # additional linters + - errorlint + - gochecknoinits + - gocritic + - gofmt + - goimports + - gosec - misspell - nakedret - - structcheck - - unconvert - - varcheck - enable-all: false -run: - skip-files: - - schema.go - - pulumiManifest.go - timeout: 20m + - revive + - depguard + - bodyclose + - sqlclosecheck + - wastedassign + - forcetypeassert + - errcheck + disable: + - noctx # false positive: finds errors with http.NewRequest that dont make sense + - unparam # false positives +issues: + exclude-use-default: false diff --git a/.goreleaser.yaml b/.goreleaser.yaml index c33ab319..b4e6ee5d 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -71,4 +71,4 @@ release: prerelease: auto snapshot: - name_template: '{{ .Tag }}-SNAPSHOT' + version_template: '{{ .Tag }}-SNAPSHOT' diff --git a/CODE-OF-CONDUCT.md b/CODE-OF-CONDUCT.md deleted file mode 100644 index bfb1c215..00000000 --- a/CODE-OF-CONDUCT.md +++ /dev/null @@ -1,73 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, -religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at code-of-conduct@pulumi.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index eea090e3..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,36 +0,0 @@ -# Contributing to the Pulumi ecosystem - -Do you want to contribute to Pulumi? Awesome! We are so happy to have you. -We have a few tips and housekeeping items to help you get up and running. - -## Code of Conduct - -Please make sure to read and observe our [Code of Conduct](./CODE-OF-CONDUCT.md) - -## Community Expectations - -Please read about our [contribution guidelines here.](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md#communications) - -## Setting up your development environment - -### Pulumi prerequisites - -Please refer to the [main Pulumi repo](https://github.com/pulumi/pulumi/)'s [CONTRIBUTING.md file]( -https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md#developing) for details on how to get set up with Pulumi. - -## Committing Generated Code - -You must generate and check in the SDKs on each pull request containing a code change, e.g. adding a new resource to `resources.go`. - -1. Run `make build_sdks` from the root of this repository -1. Open a pull request containing all changes -1. *Note:* If a large number of seemingly-unrelated diffs are produced by `make build_sdks` (for example, lots of changes to comments unrelated to the change you are making), ensure that the latest dependencies for the provider are installed by running `go mod tidy` in the `provider/` directory of this repository. - -## Running Integration Tests - -The examples and integration tests in this repository will create and destroy real -cloud resources while running. Before running these tests, make sure that you have -configured access to your cloud provider with Pulumi. - -_TODO: Add any steps you need to take to run integration tests here_ - diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md new file mode 100644 index 00000000..5a5d1dd4 --- /dev/null +++ b/CONTRIBUTION.md @@ -0,0 +1,51 @@ +# Contribute to the STACKIT Pulumi Provider + +Your contribution is welcome! Thank you for your interest in contributing to the STACKIT Pulumi Provider. We greatly value your feedback, feature requests, additions to the code, bug reports or documentation extensions. + +## Table of contents + +- [Developer Guide](#developer-guide) +- [Useful Make commands](#useful-make-commands) +- [Code Contributions](#code-contributions) +- [Bug Reports](#bug-reports) + + +## Developer Guide + +Prerequisites: + +- [`Pulumi`](https://www.pulumi.com/docs/iac/download-install/) +- [`pulumictl`](https://github.com/pulumi/pulumictl) +- [`Go`](https://go.dev/doc/install) 1.23+ + +### Useful Make commands + +These commands can be executed from the project root: + +- `make build`: command to compile and install everything which is needed +- `make tfgen`: installs the provider plugins +- `make generate_sdks`: generates the sdks for all languages +- `make lint_provider`: lint the provider code +- `make fmt`: run code formatter + +## Code Contributions + +To make your contribution, follow these steps: + +1. Check open or recently closed [Pull Requests](https://github.com/stackitcloud/pulumi-stackit/pulls) and [Issues](https://github.com/stackitcloud/pulumi-stackit/issues) to make sure the contribution you are making has not been already tackled by someone else. +2. Fork the repo. +3. Make your changes in a branch that is up-to-date with the original repo's `main` branch. +4. Commit your changes including a descriptive message +5. Create a pull request with your changes. +6. The pull request will be reviewed by the repo maintainers. If you need to make further changes, make additional commits to keep commit history. When the PR is merged, commits will be squashed. + +## Bug Reports + +If you would like to report a bug, please open a [GitHub issue](https://github.com/stackitcloud/pulumi-stackit/issues/new). + +To ensure we can provide the best support to your issue, follow these guidelines: + +1. Go through the existing issues to check if your issue has already been reported. +2. Make sure you are using the latest version of the STACKIT Pulumi Provider, we will not provide bug fixes for older versions. Also, latest versions may have the fix for your bug. +3. Please provide as much information as you can about your environment, e.g. your versions used, your version of the STACKIT Pulumi Provider, which operating system you are using and the corresponding version. +4. Include in your issue the steps to reproduce it, along with code snippets and/or information about your specific use case. This will make the support process much easier and efficient. \ No newline at end of file diff --git a/Makefile b/Makefile index 2bf5a4df..8da3a572 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,8 @@ NODE_MODULE_NAME := @pulumi/${PACK} TF_NAME := ${PACK} PROVIDER_PATH := provider VERSION_PATH := ${PROVIDER_PATH}/pkg/version.Version +ROOT_DIR ?= $(shell git rev-parse --show-toplevel) +SCRIPTS_BASE ?= $(ROOT_DIR)/scripts JAVA_GEN := pulumi-java-gen JAVA_GEN_VERSION := v0.8.0 @@ -140,3 +142,12 @@ install_sdks:: install_dotnet_sdk install_python_sdk install_nodejs_sdk test:: cd examples && go test -v -tags=all -parallel ${TESTPARALLELISM} -timeout 2h +fmt: + @gofmt -s -w . + +# SETUP AND TOOL INITIALIZATION TASKS +project-help: + @$(SCRIPTS_BASE)/project.sh help + +project-tools: + @$(SCRIPTS_BASE)/project.sh tools diff --git a/README.md b/README.md index 4d0d75fa..7fae2378 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ -# STACKIT Resource Provider +# STACKIT Pulumi Provider (BETA) ![logo.svg](docs/logo.svg) -The STACKIT Resource Provider lets you manage [STACKIT](https://www.stackit.de/en/) resources. +The STACKIT Pulumi Provider lets you manage [STACKIT](https://www.stackit.de/en/) resources. + +This STACKIT Pulumi Provider is in a BETA state. More functionality will be supported soon. Your feedback is appreciated! Feel free to open GitHub issues to provide feature requests and bug reports. ## Installing @@ -52,7 +54,6 @@ The following configuration points are available for the `stackit` provider: | Configuration Variable | Environment Variable | Description | |------------------------|---------------------|-------------| -| `stackit:argusCustomEndpoint` | `STACKIT_ARGUS_CUSTOM_ENDPOINT` | Custom endpoint for the Argus service ⚠️ **Deprecated**: Argus service has been deprecated and integration will be removed after February 26th 2025. Please use `observability_custom_endpoint` and `observability` resources instead | | `stackit:authorizationCustomEndpoint` | `STACKIT_AUTHORIZATION_CUSTOM_ENDPOINT` | Custom endpoint for the Membership service | | `stackit:cdnCustomEndpoint` | `STACKIT_CDN_CUSTOM_ENDPOINT` | Custom endpoint for the CDN service | | `stackit:credentialsPath` | `STACKIT_CREDENTIALS_PATH` | Path of JSON from where the credentials are read. Default value is `~/.stackit/credentials.json` | diff --git a/provider/cmd/pulumi-resource-stackit/main.go b/provider/cmd/pulumi-resource-stackit/main.go index 58fcf747..8a99f56f 100644 --- a/provider/cmd/pulumi-resource-stackit/main.go +++ b/provider/cmd/pulumi-resource-stackit/main.go @@ -19,8 +19,9 @@ package main import ( "context" _ "embed" - stackit "github.com/stackitcloud/pulumi-stackit/provider" + "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge" + stackit "github.com/stackitcloud/pulumi-stackit/provider" ) //go:embed schema-embed.json diff --git a/provider/cmd/pulumi-tfgen-stackit/main.go b/provider/cmd/pulumi-tfgen-stackit/main.go index cf0d685e..48dc003e 100644 --- a/provider/cmd/pulumi-tfgen-stackit/main.go +++ b/provider/cmd/pulumi-tfgen-stackit/main.go @@ -15,8 +15,8 @@ package main import ( - stackit "github.com/stackitcloud/pulumi-stackit/provider" "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfgen" + stackit "github.com/stackitcloud/pulumi-stackit/provider" ) func main() { diff --git a/provider/resources.go b/provider/resources.go index 0a2aad59..2601cb79 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -12,19 +12,19 @@ // See the License for the specific language governing permissions and // limitations under the License. +// github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge.ShimProvide package stackit import ( _ "embed" "fmt" - "github.com/stackitcloud/pulumi-stackit/provider/pkg/version" - pfbridge "github.com/pulumi/pulumi-terraform-bridge/pf/tfbridge" + "path/filepath" + + pfbridge "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge" "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge" tfbridgetokens "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/tokens" - "github.com/pulumi/pulumi/sdk/v3/go/common/tokens" + "github.com/stackitcloud/pulumi-stackit/provider/pkg/version" "github.com/stackitcloud/terraform-provider-stackit/shim" - "path/filepath" - "unicode" ) // all of the token components used below. @@ -36,30 +36,6 @@ const ( mainMod = "index" // the stackit module ) -// stackitMember manufactures a type token for the random package and the given module and type. -func stackitMember(mod string, mem string) tokens.ModuleMember { - return tokens.ModuleMember(mainPkg + ":" + mod + ":" + mem) -} - -// stackitType manufactures a type token for the random package and the given module and type. -func stackitType(mod string, typ string) tokens.Type { - return tokens.Type(stackitMember(mod, typ)) -} - -// stackitResource manufactures a standard resource token given a module and resource name. It automatically uses the -// stackit package and names the file by simply lower casing the resource's first character. -func stackitResource(mod string, res string) tokens.Type { - fn := string(unicode.ToLower(rune(res[0]))) + res[1:] - return stackitType(mod+"/"+fn, res) -} - -// stackitDataSource manufactures a standard resource token given a module and resource name. It automatically uses the -// stackit package and names the file by simply lower casing the resource's first character. -func stackitDataSource(mod string, res string) tokens.ModuleMember { - fn := string(unicode.ToLower(rune(res[0]))) + res[1:] - return stackitMember(mod+"/"+fn, res) -} - //go:embed cmd/pulumi-resource-stackit/bridge-metadata.json var metadata []byte diff --git a/provider/shim/shim.go b/provider/shim/shim.go index a4cdb463..6df77e83 100644 --- a/provider/shim/shim.go +++ b/provider/shim/shim.go @@ -1,8 +1,8 @@ package shim import ( - "github.com/stackitcloud/pulumi-stackit/provider/pkg/version" "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/stackitcloud/pulumi-stackit/provider/pkg/version" "github.com/stackitcloud/terraform-provider-stackit/stackit" ) diff --git a/scripts/project.sh b/scripts/project.sh new file mode 100755 index 00000000..56ab1443 --- /dev/null +++ b/scripts/project.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# This script is used to manage the project, only used for installing the required tools for now +# Usage: ./project.sh [action] +# * tools: Install required tools to run the project +set -eo pipefail + +ROOT_DIR_PROVIDER=$(git rev-parse --show-toplevel)/provider + +action=$1 + +if [ "$action" = "help" ]; then + [ -f "$0".man ] && man "$0".man || echo "No help, please read the script in ${script}, we will add help later" +elif [ "$action" = "tools" ]; then + cd ${ROOT_DIR_PROVIDER} + + go mod download + + go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.0 + go install github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs@v0.21.0 +else + echo "Invalid action: '$action', please use $0 help for help" +fi \ No newline at end of file From a7a843bb01bf4adc92efdd976211997bdb465970 Mon Sep 17 00:00:00 2001 From: Alexander Dahmen Date: Tue, 22 Jul 2025 12:25:47 +0200 Subject: [PATCH 2/4] Add README instructions: How to run dotnet and go examples Signed-off-by: Alexander Dahmen --- .github/workflows/ci.yaml | 18 +- examples/dotnet/README.md | 16 + examples/dotnet/getNetwork/Pulumi.yaml | 2 +- examples/go/README.md | 9 + examples/go/createCdnDistribution/Pulumi.yaml | 7 + .../go/{ => createCdnDistribution}/go.mod | 4 +- .../go/{ => createCdnDistribution}/go.sum | 0 .../go/{ => createCdnDistribution}/main.go | 0 examples/go/{ => getNetwork}/Pulumi.yaml | 4 +- examples/go/getNetwork/go.mod | 96 ++++++ examples/go/getNetwork/go.sum | 282 ++++++++++++++++++ examples/go/getNetwork/main.go | 21 ++ sdk/python/README.md | 96 ++++++ 13 files changed, 549 insertions(+), 6 deletions(-) create mode 100644 examples/dotnet/README.md create mode 100644 examples/go/README.md create mode 100644 examples/go/createCdnDistribution/Pulumi.yaml rename examples/go/{ => createCdnDistribution}/go.mod (96%) rename examples/go/{ => createCdnDistribution}/go.sum (100%) rename examples/go/{ => createCdnDistribution}/main.go (100%) rename examples/go/{ => getNetwork}/Pulumi.yaml (68%) create mode 100644 examples/go/getNetwork/go.mod create mode 100644 examples/go/getNetwork/go.sum create mode 100644 examples/go/getNetwork/main.go create mode 100644 sdk/python/README.md diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1ba0c47d..e2916f68 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,7 +13,10 @@ permissions: env: GO_VERSION: "1.24" + DOTNET_VERSION: 3.1.301 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_VERSION: 20.x + PYTHON_VERSION: "3.9" jobs: main: @@ -38,9 +41,22 @@ jobs: uses: ./.github/actions/gotools with: go-version: ${{ env.GO_VERSION }} + + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # tag=v4.4.0 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Setup DotNet + uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # tag=v2.1.0 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + - name: Setup Python + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # tag=v5.6.0 + with: + python-version: ${{ env.PYTHON_VERSION }} - name: Build sdks - run: make build + run: make generate_sdks - name: Lint run: make lint_provider diff --git a/examples/dotnet/README.md b/examples/dotnet/README.md new file mode 100644 index 00000000..1cbb1fb5 --- /dev/null +++ b/examples/dotnet/README.md @@ -0,0 +1,16 @@ +# How to run a dotnet example locally + +1. You need to have a [Pulumi](https://www.pulumi.com/) account +2. Install [Pulumi](https://www.pulumi.com/docs/iac/download-install/) +3. Install [pulumictl](https://github.com/pulumi/pulumictl/releases/tag/v0.0.49) +4. Create the sdks via `make generate_sdks` +5. Run `make install_dotnet_sdk` in order to create a local `nuget` folder and move all `*.nupkg` into this folder. + In this step the `Pulumi.Stackit.nupkg` is installed which is needed in order to run the examples. +6. Add this local nuget repository to your nuget source list if not already present. + a. Check existing nuget sources via `dotnet nuget list source` + b. If there is no local nuget repository present you can add it to the list via + `dotnet nuget add source ` +7. Move to a example folder like `getNetwork` and add the package via `dotnet add package Pulumi.Stackit --prerelease` +8. Adjust the example e.g. modifiy the project id +9. Run the example via `pulumi up` +10. Remove the created resources with `pulumi down` diff --git a/examples/dotnet/getNetwork/Pulumi.yaml b/examples/dotnet/getNetwork/Pulumi.yaml index 8e06d4dc..76b0e4ab 100644 --- a/examples/dotnet/getNetwork/Pulumi.yaml +++ b/examples/dotnet/getNetwork/Pulumi.yaml @@ -1,4 +1,4 @@ -name: getNetworkExample +name: getNetworkDotnet description: A minimal C# Pulumi program runtime: dotnet config: diff --git a/examples/go/README.md b/examples/go/README.md new file mode 100644 index 00000000..cf952a15 --- /dev/null +++ b/examples/go/README.md @@ -0,0 +1,9 @@ +# How to run a go example locally + +1. You need to have a [Pulumi](https://www.pulumi.com/) account +2. Install [Pulumi](https://www.pulumi.com/docs/iac/download-install/) +3. Install [pulumictl](https://github.com/pulumi/pulumictl/releases/tag/v0.0.49) +4. Create the sdks via `make generate_sdks` +5. Move to a example folder like `getNetwork` and adjust the example e.g. modify the project id. +6. Run the example via `pulumi up` +7. Remove the created resources with `pulumi down` \ No newline at end of file diff --git a/examples/go/createCdnDistribution/Pulumi.yaml b/examples/go/createCdnDistribution/Pulumi.yaml new file mode 100644 index 00000000..f43cab68 --- /dev/null +++ b/examples/go/createCdnDistribution/Pulumi.yaml @@ -0,0 +1,7 @@ +name: createCdnDistributionGo +description: A minimal Go Pulumi program +runtime: go +plugins: + providers: + - name: stackit + path: ../../../bin diff --git a/examples/go/go.mod b/examples/go/createCdnDistribution/go.mod similarity index 96% rename from examples/go/go.mod rename to examples/go/createCdnDistribution/go.mod index 1473cbc2..f6a90d0a 100644 --- a/examples/go/go.mod +++ b/examples/go/createCdnDistribution/go.mod @@ -5,11 +5,11 @@ go 1.23.0 toolchain go1.24.2 require ( - github.com/stackitcloud/pulumi-stackit/sdk v0.1.0 github.com/pulumi/pulumi/sdk/v3 v3.181.0 + github.com/stackitcloud/pulumi-stackit/sdk v0.0.0-00010101000000-000000000000 ) -replace github.com/stackitcloud/pulumi-stackit/sdk => ../../sdk +replace github.com/stackitcloud/pulumi-stackit/sdk => ../../../sdk require ( dario.cat/mergo v1.0.0 // indirect diff --git a/examples/go/go.sum b/examples/go/createCdnDistribution/go.sum similarity index 100% rename from examples/go/go.sum rename to examples/go/createCdnDistribution/go.sum diff --git a/examples/go/main.go b/examples/go/createCdnDistribution/main.go similarity index 100% rename from examples/go/main.go rename to examples/go/createCdnDistribution/main.go diff --git a/examples/go/Pulumi.yaml b/examples/go/getNetwork/Pulumi.yaml similarity index 68% rename from examples/go/Pulumi.yaml rename to examples/go/getNetwork/Pulumi.yaml index e2e2a332..5e2546fa 100644 --- a/examples/go/Pulumi.yaml +++ b/examples/go/getNetwork/Pulumi.yaml @@ -1,7 +1,7 @@ -name: stackit-go +name: getNetworkGo description: A minimal Go Pulumi program runtime: go plugins: providers: - name: stackit - path: ../../bin + path: ../../../bin diff --git a/examples/go/getNetwork/go.mod b/examples/go/getNetwork/go.mod new file mode 100644 index 00000000..973d1a94 --- /dev/null +++ b/examples/go/getNetwork/go.mod @@ -0,0 +1,96 @@ +module getNetworkGo + +go 1.23.0 + +toolchain go1.24.1 + +require ( + github.com/pulumi/pulumi/sdk/v3 v3.181.0 + github.com/stackitcloud/pulumi-stackit/sdk v0.0.0-20250721122841-df33187d65a0 +) + +replace github.com/stackitcloud/pulumi-stackit/sdk => ../../../sdk + +require ( + dario.cat/mergo v1.0.0 // indirect + github.com/BurntSushi/toml v1.2.1 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/ProtonMail/go-crypto v1.1.3 // indirect + github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/atotto/clipboard v0.1.4 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/blang/semver v3.5.1+incompatible // indirect + github.com/charmbracelet/bubbles v0.16.1 // indirect + github.com/charmbracelet/bubbletea v0.25.0 // indirect + github.com/charmbracelet/lipgloss v0.7.1 // indirect + github.com/cheggaaa/pb v1.0.29 // indirect + github.com/cloudflare/circl v1.6.1 // indirect + github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect + github.com/cyphar/filepath-securejoin v0.3.6 // indirect + github.com/djherbis/times v1.5.0 // indirect + github.com/emirpasic/gods v1.18.1 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.6.1 // indirect + github.com/go-git/go-git/v5 v5.13.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.2.4 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/hcl/v2 v2.22.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-localereader v0.0.1 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mitchellh/go-ps v1.0.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect + github.com/muesli/cancelreader v0.2.2 // indirect + github.com/muesli/reflow v0.3.0 // indirect + github.com/muesli/termenv v0.15.2 // indirect + github.com/opentracing/basictracer-go v1.1.0 // indirect + github.com/opentracing/opentracing-go v1.2.0 // indirect + github.com/pgavlin/fx v0.1.6 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pkg/term v1.1.0 // indirect + github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect + github.com/pulumi/esc v0.14.3 // indirect + github.com/rivo/uniseg v0.4.4 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect + github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/skeema/knownhosts v1.3.0 // indirect + github.com/spf13/cobra v1.8.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/texttheater/golang-levenshtein v1.0.1 // indirect + github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect + github.com/uber/jaeger-lib v2.4.1+incompatible // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect + github.com/zclconf/go-cty v1.13.2 // indirect + go.uber.org/atomic v1.9.0 // indirect + golang.org/x/crypto v0.39.0 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/sync v0.15.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/term v0.32.0 // indirect + golang.org/x/text v0.26.0 // indirect + golang.org/x/tools v0.33.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/grpc v1.67.1 // indirect + google.golang.org/protobuf v1.36.6 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + lukechampine.com/frand v1.4.2 // indirect +) diff --git a/examples/go/getNetwork/go.sum b/examples/go/getNetwork/go.sum new file mode 100644 index 00000000..e3fdf750 --- /dev/null +++ b/examples/go/getNetwork/go.sum @@ -0,0 +1,282 @@ +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= +github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= +github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +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/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= +github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= +github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= +github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= +github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= +github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= +github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= +github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= +github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= +github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= +github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= +github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= +github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0= +github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= +github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= +github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= +github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= +github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= +github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc= +github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= +github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= +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/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= +github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +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/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +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/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/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +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/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= +github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= +github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= +github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= +github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= +github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= +github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= +github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= +github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= +github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= +github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= +github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU= +github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M= +github.com/pgavlin/fx/v2 v2.0.3 h1:ZBVklTFjxcWvBVPE+ti5qwnmTIQ0Gq6nuj3J5RKDtKk= +github.com/pgavlin/fx/v2 v2.0.3/go.mod h1:Cvnwqq0BopdHUJ7CU50h1XPeKrF4ZwdFj1nJLXbAjCE= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk= +github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= +github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= +github.com/pulumi/esc v0.14.3 h1:Zli+9LiSDT/W+Fsfr8tITxCo+5wn969tLrE4KLv44G8= +github.com/pulumi/esc v0.14.3/go.mod h1:XnSxlt5NkmuAj304l/gK4pRErFbtqq6XpfX1tYT9Jbc= +github.com/pulumi/pulumi/sdk/v3 v3.181.0 h1:6XeYlG/mymtutRXlggcCLtxqBJPGCHNUGgoj4mapZQw= +github.com/pulumi/pulumi/sdk/v3 v3.181.0/go.mod h1:YS7uQ+eoIV/Fco804Upv3jmz5pwo/MkLYmbGH3VgA9c= +github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= +github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= +github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE= +github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= +github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= +github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= +github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= +github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= +github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= +github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +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.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/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-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +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.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/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-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +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.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +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= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/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/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.2.2/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= +lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= +lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= +pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= +pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= diff --git a/examples/go/getNetwork/main.go b/examples/go/getNetwork/main.go new file mode 100644 index 00000000..cbd805a9 --- /dev/null +++ b/examples/go/getNetwork/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "fmt" + + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/stackitcloud/pulumi-stackit/sdk/go/stackit" +) + +func main() { + pulumi.Run(func(ctx *pulumi.Context) error { + networkResult, err := stackit.LookupNetwork(ctx, &stackit.LookupNetworkArgs{ + ProjectId: "00000000-0000-0000-0000-000000000000", // Replace with your actual project ID + NetworkId: "00000000-0000-0000-0000-000000000000"}) // Replace with your actual network ID + if err != nil { + fmt.Println("Error during LookupNetwork %w", err) + } + fmt.Println("Network name: ", networkResult.Name) + return nil + }) +} diff --git a/sdk/python/README.md b/sdk/python/README.md new file mode 100644 index 00000000..7fae2378 --- /dev/null +++ b/sdk/python/README.md @@ -0,0 +1,96 @@ +# STACKIT Pulumi Provider (BETA) + +![logo.svg](docs/logo.svg) + +The STACKIT Pulumi Provider lets you manage [STACKIT](https://www.stackit.de/en/) resources. + +This STACKIT Pulumi Provider is in a BETA state. More functionality will be supported soon. Your feedback is appreciated! Feel free to open GitHub issues to provide feature requests and bug reports. + +## Installing + +This package is available for several languages/platforms: + +### Node.js (JavaScript/TypeScript) + +To use from JavaScript or TypeScript in Node.js, install using either `npm`: + +```bash +npm install @stackitcloud/pulumi-stackit +``` + +or `yarn`: + +```bash +yarn add @stackitcloud/pulumi-stackit +``` + +### Python + +To use from Python, install using `pip`: + +```bash +pip install pulumi_stackit +``` + +### Go + +To use from Go, use `go get` to grab the latest version of the library: + +```bash +go get github.com/stackitcloud/pulumi-stackit/sdk +``` + +### .NET + +To use from .NET, install using `dotnet add package`: + +```bash +dotnet add package Pulumi.stackit +``` + +## Configuration + +The following configuration points are available for the `stackit` provider: + +| Configuration Variable | Environment Variable | Description | +|------------------------|---------------------|-------------| +| `stackit:authorizationCustomEndpoint` | `STACKIT_AUTHORIZATION_CUSTOM_ENDPOINT` | Custom endpoint for the Membership service | +| `stackit:cdnCustomEndpoint` | `STACKIT_CDN_CUSTOM_ENDPOINT` | Custom endpoint for the CDN service | +| `stackit:credentialsPath` | `STACKIT_CREDENTIALS_PATH` | Path of JSON from where the credentials are read. Default value is `~/.stackit/credentials.json` | +| `stackit:defaultRegion` | `STACKIT_DEFAULT_REGION` | Region will be used as the default location for regional services. Not all services require a region, some are global | +| `stackit:dnsCustomEndpoint` | `STACKIT_DNS_CUSTOM_ENDPOINT` | Custom endpoint for the DNS service | +| `stackit:enableBetaResources` | `STACKIT_ENABLE_BETA_RESOURCES` | Enable beta resources. Default is false | +| `stackit:experiments` | `STACKIT_EXPERIMENTS` | Enables experiments. These are unstable features without official support. Available Experiments: [iam] | +| `stackit:gitCustomEndpoint` | `STACKIT_GIT_CUSTOM_ENDPOINT` | Custom endpoint for the Git service | +| `stackit:iaasCustomEndpoint` | `STACKIT_IAAS_CUSTOM_ENDPOINT` | Custom endpoint for the IaaS service | +| `stackit:loadbalancerCustomEndpoint` | `STACKIT_LOADBALANCER_CUSTOM_ENDPOINT` | Custom endpoint for the Load Balancer service | +| `stackit:logmeCustomEndpoint` | `STACKIT_LOGME_CUSTOM_ENDPOINT` | Custom endpoint for the LogMe service | +| `stackit:mariadbCustomEndpoint` | `STACKIT_MARIADB_CUSTOM_ENDPOINT` | Custom endpoint for the MariaDB service | +| `stackit:modelservingCustomEndpoint` | `STACKIT_MODELSERVING_CUSTOM_ENDPOINT` | Custom endpoint for the AI Model Serving service | +| `stackit:mongodbflexCustomEndpoint` | `STACKIT_MONGODBFLEX_CUSTOM_ENDPOINT` | Custom endpoint for the MongoDB Flex service | +| `stackit:objectstorageCustomEndpoint` | `STACKIT_OBJECTSTORAGE_CUSTOM_ENDPOINT` | Custom endpoint for the Object Storage service | +| `stackit:observabilityCustomEndpoint` | `STACKIT_OBSERVABILITY_CUSTOM_ENDPOINT` | Custom endpoint for the Observability service | +| `stackit:opensearchCustomEndpoint` | `STACKIT_OPENSEARCH_CUSTOM_ENDPOINT` | Custom endpoint for the OpenSearch service | +| `stackit:postgresflexCustomEndpoint` | `STACKIT_POSTGRESFLEX_CUSTOM_ENDPOINT` | Custom endpoint for the PostgresFlex service | +| `stackit:privateKey` | `STACKIT_PRIVATE_KEY` | Private RSA key used for authentication, relevant for the key flow. It takes precedence over the private key that is included in the service account key | +| `stackit:privateKeyPath` | `STACKIT_PRIVATE_KEY_PATH` | Path for the private RSA key used for authentication, relevant for the key flow. It takes precedence over the private key that is included in the service account key | +| `stackit:rabbitmqCustomEndpoint` | `STACKIT_RABBITMQ_CUSTOM_ENDPOINT` | Custom endpoint for the RabbitMQ service | +| `stackit:redisCustomEndpoint` | `STACKIT_REDIS_CUSTOM_ENDPOINT` | Custom endpoint for the Redis service | +| `stackit:region` | `STACKIT_REGION` | Region will be used as the default location for regional services. Not all services require a region, some are global ⚠️ **Deprecated**: This attribute is deprecated. Use 'default_region' instead | +| `stackit:resourcemanagerCustomEndpoint` | `STACKIT_RESOURCEMANAGER_CUSTOM_ENDPOINT` | Custom endpoint for the Resource Manager service | +| `stackit:secretsmanagerCustomEndpoint` | `STACKIT_SECRETSMANAGER_CUSTOM_ENDPOINT` | Custom endpoint for the Secrets Manager service | +| `stackit:serverBackupCustomEndpoint` | `STACKIT_SERVER_BACKUP_CUSTOM_ENDPOINT` | Custom endpoint for the Server Backup service | +| `stackit:serverUpdateCustomEndpoint` | `STACKIT_SERVER_UPDATE_CUSTOM_ENDPOINT` | Custom endpoint for the Server Update service | +| `stackit:serviceAccountCustomEndpoint` | `STACKIT_SERVICE_ACCOUNT_CUSTOM_ENDPOINT` | Custom endpoint for the Service Account service | +| `stackit:serviceAccountEmail` | `STACKIT_SERVICE_ACCOUNT_EMAIL` | Service account email. It is required if you want to use the resource manager project resource ⚠️ **Deprecated**: The `service_account_email` field has been deprecated because it is not required. Will be removed after June 12th 2025 | +| `stackit:serviceAccountKey` | `STACKIT_SERVICE_ACCOUNT_KEY` | Service account key used for authentication. If set, the key flow will be used to authenticate all operations | +| `stackit:serviceAccountKeyPath` | `STACKIT_SERVICE_ACCOUNT_KEY_PATH` | Path for the service account key used for authentication. If set, the key flow will be used to authenticate all operations | +| `stackit:serviceAccountToken` | `STACKIT_SERVICE_ACCOUNT_TOKEN` | Token used for authentication. If set, the token flow will be used to authenticate all operations | +| `stackit:serviceEnablementCustomEndpoint` | `STACKIT_SERVICE_ENABLEMENT_CUSTOM_ENDPOINT` | Custom endpoint for the Service Enablement API | +| `stackit:skeCustomEndpoint` | `STACKIT_SKE_CUSTOM_ENDPOINT` | Custom endpoint for the Kubernetes Engine (SKE) service | +| `stackit:sqlserverflexCustomEndpoint` | `STACKIT_SQLSERVERFLEX_CUSTOM_ENDPOINT` | Custom endpoint for the SQL Server Flex service | +| `stackit:tokenCustomEndpoint` | `STACKIT_TOKEN_CUSTOM_ENDPOINT` | Custom endpoint for the token API, which is used to request access tokens when using the key flow | + +## Reference + +For detailed reference documentation, please visit [the Pulumi registry](https://www.pulumi.com/registry/packages/stackit/api-docs/). From 0c270d3c3dab1e70274e4042d274f1de80b01600 Mon Sep 17 00:00:00 2001 From: Alexander Dahmen Date: Tue, 22 Jul 2025 14:53:10 +0200 Subject: [PATCH 3/4] Use supported dotnet version Signed-off-by: Alexander Dahmen --- .github/workflows/ci.yaml | 12 +---- .github/workflows/release.yaml | 4 +- CONTRIBUTION.md | 5 +- provider/resources.go | 1 - sdk/python/README.md | 96 ---------------------------------- 5 files changed, 8 insertions(+), 110 deletions(-) delete mode 100644 sdk/python/README.md diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e2916f68..91203041 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,7 +13,7 @@ permissions: env: GO_VERSION: "1.24" - DOTNET_VERSION: 3.1.301 + DOTNET_VERSION: 9.0.x GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NODE_VERSION: 20.x PYTHON_VERSION: "3.9" @@ -25,39 +25,32 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Unshallow clone for tags run: git fetch --prune --unshallow --tags - - name: Install pulumictl uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # tag=v2.1.0 with: repo: pulumi/pulumictl - - name: Install pulumi uses: pulumi/actions@v4 - - name: Install Go Tools uses: ./.github/actions/gotools with: go-version: ${{ env.GO_VERSION }} - - name: Setup Node uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # tag=v4.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Setup DotNet - uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # tag=v2.1.0 + uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # tag=v4.3.1 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Setup Python uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # tag=v5.6.0 with: python-version: ${{ env.PYTHON_VERSION }} - - name: Build sdks run: make generate_sdks - - name: Lint run: make lint_provider @@ -68,7 +61,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Check GoReleaser uses: goreleaser/goreleaser-action@v6 with: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 66cd90b1..b3a964f1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -89,7 +89,7 @@ jobs: node-version: ${{matrix.nodeversion}} registry-url: ${{env.NPM_REGISTRY_URL}} - name: Setup DotNet - uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # tag=v2.1.0 + uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # tag=v4.3.1 with: dotnet-version: ${{matrix.dotnetverson}} - name: Setup Python @@ -130,7 +130,7 @@ jobs: fail-fast: true matrix: dotnetversion: - - 3.1.301 + - 9.0.x goversion: - 1.24.x language: diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md index 5a5d1dd4..7942e3b1 100644 --- a/CONTRIBUTION.md +++ b/CONTRIBUTION.md @@ -16,7 +16,10 @@ Prerequisites: - [`Pulumi`](https://www.pulumi.com/docs/iac/download-install/) - [`pulumictl`](https://github.com/pulumi/pulumictl) -- [`Go`](https://go.dev/doc/install) 1.23+ +- [`Go`](https://go.dev/doc/install) 1.24+ +- [`dotnet`](https://dotnet.microsoft.com/en-us/download) 9.0.x +- [`node`](https://nodejs.org/en/download) 20.x +- [`python`](https://www.python.org/downloads) 3.9 ### Useful Make commands diff --git a/provider/resources.go b/provider/resources.go index 2601cb79..10e891f3 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -12,7 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -// github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge.ShimProvide package stackit import ( diff --git a/sdk/python/README.md b/sdk/python/README.md deleted file mode 100644 index 7fae2378..00000000 --- a/sdk/python/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# STACKIT Pulumi Provider (BETA) - -![logo.svg](docs/logo.svg) - -The STACKIT Pulumi Provider lets you manage [STACKIT](https://www.stackit.de/en/) resources. - -This STACKIT Pulumi Provider is in a BETA state. More functionality will be supported soon. Your feedback is appreciated! Feel free to open GitHub issues to provide feature requests and bug reports. - -## Installing - -This package is available for several languages/platforms: - -### Node.js (JavaScript/TypeScript) - -To use from JavaScript or TypeScript in Node.js, install using either `npm`: - -```bash -npm install @stackitcloud/pulumi-stackit -``` - -or `yarn`: - -```bash -yarn add @stackitcloud/pulumi-stackit -``` - -### Python - -To use from Python, install using `pip`: - -```bash -pip install pulumi_stackit -``` - -### Go - -To use from Go, use `go get` to grab the latest version of the library: - -```bash -go get github.com/stackitcloud/pulumi-stackit/sdk -``` - -### .NET - -To use from .NET, install using `dotnet add package`: - -```bash -dotnet add package Pulumi.stackit -``` - -## Configuration - -The following configuration points are available for the `stackit` provider: - -| Configuration Variable | Environment Variable | Description | -|------------------------|---------------------|-------------| -| `stackit:authorizationCustomEndpoint` | `STACKIT_AUTHORIZATION_CUSTOM_ENDPOINT` | Custom endpoint for the Membership service | -| `stackit:cdnCustomEndpoint` | `STACKIT_CDN_CUSTOM_ENDPOINT` | Custom endpoint for the CDN service | -| `stackit:credentialsPath` | `STACKIT_CREDENTIALS_PATH` | Path of JSON from where the credentials are read. Default value is `~/.stackit/credentials.json` | -| `stackit:defaultRegion` | `STACKIT_DEFAULT_REGION` | Region will be used as the default location for regional services. Not all services require a region, some are global | -| `stackit:dnsCustomEndpoint` | `STACKIT_DNS_CUSTOM_ENDPOINT` | Custom endpoint for the DNS service | -| `stackit:enableBetaResources` | `STACKIT_ENABLE_BETA_RESOURCES` | Enable beta resources. Default is false | -| `stackit:experiments` | `STACKIT_EXPERIMENTS` | Enables experiments. These are unstable features without official support. Available Experiments: [iam] | -| `stackit:gitCustomEndpoint` | `STACKIT_GIT_CUSTOM_ENDPOINT` | Custom endpoint for the Git service | -| `stackit:iaasCustomEndpoint` | `STACKIT_IAAS_CUSTOM_ENDPOINT` | Custom endpoint for the IaaS service | -| `stackit:loadbalancerCustomEndpoint` | `STACKIT_LOADBALANCER_CUSTOM_ENDPOINT` | Custom endpoint for the Load Balancer service | -| `stackit:logmeCustomEndpoint` | `STACKIT_LOGME_CUSTOM_ENDPOINT` | Custom endpoint for the LogMe service | -| `stackit:mariadbCustomEndpoint` | `STACKIT_MARIADB_CUSTOM_ENDPOINT` | Custom endpoint for the MariaDB service | -| `stackit:modelservingCustomEndpoint` | `STACKIT_MODELSERVING_CUSTOM_ENDPOINT` | Custom endpoint for the AI Model Serving service | -| `stackit:mongodbflexCustomEndpoint` | `STACKIT_MONGODBFLEX_CUSTOM_ENDPOINT` | Custom endpoint for the MongoDB Flex service | -| `stackit:objectstorageCustomEndpoint` | `STACKIT_OBJECTSTORAGE_CUSTOM_ENDPOINT` | Custom endpoint for the Object Storage service | -| `stackit:observabilityCustomEndpoint` | `STACKIT_OBSERVABILITY_CUSTOM_ENDPOINT` | Custom endpoint for the Observability service | -| `stackit:opensearchCustomEndpoint` | `STACKIT_OPENSEARCH_CUSTOM_ENDPOINT` | Custom endpoint for the OpenSearch service | -| `stackit:postgresflexCustomEndpoint` | `STACKIT_POSTGRESFLEX_CUSTOM_ENDPOINT` | Custom endpoint for the PostgresFlex service | -| `stackit:privateKey` | `STACKIT_PRIVATE_KEY` | Private RSA key used for authentication, relevant for the key flow. It takes precedence over the private key that is included in the service account key | -| `stackit:privateKeyPath` | `STACKIT_PRIVATE_KEY_PATH` | Path for the private RSA key used for authentication, relevant for the key flow. It takes precedence over the private key that is included in the service account key | -| `stackit:rabbitmqCustomEndpoint` | `STACKIT_RABBITMQ_CUSTOM_ENDPOINT` | Custom endpoint for the RabbitMQ service | -| `stackit:redisCustomEndpoint` | `STACKIT_REDIS_CUSTOM_ENDPOINT` | Custom endpoint for the Redis service | -| `stackit:region` | `STACKIT_REGION` | Region will be used as the default location for regional services. Not all services require a region, some are global ⚠️ **Deprecated**: This attribute is deprecated. Use 'default_region' instead | -| `stackit:resourcemanagerCustomEndpoint` | `STACKIT_RESOURCEMANAGER_CUSTOM_ENDPOINT` | Custom endpoint for the Resource Manager service | -| `stackit:secretsmanagerCustomEndpoint` | `STACKIT_SECRETSMANAGER_CUSTOM_ENDPOINT` | Custom endpoint for the Secrets Manager service | -| `stackit:serverBackupCustomEndpoint` | `STACKIT_SERVER_BACKUP_CUSTOM_ENDPOINT` | Custom endpoint for the Server Backup service | -| `stackit:serverUpdateCustomEndpoint` | `STACKIT_SERVER_UPDATE_CUSTOM_ENDPOINT` | Custom endpoint for the Server Update service | -| `stackit:serviceAccountCustomEndpoint` | `STACKIT_SERVICE_ACCOUNT_CUSTOM_ENDPOINT` | Custom endpoint for the Service Account service | -| `stackit:serviceAccountEmail` | `STACKIT_SERVICE_ACCOUNT_EMAIL` | Service account email. It is required if you want to use the resource manager project resource ⚠️ **Deprecated**: The `service_account_email` field has been deprecated because it is not required. Will be removed after June 12th 2025 | -| `stackit:serviceAccountKey` | `STACKIT_SERVICE_ACCOUNT_KEY` | Service account key used for authentication. If set, the key flow will be used to authenticate all operations | -| `stackit:serviceAccountKeyPath` | `STACKIT_SERVICE_ACCOUNT_KEY_PATH` | Path for the service account key used for authentication. If set, the key flow will be used to authenticate all operations | -| `stackit:serviceAccountToken` | `STACKIT_SERVICE_ACCOUNT_TOKEN` | Token used for authentication. If set, the token flow will be used to authenticate all operations | -| `stackit:serviceEnablementCustomEndpoint` | `STACKIT_SERVICE_ENABLEMENT_CUSTOM_ENDPOINT` | Custom endpoint for the Service Enablement API | -| `stackit:skeCustomEndpoint` | `STACKIT_SKE_CUSTOM_ENDPOINT` | Custom endpoint for the Kubernetes Engine (SKE) service | -| `stackit:sqlserverflexCustomEndpoint` | `STACKIT_SQLSERVERFLEX_CUSTOM_ENDPOINT` | Custom endpoint for the SQL Server Flex service | -| `stackit:tokenCustomEndpoint` | `STACKIT_TOKEN_CUSTOM_ENDPOINT` | Custom endpoint for the token API, which is used to request access tokens when using the key flow | - -## Reference - -For detailed reference documentation, please visit [the Pulumi registry](https://www.pulumi.com/registry/packages/stackit/api-docs/). From 59e7d12f04261b1391dc95a5ec4191df79a7110d Mon Sep 17 00:00:00 2001 From: Alexander Dahmen Date: Fri, 25 Jul 2025 14:40:11 +0200 Subject: [PATCH 4/4] Use new golinter configuration Signed-off-by: Alexander Dahmen --- .golangci.yml | 306 +++++++++++++++++++++++++------- examples/dotnet/README.md | 9 +- provider/go.mod | 16 +- provider/go.sum | 5 +- provider/pkg/version/version.go | 2 +- provider/resources.go | 10 +- provider/shim/go.mod | 89 ---------- provider/shim/go.sum | 137 -------------- 8 files changed, 262 insertions(+), 312 deletions(-) delete mode 100644 provider/shim/go.mod delete mode 100644 provider/shim/go.sum diff --git a/.golangci.yml b/.golangci.yml index 3487f745..e47c26cb 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,95 +1,269 @@ -# This file contains all available configuration options -# with their default values. - -# options for analysis running -run: - # default concurrency is a available CPU number - concurrency: 4 - - # timeout for analysis, e.g. 30s, 5m, default is 1m - timeout: 5m linters-settings: + errcheck: + # report about not checking of errors in type assetions: `a := b.(MyStruct)`; + # default is false: such cases aren't reported by default. + check-type-assertions: true + + # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`; + # default is false: such cases aren't reported by default. + check-blank: true + exhaustive: + # Presence of "default" case in switch statements satisfies exhaustiveness, + # even if all enum members are not listed. + default-signifies-exhaustive: true + funlen: + lines: 100 + statements: 50 + gci: + custom-order: true + sections: + - standard + - default + - prefix(dev.azure.com/schwarzit) goimports: - # put imports beginning with prefix after 3rd-party packages; - # it's a comma-separated list of prefixes - local-prefixes: github.com/freiheit-com/nmww + local-prefixes: dev.azure.com/schwarzit + gofmt: + # simplify code: gofmt with `-s` option, true by default + simplify: true + gocyclo: + min-complexity: 30 + gocognit: + min-complexity: 30 + dupl: + threshold: 150 + goconst: + min-len: 3 + min-occurrences: 2 + govet: + enable-all: true + disable: + - fieldalignment depguard: rules: - main: - list-mode: lax # Everything is allowed unless it is denied + all: deny: - - pkg: "github.com/stretchr/testify" - desc: Do not use a testing framework + - pkg: github.com/sirupsen/logrus + desc: logging is done using the internal/log and log/slog package + - pkg: log$ + desc: logging is done using the internal/log and log/slog package + - pkg: go.uber.org/zap + desc: logging is done using the internal/log and log/slog package misspell: - # Correct spellings using locale preferences for US or UK. - # Default is to use a neutral variety of English. - # Setting locale to US will correct the British spelling of 'colour' to 'color'. locale: US - golint: - min-confidence: 0.8 - gosec: - excludes: - # Suppressions: (see https://github.com/securego/gosec#available-rules for details) - - G104 # "Audit errors not checked" -> which we don't need and is a badly implemented version of errcheck - - G102 # "Bind to all interfaces" -> since this is normal in k8s - - G304 # "File path provided as taint input" -> too many false positives - - G307 # "Deferring unsafe method "Close" on type "io.ReadCloser" -> false positive when calling defer resp.Body.Close() + lll: + line-length: 140 + tab-width: 1 + cyclop: + # the maximal code complexity to report + max-complexity: 20 + # the maximal average package complexity. If it's higher than 0.0 (float) the check is enabled (default 0.0) + package-average: 0.0 + unparam: + # Inspect exported functions, default is false. Set to true if no external program/library imports your code. + # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors: + # if it's called for subdir of a project it can't find external interfaces. All text editor integrations + # with golangci-lint call it on a directory with the changed file. + check-exported: false nakedret: - max-func-lines: 0 + # make an issue if func has more lines of code than this setting and it has naked returns; default is 30 + max-func-lines: 5 + prealloc: + # XXX: we don't recommend using this linter before doing performance profiling. + # For most programs usage of prealloc will be a premature optimization. + + # Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them. + # True by default. + simple: true + range-loops: true # Report preallocation suggestions on range loops, true by default + for-loops: true # Report preallocation suggestions on for loops, false by default + gocritic: + enabled-tags: + - diagnostic + - experimental + - opinionated + - performance + - style + disabled-checks: + - dupImport # https://github.com/go-critic/go-critic/issues/845 + - octalLiteral + - unnamedResult + # Settings passed to gocritic. + # The settings key is the name of a supported gocritic checker. + # The list of supported checkers can be find in https://go-critic.github.io/overview. + settings: + hugeParam: + # Size in bytes that makes the warning trigger. + # Default: 80 + sizeThreshold: 80 + dogsled: + # checks assignments with too many blank identifiers; default is 2 + max-blank-identifiers: 2 + whitespace: + multi-if: false # Enforces newlines (or comments) after every multi-line if statement + multi-func: false # Enforces newlines (or comments) after every multi-line function signature + gomoddirectives: + # List of allowed `replace` directives. Default is empty. + # Add your allowed `replace` targets here, this rule is so you don't accidentally commit replacements you added for testing + replace-allow-list: [github.com/hashicorp/terraform-plugin-sdk/v2] + mnd: + # don't include the "operation" and "assign" + checks: + - argument + - case + - condition + - return + - operation + - assign + nolintlint: + allow-unused: false # report any unused nolint directives + require-explanation: true # require an explanation for nolint directives + require-specific: true # require nolint directives to be specific about which linter is being skipped + nlreturn: + # Size of the block (including return statement that is still "OK") + # so no return split required. + block-size: 5 + stylecheck: + initialisms: ["ACL", "API", "ASCII", "CPU", "CSS", "DNS", "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", "IP", "JSON", "QPS", "RAM", "RPC", "SLA", "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", "UDP", "UI", "GID", "UID", "UUID", "URI", "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", "XSS", "SIP", "RTP", "AMQP", "DB", "TS"] revive: - ignore-generated-header: true - severity: error - # https://github.com/mgechev/revive rules: + - name: context-keys-type + disabled: false + - name: time-naming + disabled: false + - name: var-declaration + disabled: false + - name: unexported-return + disabled: false - name: errorf + disabled: false + - name: blank-imports + disabled: false - name: context-as-argument + disabled: false + - name: dot-imports + disabled: false - name: error-return + disabled: false + - name: error-strings + disabled: false + - name: error-naming + disabled: false + - name: exported + disabled: false - name: increment-decrement + disabled: false + - name: var-naming + disabled: false + - name: package-comments + disabled: false + - name: range + disabled: false + - name: receiver-naming + disabled: false - name: indent-error-flow - - name: superfluous-else - - name: unused-parameter - - name: unreachable-code - - name: atomic - - name: empty-lines - - name: early-return - gocritic: - enabled-tags: - - performance - - style - - experimental - disabled-checks: - - wrapperFunc - - typeDefFirst - - ifElseChain - - dupImport # https://github.com/go-critic/go-critic/issues/845 + disabled: false + linters: + # please, do not use `enable-all`: it's deprecated and will be removed soon. + # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint + disable-all: true enable: - # https://golangci-lint.run/usage/linters/ - # default linters - - gosimple - - govet - - ineffassign - - staticcheck - - typecheck - - unused - # additional linters - - errorlint + - depguard + - dogsled + - dupl + - copyloopvar + - exhaustive + - funlen - gochecknoinits + - goconst - gocritic + - gocyclo + - godot - gofmt - goimports + - mnd + - goprintffuncname - gosec + - gosimple + - govet + - ineffassign + - lll + - gosimple + - staticcheck + - unused - misspell - nakedret + - nolintlint - revive - - depguard + - staticcheck + - stylecheck + - typecheck + - unconvert + - unused + - whitespace + - gochecknoglobals + - err113 + - prealloc + - asciicheck + - nestif - bodyclose + - cyclop + - durationcheck + - errcheck + - errorlint + - forbidigo + - forcetypeassert + - gci + - gocognit + - gofumpt + - gomoddirectives + - gomodguard + - importas + - makezero + - nilerr + - nlreturn + - noctx + - predeclared + - promlinter + - rowserrcheck - sqlclosecheck + - tparallel + - unparam - wastedassign - - forcetypeassert - - errcheck - disable: - - noctx # false positive: finds errors with http.NewRequest that dont make sense - - unparam # false positives + - wsl + + # don't enable: + # - tagliatelle # have a different naming schema + # - golint # deprecated + # - scopelint # deprecated + # - interfacer # deprecated + # - testpackage # this is not best practice in go + # - godox # we want to use keywords like TODO or FIX in the code + + issues: - exclude-use-default: false + # Excluding configuration per-path, per-linter, per-text and per-source + exclude-rules: + - path: _test\.go + linters: + - gochecknoglobals + - noctx + - funlen + - err113 + - mnd + - forcetypeassert + - dogsled + - goconst + - unparam + - dupl + - text: 'declaration of "err" shadows declaration' + linters: + - govet + max-same-issues: 0 + max-issues-per-linter: 0 +run: + timeout: 10m + issues-exit-code: 1 + tests: true + build-tags: + - integration diff --git a/examples/dotnet/README.md b/examples/dotnet/README.md index 1cbb1fb5..8f81cf33 100644 --- a/examples/dotnet/README.md +++ b/examples/dotnet/README.md @@ -10,7 +10,8 @@ a. Check existing nuget sources via `dotnet nuget list source` b. If there is no local nuget repository present you can add it to the list via `dotnet nuget add source ` -7. Move to a example folder like `getNetwork` and add the package via `dotnet add package Pulumi.Stackit --prerelease` -8. Adjust the example e.g. modifiy the project id -9. Run the example via `pulumi up` -10. Remove the created resources with `pulumi down` +8. Ensure that the `pulumi-resource-stackit` provider is in your GOPATH (located under pulumi-stackit/bin) +9. Move to a example folder like `getNetwork` and add the package via `dotnet add package Pulumi.Stackit --prerelease` +10. Adjust the example e.g. modifiy the project id +11. Run the example via `pulumi up` +12. Remove the created resources with `pulumi down` diff --git a/provider/go.mod b/provider/go.mod index 1f09bff6..6e1d27a3 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -4,16 +4,13 @@ go 1.24 toolchain go1.24.4 -replace ( - github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20250530111747-935112552988 - github.com/stackitcloud/terraform-provider-stackit/shim => ./shim -) +replace github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20250530111747-935112552988 require ( - github.com/pulumi/pulumi-terraform-bridge/pf v0.49.0 + github.com/hashicorp/terraform-plugin-framework v1.15.0 github.com/pulumi/pulumi-terraform-bridge/v3 v3.110.0 - github.com/pulumi/pulumi/sdk/v3 v3.184.0 - github.com/stackitcloud/terraform-provider-stackit/shim v0.0.0 + github.com/stackitcloud/terraform-provider-stackit v0.56.0 + ) require ( @@ -54,6 +51,7 @@ require ( github.com/ettle/strcase v0.1.1 // indirect github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/frankban/quicktest v1.14.4 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.2 // indirect github.com/go-git/go-git/v5 v5.16.0 // indirect @@ -85,7 +83,6 @@ require ( github.com/hashicorp/hcl/v2 v2.23.0 // indirect github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect github.com/hashicorp/logutils v1.0.0 // indirect - github.com/hashicorp/terraform-plugin-framework v1.15.0 // indirect github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 // indirect github.com/hashicorp/terraform-plugin-go v0.28.0 // indirect github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect @@ -141,6 +138,7 @@ require ( github.com/pulumi/pulumi-java/pkg v1.12.0 // indirect github.com/pulumi/pulumi-yaml v1.19.1 // indirect github.com/pulumi/pulumi/pkg/v3 v3.175.0 // indirect + github.com/pulumi/pulumi/sdk/v3 v3.184.0 // indirect github.com/pulumi/schema-tools v0.1.2 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect @@ -181,7 +179,7 @@ require ( github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.2.1 // indirect github.com/stackitcloud/stackit-sdk-go/services/ske v0.27.0 // indirect github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.2.0 // indirect - github.com/stackitcloud/terraform-provider-stackit v0.56.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/teambition/rrule-go v1.8.2 // indirect github.com/teekennedy/goldmark-markdown v0.3.0 // indirect github.com/texttheater/golang-levenshtein v1.0.1 // indirect diff --git a/provider/go.sum b/provider/go.sum index d5be8da2..94ede58d 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -329,6 +329,7 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -743,6 +744,7 @@ github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= @@ -765,8 +767,6 @@ github.com/pulumi/providertest v0.3.0 h1:Dv10aoFaNQBDRtK8cRbd2uk9vEhpC/NryN+0y7N github.com/pulumi/providertest v0.3.0/go.mod h1:aTxVfdxP/Pe0iPbokjBp99x0XaY4fkZB2CjIS5wysMs= github.com/pulumi/pulumi-java/pkg v1.12.0 h1:T7yFnFr0bgqy6huVUANMyUeGO1/Y3r2CJJ6S5YQDQCU= github.com/pulumi/pulumi-java/pkg v1.12.0/go.mod h1:g8QQjEgB5wTsZptyf1vbIcI/pgYEGJObnihAEgymkAo= -github.com/pulumi/pulumi-terraform-bridge/pf v0.49.0 h1:GJ20wQxz5dYbOWdDyDp1E3SuuTuLVdBpnp70FJ+VVpQ= -github.com/pulumi/pulumi-terraform-bridge/pf v0.49.0/go.mod h1:zDdNBSsrNhUxyeX1MrXr/O71DBpWMFZ8dGIGV0Pbj0c= github.com/pulumi/pulumi-terraform-bridge/v3 v3.110.0 h1:dSrgT3BVGDtmFZtIyT1fyO3nJ7mFt4/WEoGXoiym0tQ= github.com/pulumi/pulumi-terraform-bridge/v3 v3.110.0/go.mod h1:u/wPklZlf0stCHcpZBncPau9h8p5QoCwZeKEds/O0FM= github.com/pulumi/pulumi-yaml v1.19.1 h1:Y92eTQv07p5RbbNj6s/54+ibdPgvndLJ2Lb1IjYffng= @@ -789,6 +789,7 @@ github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= 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 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= diff --git a/provider/pkg/version/version.go b/provider/pkg/version/version.go index 1d17f387..bda8806e 100644 --- a/provider/pkg/version/version.go +++ b/provider/pkg/version/version.go @@ -14,5 +14,5 @@ package version -// Version is initialized by the Go linker to contain the semver of this build. +//nolint:gochecknoglobals // Version is initialized by the Go linker to contain the semver of this build. var Version string diff --git a/provider/resources.go b/provider/resources.go index 10e891f3..700cad78 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -23,16 +23,18 @@ import ( "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge" tfbridgetokens "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/tokens" "github.com/stackitcloud/pulumi-stackit/provider/pkg/version" - "github.com/stackitcloud/terraform-provider-stackit/shim" + "github.com/stackitcloud/pulumi-stackit/provider/shim" ) // all of the token components used below. const ( // This variable controls the default name of the package in the package - // registries for nodejs and python: + // registries for nodejs and python. mainPkg = "stackit" // modules: mainMod = "index" // the stackit module + // maxAutonaming length. + maxAutonamingLength = 255 ) //go:embed cmd/pulumi-resource-stackit/bridge-metadata.json @@ -102,7 +104,7 @@ func Provider() tfbridge.ProviderInfo { // See the documentation for tfbridge.OverlayInfo for how to lay out this // section, or refer to the AWS provider. Delete this section if there are // no overlay files. - //Overlay: &tfbridge.OverlayInfo{}, + // Overlay: &tfbridge.OverlayInfo{}, }, Python: &tfbridge.PythonInfo{ PackageName: "pulumi_stackit", @@ -132,7 +134,7 @@ func Provider() tfbridge.ProviderInfo { prov.MustApplyAutoAliases() - prov.SetAutonaming(255, "-") + prov.SetAutonaming(maxAutonamingLength, "-") return prov } diff --git a/provider/shim/go.mod b/provider/shim/go.mod deleted file mode 100644 index 1a515eb5..00000000 --- a/provider/shim/go.mod +++ /dev/null @@ -1,89 +0,0 @@ -module github.com/stackitcloud/terraform-provider-stackit/shim - -go 1.24 - -toolchain go1.24.2 - -require ( - github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0 - github.com/stackitcloud/terraform-provider-stackit v0.56.0 -) - -require ( - github.com/agext/levenshtein v1.2.3 // indirect - github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/fatih/color v1.18.0 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/go-cmp v0.7.0 // indirect - github.com/google/go-querystring v1.1.0 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-cty v1.5.0 // indirect - github.com/hashicorp/go-hclog v1.6.3 // indirect - github.com/hashicorp/go-plugin v1.6.3 // indirect - github.com/hashicorp/go-retryablehttp v0.7.7 // indirect - github.com/hashicorp/go-uuid v1.0.3 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect - github.com/hashicorp/hcl/v2 v2.23.0 // indirect - github.com/hashicorp/logutils v1.0.0 // indirect - github.com/hashicorp/terraform-plugin-framework v1.15.0 // indirect - github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 // indirect - github.com/hashicorp/terraform-plugin-go v0.28.0 // indirect - github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect - github.com/hashicorp/terraform-registry-address v0.2.5 // indirect - github.com/hashicorp/terraform-svchost v0.1.1 // indirect - github.com/hashicorp/yamux v0.1.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/go-testing-interface v1.14.1 // indirect - github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/oklog/run v1.1.0 // indirect - github.com/stackitcloud/stackit-sdk-go/core v0.17.2 // indirect - github.com/stackitcloud/stackit-sdk-go/services/authorization v0.7.0 // indirect - github.com/stackitcloud/stackit-sdk-go/services/cdn v1.2.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/dns v0.15.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/git v0.5.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/iaas v0.24.0 // indirect - github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.4.0 // indirect - github.com/stackitcloud/stackit-sdk-go/services/logme v0.24.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.24.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/modelserving v0.4.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.2.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/objectstorage v1.2.0 // indirect - github.com/stackitcloud/stackit-sdk-go/services/observability v0.7.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/opensearch v0.23.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/postgresflex v1.1.0 // indirect - github.com/stackitcloud/stackit-sdk-go/services/rabbitmq v0.24.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/redis v0.24.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.16.0 // indirect - github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.12.0 // indirect - github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.2.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.1.0 // indirect - github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.8.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.2.1 // indirect - github.com/stackitcloud/stackit-sdk-go/services/ske v0.27.0 // indirect - github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.2.0 // indirect - - github.com/stretchr/testify v1.9.0 // indirect - github.com/teambition/rrule-go v1.8.2 // indirect - github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect - github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect - github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/zclconf/go-cty v1.16.3 // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.41.0 // indirect - golang.org/x/oauth2 v0.29.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect - golang.org/x/tools v0.34.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/grpc v1.73.0 // indirect - google.golang.org/protobuf v1.36.6 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect -) diff --git a/provider/shim/go.sum b/provider/shim/go.sum deleted file mode 100644 index a1713ae1..00000000 --- a/provider/shim/go.sum +++ /dev/null @@ -1,137 +0,0 @@ -github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= -github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= -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/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-cty v1.5.0/go.mod h1:lFUCG5kd8exDobgSfyj4ONE/dc822kiYMguVKdHGMLM= -github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= -github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= -github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/terraform-plugin-framework v1.15.0/go.mod h1:hxrNI/GY32KPISpWqlCoTLM9JZsGH3CyYlir09bD/fI= -github.com/hashicorp/terraform-plugin-framework-validators v0.18.0/go.mod h1:lZvZvagw5hsJwuY7mAY6KUz45/U6fiDR0CzQAwWD0CA= -github.com/hashicorp/terraform-plugin-go v0.28.0/go.mod h1:FDa2Bb3uumkTGSkTFpWSOwWJDwA7bf3vdP3ltLDTH6o= -github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0/go.mod h1:QYmYnLfsosrxjCnGY1p9c7Zj6n9thnEE+7RObeYs3fA= -github.com/hashicorp/terraform-registry-address v0.2.5/go.mod h1:PpzXWINwB5kuVS5CA7m1+eO2f1jKb5ZDIxrOPfpnGkg= -github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= -github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0= -github.com/stackitcloud/stackit-sdk-go/services/authorization v0.7.0/go.mod h1:dJ19ZwFjp2bfC5ZobXV3vUdSpE3quUw3GuoFSKLpHIo= -github.com/stackitcloud/stackit-sdk-go/services/cdn v1.2.1/go.mod h1:yTZjDrpVbEuDMRcCK7PpXR1yz+O6NcNFAgxydT6eBYc= -github.com/stackitcloud/stackit-sdk-go/services/dns v0.15.1/go.mod h1:xhAdw016dY/hVsLerlExSMocqCc872+S0y1CdV3jAjU= -github.com/stackitcloud/stackit-sdk-go/services/git v0.5.1/go.mod h1:agI7SONeLR/IZL3TOgn1tDzfS63O2rWKQE8+huRjEzU= -github.com/stackitcloud/stackit-sdk-go/services/iaas v0.24.0/go.mod h1:TaMx7kukGpRm0BkNCmS7u2x12q1pgfbD55DAnLIjOIQ= -github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.4.0/go.mod h1:FiVhDlw9+yuTiUmnyGLn2qpsLW26w9OC4TS1y78czvg= -github.com/stackitcloud/stackit-sdk-go/services/logme v0.24.1/go.mod h1:XjDMHhAQogFXsVR+o138CPYG1FOe0/Nl2Vm+fAgzx2A= -github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.24.1/go.mod h1:Pb8IEV5/jP8k75dVcN5cn3kP7PHTy/4KXXKpG76oj4U= -github.com/stackitcloud/stackit-sdk-go/services/modelserving v0.4.1/go.mod h1:3p68DR66MNYgc2YcMF7B23MmySVShQ6g7f+7EkZfpPY= -github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.2.1/go.mod h1:U1Zf/S9IuDvRJq1tRKFT/bsJd4qxYzwtukqX3TL++Mw= -github.com/stackitcloud/stackit-sdk-go/services/objectstorage v1.2.0/go.mod h1:iCOYS9yICXQPyMAIdUGMqJDLY8HXKiVAdiMzO/mPvtA= -github.com/stackitcloud/stackit-sdk-go/services/observability v0.7.1/go.mod h1:+eNo7SEeVRuW7hgujSabSketScSUKGuC88UznPS+UTE= -github.com/stackitcloud/stackit-sdk-go/services/opensearch v0.23.1/go.mod h1:ifKKKCWL1U435fXGQ375SPX+burtfg1I7EGZ58COzRA= -github.com/stackitcloud/stackit-sdk-go/services/postgresflex v1.1.0/go.mod h1:4g/L5PHfz1xk3udEhvPy2nXiH4UgRO5Cj6iwUa7k5VQ= -github.com/stackitcloud/stackit-sdk-go/services/rabbitmq v0.24.1/go.mod h1:YL0l9l9xzJy2BmV+U9XkcXlQaHbE2KyA37GpGvBXIJ4= -github.com/stackitcloud/stackit-sdk-go/services/redis v0.24.1/go.mod h1:PAQH8+1DDGc6uibvC3nDtfRLu8uxutIr25mPJvrCOy8= -github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.16.0/go.mod h1:TBvZpbCju0Zmq8GoS4CEtUg2MqtdqWrGeEAOXwkJNQo= -github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.12.0/go.mod h1:iD7R3CNdLUDUyKP+lATsQy+V4QGMMOb15zPnNq4wnbs= -github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.2.1/go.mod h1:S/zLsdZvtPXDSYyl7h2GLHhsnVf6AzB96PdslPWevJI= -github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.1.0/go.mod h1:5F7/2BiKhrbvHD56mj5xR9qf8P0V2yMgeitmdIpQv4s= -github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.8.1/go.mod h1:t77MA8uyEU9KZd1On5JpnxI3xhVPKIS8WutStqvU8Cw= -github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.2.1/go.mod h1:M4xZ2BnmROvLV2MrAP6A8o9BnyT0CkvpEcP8lBOfRs8= -github.com/stackitcloud/stackit-sdk-go/services/ske v0.27.0/go.mod h1:V09NmPahuUiuZEogVPgxuVqqti0th5B7TVAjuiM09mE= -github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.2.0/go.mod h1:CyYJqR0tZWs2r5bGz69j4bmvhxdsd4QLCm1Uf+LouB0= -github.com/stackitcloud/terraform-provider-stackit v0.56.0/go.mod h1:uZ7G5NJhByxEMtrkkRB1RD/tz3mtBp4QErjFDtyKoOw= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/teambition/rrule-go v1.8.2/go.mod h1:Ieq5AbrKGciP1V//Wq8ktsTXwSwJHDD5mD/wLBGl3p4= -github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= -github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= -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/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=