diff --git a/Earthfile b/Earthfile index 0ca8276..f290450 100644 --- a/Earthfile +++ b/Earthfile @@ -2,7 +2,7 @@ VERSION 0.8 # tfgen builds the tfgen binary and nodejs TypeScript SDK tfgen: - FROM golang:1.24.2 + FROM golang:1.25.4 WORKDIR /go/src/git.kalinow.ski/nimbus/pulumi-incus/provider ENV WORKING_DIR=/go/src/git.kalinow.ski/nimbus/pulumi-incus # ENV PULUMI_HOME=$(WORKING_DIR)/.pulumi @@ -13,15 +13,15 @@ tfgen: ENV PULUMI_HOME=${WORKING_DIR}/.pulumi ENV PATH=${WORKING_DIR}/.pulumi/bin:$PATH RUN curl -fsSL https://get.pulumi.com | HOME=${WORKING_DIR} sh -s -- --version "$(cat .pulumi/version)" - RUN pulumi plugin install converter terraform 1.0.16 + RUN pulumi plugin install converter terraform 1.2.4 RUN go mod download - ENV PROVIDER_VERSION=1.0.0-beta.1 + ENV PROVIDER_VERSION=1.0.0-beta.2 ENV LDFLAGS_PROJ_VERSION="-X git.kalinow.ski/nimbus/pulumi-incus/provider/pkg/version.Version=${PROVIDER_VERSION}" ENV PULUMI_CONVERT=1 ENV PULUMI_CONVERT_EXAMPLES_CACHE_DIR=/go/src/git.kalinow.ski/nimbus/pulumi-incus/provider/.pulumi/examples-cache ENV PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION=1 ENV PULUMI_MISSING_DOCS_ERROR=false - + COPY --dir provider/resources.go provider/pkg . COPY provider/cmd/pulumi-tfgen-incus cmd/pulumi-tfgen-incus RUN echo '{}' > cmd/pulumi-resource-incus/bridge-metadata.json @@ -35,7 +35,7 @@ tfgen: # nodejs builds the nodejs SDK using the generated tfgen file nodejs: - FROM node:23-bookworm + FROM node:24-bookworm WORKDIR /root/sdk/nodejs RUN corepack enable pnpm COPY scripts/clean-package-json.js /bin @@ -50,7 +50,7 @@ nodejs: pnpm config set -g -- '//git.kalinow.ski/api/packages/kiterun/npm/:_authToken' "$TOKEN" && \ pnpm publish . && \ rm /root/.npmrc - + # provider builds and publishes the provider binaries provider: FROM +tfgen @@ -76,5 +76,5 @@ BINARY: RUN cd $WORKING_DIR/provider && GOOS=$GOOS GOARCH=$GOARCH CGO_ENABLED=0 go build \ -o ../bin/$GOOS-$GOARCH/pulumi-resource-incus -ldflags "${LDFLAGS_PROJ_VERSION} -s -w" \ git.kalinow.ski/nimbus/pulumi-incus/provider/cmd/pulumi-resource-incus - RUN cd $WORKING_DIR && tar --gzip -cf /root/dist/pulumi-resource-incus-v${PROVIDER_VERSION}-$GOOS-$GOARCH.tar.gz \ + RUN cd $WORKING_DIR && tar --gzip -cf /root/dist/pulumi-resource-incus-v${PROVIDER_VERSION}-$GOOS-$GOARCH.tar.gz \ README.md LICENSE -C bin/$GOOS-$GOARCH . diff --git a/examples/basic-ts/index.ts b/examples/basic-ts/index.ts index e24f217..24acf4a 100644 --- a/examples/basic-ts/index.ts +++ b/examples/basic-ts/index.ts @@ -1,9 +1,8 @@ -import * as pulumi from "@pulumi/pulumi"; import * as incus from "@kiterun/incus"; const resource = new incus.Instance("instance1", { name: "instance1", - image: "images:ubuntu/22.04", + image: "images:ubuntu/24.04", project: "default", config: { "limits.cpu": "4", diff --git a/examples/basic-ts/package.json b/examples/basic-ts/package.json index c7edbe8..2f8dd9d 100644 --- a/examples/basic-ts/package.json +++ b/examples/basic-ts/package.json @@ -1,13 +1,16 @@ { "name": "basic", "devDependencies": { - "@types/node": "^18.19.87" + "@types/node": "^24.1.0" }, "dependencies": { "@kiterun/incus": "1.0.0-beta.1", - "@pulumi/pulumi": "^3.165.0" + "@pulumi/pulumi": "^3.186.0" }, "pnpm": { - "overrides": {} - } + "overrides": { + "@kiterun/incus": "link:../../sdk/nodejs/bin" + } + }, + "packageManager": "pnpm@10.23.0+sha512.21c4e5698002ade97e4efe8b8b4a89a8de3c85a37919f957e7a0f30f38fbc5bbdd05980ffe29179b2fb6e6e691242e098d945d1601772cad0fef5fb6411e2a4b" } diff --git a/provider/go.mod b/provider/go.mod index ff58eea..de116fe 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -1,19 +1,16 @@ module git.kalinow.ski/nimbus/pulumi-incus/provider -go 1.23.7 - -toolchain go1.24.2 +go 1.25.5 replace github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20250221232320-8d4cfd37a3cd replace github.com/lxc/terraform-provider-incus/shim => ./shim require ( - github.com/lxc/terraform-provider-incus/shim v0.0.0-00010101000000-000000000000 + github.com/lxc/terraform-provider-incus/shim v1.0.0 github.com/pulumi/pulumi-terraform-bridge/v3 v3.106.0 github.com/pulumi/pulumi/pkg/v3 v3.160.0 github.com/pulumi/pulumi/sdk/v3 v3.160.0 - ) require ( diff --git a/provider/shim/go.mod b/provider/shim/go.mod index 3a81ea3..0affc51 100644 --- a/provider/shim/go.mod +++ b/provider/shim/go.mod @@ -1,49 +1,73 @@ module github.com/lxc/terraform-provider-incus/shim -go 1.23.7 +go 1.25.5 -require github.com/hashicorp/terraform-plugin-sdk/v2 v2.36.1 // indirect +require github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 // indirect require ( - github.com/hashicorp/terraform-plugin-framework v1.14.1 - github.com/lxc/terraform-provider-incus v0.3.1 + github.com/hashicorp/terraform-plugin-framework v1.16.1 + github.com/lxc/terraform-provider-incus v1.0.1 ) require ( + github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect + github.com/apex/log v1.9.0 // indirect + github.com/blang/semver/v4 v4.0.0 // indirect + github.com/containerd/log v0.1.0 // indirect + github.com/containerd/platforms v0.2.1 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect + github.com/cyphar/filepath-securejoin v0.6.1 // indirect + github.com/docker/go-units v0.5.0 // indirect github.com/fatih/color v1.18.0 // indirect - github.com/go-jose/go-jose/v4 v4.0.5 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/flosch/pongo2/v6 v6.0.0 // indirect + github.com/go-jose/go-jose/v4 v4.1.3 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/securecookie v1.1.2 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect - github.com/hashicorp/terraform-plugin-framework-validators v0.17.0 // indirect - github.com/hashicorp/terraform-plugin-go v0.26.0 // indirect + github.com/hashicorp/go-version v1.8.0 // indirect + github.com/hashicorp/terraform-plugin-framework-validators v0.19.0 // indirect + github.com/hashicorp/terraform-plugin-go v0.29.0 // indirect github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect + github.com/klauspost/compress v1.18.1 // indirect + github.com/klauspost/pgzip v1.2.6 // indirect github.com/kr/fs v0.1.0 // indirect - github.com/lxc/incus/v6 v6.11.0 // indirect + github.com/lxc/incus/v6 v6.19.1 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/moby/sys/user v0.4.0 // indirect + github.com/moby/sys/userns v0.1.0 // indirect github.com/muhlemmer/gu v0.3.1 // indirect - github.com/pkg/sftp v1.13.9 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect + github.com/opencontainers/runtime-spec v1.3.0 // indirect + github.com/opencontainers/umoci v0.6.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pkg/sftp v1.13.10 // indirect + github.com/pkg/xattr v0.4.12 // indirect + github.com/rootless-containers/proto/go-proto v0.0.0-20230421021042-4cd87ebadd67 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect + github.com/urfave/cli v1.22.17 // indirect + github.com/vbatts/go-mtree v0.6.1-0.20250911112631-8307d76bc1b9 // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/zitadel/logging v0.6.2 // indirect - github.com/zitadel/oidc/v3 v3.37.0 // indirect + github.com/zitadel/oidc/v3 v3.45.0 // indirect github.com/zitadel/schema v1.3.1 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect - golang.org/x/crypto v0.36.0 // indirect - golang.org/x/oauth2 v0.28.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/term v0.30.0 // indirect - golang.org/x/text v0.23.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect + golang.org/x/crypto v0.45.0 // indirect + golang.org/x/oauth2 v0.33.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/provider/shim/go.sum b/provider/shim/go.sum index 536b27f..483d66b 100644 --- a/provider/shim/go.sum +++ b/provider/shim/go.sum @@ -1,38 +1,69 @@ +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/apex/log v1.9.0 h1:FHtw/xuaM8AgmvDDTI9fiwoAL25Sq2cxojnZICUU8l0= +github.com/apex/log v1.9.0/go.mod h1:m82fZlWIuiWzWP04XCTXmnX0xRkYYbCdYn8jbJeLBEA= +github.com/apex/logs v1.0.0/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= +github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= +github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= 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/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR5wKP38= -github.com/bmatcuk/doublestar/v4 v4.8.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= -github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= -github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bmatcuk/doublestar/v4 v4.9.1 h1:X8jg9rRZmJd4yRy7ZeNDRnM+T3ZfHv15JiBJ/avrEXE= +github.com/bmatcuk/doublestar/v4 v4.9.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +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/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= +github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= +github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= +github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= +github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustinkirkland/golang-petname v0.0.0-20240428194347-eebcea082ee0 h1:aYo8nnk3ojoQkP5iErif5Xxv0Mo0Ga/FR5+ffl/7+Nk= github.com/dustinkirkland/golang-petname v0.0.0-20240428194347-eebcea082ee0/go.mod h1:8AuBTZBRSFqEYBPYULd+NN474/zZBLP+6WeT5S9xlAc= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= -github.com/go-chi/chi/v5 v5.2.1 h1:KOIHODQj58PmL80G2Eak4WdvUzjSJSm0vG72crDCqb8= -github.com/go-chi/chi/v5 v5.2.1/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= -github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= -github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +github.com/flosch/pongo2/v6 v6.0.0 h1:lsGru8IAzHgIAw6H2m4PCyleO58I40ow6apih0WprMU= +github.com/flosch/pongo2/v6 v6.0.0/go.mod h1:CuDpFm47R0uGGE7z13/tTlt1Y6zdxvr2RLT5LJhsHEU= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-chi/chi/v5 v5.2.3 h1:WQIt9uxdsAbgIYgid+BpYc+liqQZGMHRaUwp0JUcvdE= +github.com/go-chi/chi/v5 v5.2.3/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= +github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= +github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA= @@ -51,62 +82,78 @@ github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB1 github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= -github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= +github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshfk+mA= +github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hc-install v0.9.1 h1:gkqTfE3vVbafGQo6VZXcy2v5yoz2bE0+nhZXruCuODQ= -github.com/hashicorp/hc-install v0.9.1/go.mod h1:pWWvN/IrfeBK4XPeXXYkL6EjMufHkCK5DvwxeLKuBf0= -github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= -github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4= +github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/hc-install v0.9.2 h1:v80EtNX4fCVHqzL9Lg/2xkp62bbvQMnvPQ0G+OmtO24= +github.com/hashicorp/hc-install v0.9.2/go.mod h1:XUqBQNnuT4RsxoxiM9ZaUk0NX8hi2h+Lb6/c0OZnC/I= +github.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQxvE= +github.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/terraform-exec v0.22.0 h1:G5+4Sz6jYZfRYUCg6eQgDsqTzkNXV+fP8l+uRmZHj64= -github.com/hashicorp/terraform-exec v0.22.0/go.mod h1:bjVbsncaeh8jVdhttWYZuBGj21FcYw6Ia/XfHcNO7lQ= -github.com/hashicorp/terraform-json v0.24.0 h1:rUiyF+x1kYawXeRth6fKFm/MdfBS6+lW4NbeATsYz8Q= -github.com/hashicorp/terraform-json v0.24.0/go.mod h1:Nfj5ubo9xbu9uiAoZVBsNOjvNKB66Oyrvtit74kC7ow= -github.com/hashicorp/terraform-plugin-framework v1.14.1 h1:jaT1yvU/kEKEsxnbrn4ZHlgcxyIfjvZ41BLdlLk52fY= -github.com/hashicorp/terraform-plugin-framework v1.14.1/go.mod h1:xNUKmvTs6ldbwTuId5euAtg37dTxuyj3LHS3uj7BHQ4= -github.com/hashicorp/terraform-plugin-framework-validators v0.17.0 h1:0uYQcqqgW3BMyyve07WJgpKorXST3zkpzvrOnf3mpbg= -github.com/hashicorp/terraform-plugin-framework-validators v0.17.0/go.mod h1:VwdfgE/5Zxm43flraNa0VjcvKQOGVrcO4X8peIri0T0= -github.com/hashicorp/terraform-plugin-go v0.26.0 h1:cuIzCv4qwigug3OS7iKhpGAbZTiypAfFQmw8aE65O2M= -github.com/hashicorp/terraform-plugin-go v0.26.0/go.mod h1:+CXjuLDiFgqR+GcrM5a2E2Kal5t5q2jb0E3D57tTdNY= +github.com/hashicorp/terraform-exec v0.23.1 h1:diK5NSSDXDKqHEOIQefBMu9ny+FhzwlwV0xgUTB7VTo= +github.com/hashicorp/terraform-exec v0.23.1/go.mod h1:e4ZEg9BJDRaSalGm2z8vvrPONt0XWG0/tXpmzYTf+dM= +github.com/hashicorp/terraform-json v0.27.1 h1:zWhEracxJW6lcjt/JvximOYyc12pS/gaKSy/wzzE7nY= +github.com/hashicorp/terraform-json v0.27.1/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE= +github.com/hashicorp/terraform-plugin-framework v1.16.1 h1:1+zwFm3MEqd/0K3YBB2v9u9DtyYHyEuhVOfeIXbteWA= +github.com/hashicorp/terraform-plugin-framework v1.16.1/go.mod h1:0xFOxLy5lRzDTayc4dzK/FakIgBhNf/lC4499R9cV4Y= +github.com/hashicorp/terraform-plugin-framework-validators v0.19.0 h1:Zz3iGgzxe/1XBkooZCewS0nJAaCFPFPHdNJd8FgE4Ow= +github.com/hashicorp/terraform-plugin-framework-validators v0.19.0/go.mod h1:GBKTNGbGVJohU03dZ7U8wHqc2zYnMUawgCN+gC0itLc= +github.com/hashicorp/terraform-plugin-go v0.29.0 h1:1nXKl/nSpaYIUBU1IG/EsDOX0vv+9JxAltQyDMpq5mU= +github.com/hashicorp/terraform-plugin-go v0.29.0/go.mod h1:vYZbIyvxyy0FWSmDHChCqKvI40cFTDGSb3D8D70i9GM= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.36.1 h1:WNMsTLkZf/3ydlgsuXePa3jvZFwAJhruxTxP/c1Viuw= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.36.1/go.mod h1:P6o64QS97plG44iFzSM6rAn6VJIC/Sy9a9IkEtl79K4= -github.com/hashicorp/terraform-plugin-testing v1.12.0 h1:tpIe+T5KBkA1EO6aT704SPLedHUo55RenguLHcaSBdI= -github.com/hashicorp/terraform-plugin-testing v1.12.0/go.mod h1:jbDQUkT9XRjAh1Bvyufq+PEH1Xs4RqIdpOQumSgSXBM= -github.com/hashicorp/terraform-registry-address v0.2.4 h1:JXu/zHB2Ymg/TGVCRu10XqNa4Sh2bWcqCNyKWjnCPJA= -github.com/hashicorp/terraform-registry-address v0.2.4/go.mod h1:tUNYTVyCtU4OIGXXMDp7WNcJ+0W1B4nmstVDgHMjfAU= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 h1:mlAq/OrMlg04IuJT7NpefI1wwtdpWudnEmjuQs04t/4= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1/go.mod h1:GQhpKVvvuwzD79e8/NZ+xzj+ZpWovdPAe8nfV/skwNU= +github.com/hashicorp/terraform-plugin-testing v1.13.3 h1:QLi/khB8Z0a5L54AfPrHukFpnwsGL8cwwswj4RZduCo= +github.com/hashicorp/terraform-plugin-testing v1.13.3/go.mod h1:WHQ9FDdiLoneey2/QHpGM/6SAYf4A7AZazVg7230pLE= +github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk= +github.com/hashicorp/terraform-registry-address v0.4.0/go.mod h1:LRS1Ay0+mAiRkUyltGT+UHWkIqTFvigGn/LbMshfflE= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/jeremija/gosubmit v0.2.8 h1:mmSITBz9JxVtu8eqbN+zmmwX7Ij2RidQxhcwRVI4wqA= github.com/jeremija/gosubmit v0.2.8/go.mod h1:Ui+HS073lCFREXBbdfrJzMB57OI/bdxTiLtrDHHhFPI= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= +github.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co= +github.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0= +github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= +github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/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/lxc/incus/v6 v6.11.0 h1:p+O5XFZ4K61A6h7tH74+KlPC+f8NPMqw59i9mH1W1oM= -github.com/lxc/incus/v6 v6.11.0/go.mod h1:nuqbxYAx0brbbRho062fXnpQv3viEo37wnJlfnKEHqU= -github.com/lxc/terraform-provider-incus v0.3.1 h1:JIslQ3efXoaL8LqIUu4RdfLM0cgn4ofLuGhon4s8gB4= -github.com/lxc/terraform-provider-incus v0.3.1/go.mod h1:e67wjHqKsKQByukxI1kInYcYJEJpW+WqvHsmOkTyVII= +github.com/lxc/incus/v6 v6.19.1 h1:p5RKNY8iGb+C9ud2pPwHKNBk/8eGyrT6xisZPGSx3DU= +github.com/lxc/incus/v6 v6.19.1/go.mod h1:huGl4lNtU6dVDiBldgxdRE1tazIygpV69DCV/22mJa8= +github.com/lxc/terraform-provider-incus v1.0.1 h1:DhkFVDCnYLCS1QgFCTZdyBAwABlZ9aWffbA1lJiOeao= +github.com/lxc/terraform-provider-incus v1.0.1/go.mod h1:GlRQlBvayauVGcuQMFJ3dxgXIEGDerWGnHgUhQ8ULIA= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= 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 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= 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 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -119,154 +166,161 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= +github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= +github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/muhlemmer/gu v0.3.1 h1:7EAqmFrW7n3hETvuAdmFmn4hS8W+z3LgKtrnow+YzNM= github.com/muhlemmer/gu v0.3.1/go.mod h1:YHtHR+gxM+bKEIIs7Hmi9sPT3ZDUvTN/i88wQpZkrdM= github.com/muhlemmer/httpforwarded v0.1.0 h1:x4DLrzXdliq8mprgUMR0olDvHGkou5BJsK/vWUetyzY= github.com/muhlemmer/httpforwarded v0.1.0/go.mod h1:yo9czKedo2pdZhoXe+yDkGVbU0TJ0q9oQ90BVoDEtw0= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= -github.com/pkg/sftp v1.13.9 h1:4NGkvGudBL7GteO3m6qnaQ4pC0Kvf0onSVc9gR3EWBw= -github.com/pkg/sftp v1.13.9/go.mod h1:OBN7bVXdstkFFN/gdnHPUb5TE8eb8G1Rp9wCItqjkkA= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= +github.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg= +github.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/umoci v0.6.0 h1:Dsm4beJpglN5y2E2EUSZZcNey4Ml4+nKepvwLQwgIec= +github.com/opencontainers/umoci v0.6.0/go.mod h1:2DS3cxVN9pRJGYaCK5mnmmwVKV5vd9r6HIYAV0IvdbI= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.13.10 h1:+5FbKNTe5Z9aspU88DPIKJ9z2KZoaGCu6Sr6kKR/5mU= +github.com/pkg/sftp v1.13.10/go.mod h1:bJ1a7uDhrX/4OII+agvy28lzRvQrmIQuaHrcI1HbeGA= +github.com/pkg/xattr v0.4.12 h1:rRTkSyFNTRElv6pkA3zpjHpQ90p/OdHQC1GmGh1aTjM= +github.com/pkg/xattr v0.4.12/go.mod h1:di8WF84zAKk8jzR1UBTEWh9AUlIZZ7M/JNt8e9B6ktU= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +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/rootless-containers/proto/go-proto v0.0.0-20230421021042-4cd87ebadd67 h1:58jvc5cZ+hGKidQ4Z37/+rj9eQxRRjOOsqNEwPSZXR4= +github.com/rootless-containers/proto/go-proto v0.0.0-20230421021042-4cd87ebadd67/go.mod h1:LLjEAc6zmycfeN7/1fxIphWQPjHpTt7ElqT7eVf8e4A= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= +github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk= +github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk= +github.com/tj/go-buffer v1.1.0/go.mod h1:iyiJpfFcR2B9sXu7KvjbT9fpM4mOelRSDTbntVj52Uc= +github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= +github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= +github.com/urfave/cli v1.22.17 h1:SYzXoiPfQjHBbkYxbew5prZHS1TOLT3ierW8SYLqtVQ= +github.com/urfave/cli v1.22.17/go.mod h1:b0ht0aqgH/6pBYzzxURyrM4xXNgsoT/n2ZzwQiEhNVo= +github.com/vbatts/go-mtree v0.6.1-0.20250911112631-8307d76bc1b9 h1:R6l9BtUe83abUGu1YKGkfa17wMMFLt6mhHVQ8MxpfRE= +github.com/vbatts/go-mtree v0.6.1-0.20250911112631-8307d76bc1b9/go.mod h1:W7bcG9PCn6lFY+ljGlZxx9DONkxL3v8a7HyN+PrSrjA= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= 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.2 h1:LAJSwc3v81IRBZyUVQDUdZ7hs3SYs9jv0eZJDWHD/70= -github.com/zclconf/go-cty v1.16.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0= +github.com/zclconf/go-cty v1.17.0/go.mod h1:wqFzcImaLTI6A5HfsRwB0nj5n0MRZFwmey8YoFPPs3U= github.com/zitadel/logging v0.6.2 h1:MW2kDDR0ieQynPZ0KIZPrh9ote2WkxfBif5QoARDQcU= github.com/zitadel/logging v0.6.2/go.mod h1:z6VWLWUkJpnNVDSLzrPSQSQyttysKZ6bCRongw0ROK4= -github.com/zitadel/oidc/v3 v3.37.0 h1:nYATWlnP7f18XiAbw6upUruBaqfB1kUrXrSTf1EYGO8= -github.com/zitadel/oidc/v3 v3.37.0/go.mod h1:/xDan4OUQhguJ4Ur73OOJrtugvR164OMnidXP9xfVNw= +github.com/zitadel/oidc/v3 v3.45.0 h1:SaVJ2kdcJi/zdEWWlAns+81VxmfdYX4E+2mWFVIH7Ec= +github.com/zitadel/oidc/v3 v3.45.0/go.mod h1:UeK0iVOoqfMuDVgSfv56BqTz8YQC2M+tGRIXZ7Ii3VY= github.com/zitadel/schema v1.3.1 h1:QT3kwiRIRXXLVAs6gCK/u044WmUVh6IlbLXUsn6yRQU= github.com/zitadel/schema v1.3.1/go.mod h1:071u7D2LQacy1HAN+YnMd/mx1qVE2isb0Mjeqg46xnU= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= 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/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +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.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= -golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= -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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/oauth2 v0.33.0 h1:4Q+qn+E5z8gPRJfmRy7C2gGG3T4jIprK6aSYgTXGRpo= +golang.org/x/oauth2 v0.33.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-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-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-20220408201424-a24fb2fb8a0f/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= -golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= 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.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= -golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846 h1:Wgl1rcDNThT+Zn47YyCXOXyX/COgMTIdhJ717F0l4xk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-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/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.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.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/sdk/go.mod b/sdk/go.mod index 95eae29..7a76931 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -1,8 +1,6 @@ -module github.com/pulumi/pulumi-xyz/sdk +module git.kalinow.ski/nimbus/pulumi-incus/sdk -go 1.22 - -toolchain go1.22.11 +go 1.25.4 require ( github.com/blang/semver v3.5.1+incompatible diff --git a/sdk/go/Pulumi.yaml b/sdk/go/Pulumi.yaml new file mode 100644 index 0000000..e69de29 diff --git a/sdk/go/incus/certificate.go b/sdk/go/incus/certificate.go new file mode 100644 index 0000000..f40879d --- /dev/null +++ b/sdk/go/incus/certificate.go @@ -0,0 +1,334 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## # Certificate +// +// Manages an Incus certificate. +type Certificate struct { + pulumi.CustomResourceState + + // **Required** - The certificate. + Certificate pulumi.StringOutput `pulumi:"certificate"` + // *Optional* - Description of the certificate. + Description pulumi.StringOutput `pulumi:"description"` + // The fingerprint of the certificate. + Fingerprint pulumi.StringOutput `pulumi:"fingerprint"` + // **Required** - Name of the certificate. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - List of projects to restrict the certificate to. + Projects pulumi.StringArrayOutput `pulumi:"projects"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // *Optional* - Restrict the certificate to one or more projects. + Restricted pulumi.BoolOutput `pulumi:"restricted"` + // *Optional* - The type of certificate to create. Can be one of: client, + // or metrics. If no type is specified, a client certificate is created. + Type pulumi.StringOutput `pulumi:"type"` +} + +// NewCertificate registers a new resource with the given unique name, arguments, and options. +func NewCertificate(ctx *pulumi.Context, + name string, args *CertificateArgs, opts ...pulumi.ResourceOption) (*Certificate, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Certificate == nil { + return nil, errors.New("invalid value for required argument 'Certificate'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Certificate + err := ctx.RegisterResource("incus:index/certificate:Certificate", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetCertificate gets an existing Certificate resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetCertificate(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *CertificateState, opts ...pulumi.ResourceOption) (*Certificate, error) { + var resource Certificate + err := ctx.ReadResource("incus:index/certificate:Certificate", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Certificate resources. +type certificateState struct { + // **Required** - The certificate. + Certificate *string `pulumi:"certificate"` + // *Optional* - Description of the certificate. + Description *string `pulumi:"description"` + // The fingerprint of the certificate. + Fingerprint *string `pulumi:"fingerprint"` + // **Required** - Name of the certificate. + Name *string `pulumi:"name"` + // *Optional* - List of projects to restrict the certificate to. + Projects []string `pulumi:"projects"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Restrict the certificate to one or more projects. + Restricted *bool `pulumi:"restricted"` + // *Optional* - The type of certificate to create. Can be one of: client, + // or metrics. If no type is specified, a client certificate is created. + Type *string `pulumi:"type"` +} + +type CertificateState struct { + // **Required** - The certificate. + Certificate pulumi.StringPtrInput + // *Optional* - Description of the certificate. + Description pulumi.StringPtrInput + // The fingerprint of the certificate. + Fingerprint pulumi.StringPtrInput + // **Required** - Name of the certificate. + Name pulumi.StringPtrInput + // *Optional* - List of projects to restrict the certificate to. + Projects pulumi.StringArrayInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Restrict the certificate to one or more projects. + Restricted pulumi.BoolPtrInput + // *Optional* - The type of certificate to create. Can be one of: client, + // or metrics. If no type is specified, a client certificate is created. + Type pulumi.StringPtrInput +} + +func (CertificateState) ElementType() reflect.Type { + return reflect.TypeOf((*certificateState)(nil)).Elem() +} + +type certificateArgs struct { + // **Required** - The certificate. + Certificate string `pulumi:"certificate"` + // *Optional* - Description of the certificate. + Description *string `pulumi:"description"` + // **Required** - Name of the certificate. + Name *string `pulumi:"name"` + // *Optional* - List of projects to restrict the certificate to. + Projects []string `pulumi:"projects"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Restrict the certificate to one or more projects. + Restricted *bool `pulumi:"restricted"` + // *Optional* - The type of certificate to create. Can be one of: client, + // or metrics. If no type is specified, a client certificate is created. + Type *string `pulumi:"type"` +} + +// The set of arguments for constructing a Certificate resource. +type CertificateArgs struct { + // **Required** - The certificate. + Certificate pulumi.StringInput + // *Optional* - Description of the certificate. + Description pulumi.StringPtrInput + // **Required** - Name of the certificate. + Name pulumi.StringPtrInput + // *Optional* - List of projects to restrict the certificate to. + Projects pulumi.StringArrayInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Restrict the certificate to one or more projects. + Restricted pulumi.BoolPtrInput + // *Optional* - The type of certificate to create. Can be one of: client, + // or metrics. If no type is specified, a client certificate is created. + Type pulumi.StringPtrInput +} + +func (CertificateArgs) ElementType() reflect.Type { + return reflect.TypeOf((*certificateArgs)(nil)).Elem() +} + +type CertificateInput interface { + pulumi.Input + + ToCertificateOutput() CertificateOutput + ToCertificateOutputWithContext(ctx context.Context) CertificateOutput +} + +func (*Certificate) ElementType() reflect.Type { + return reflect.TypeOf((**Certificate)(nil)).Elem() +} + +func (i *Certificate) ToCertificateOutput() CertificateOutput { + return i.ToCertificateOutputWithContext(context.Background()) +} + +func (i *Certificate) ToCertificateOutputWithContext(ctx context.Context) CertificateOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificateOutput) +} + +// CertificateArrayInput is an input type that accepts CertificateArray and CertificateArrayOutput values. +// You can construct a concrete instance of `CertificateArrayInput` via: +// +// CertificateArray{ CertificateArgs{...} } +type CertificateArrayInput interface { + pulumi.Input + + ToCertificateArrayOutput() CertificateArrayOutput + ToCertificateArrayOutputWithContext(context.Context) CertificateArrayOutput +} + +type CertificateArray []CertificateInput + +func (CertificateArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Certificate)(nil)).Elem() +} + +func (i CertificateArray) ToCertificateArrayOutput() CertificateArrayOutput { + return i.ToCertificateArrayOutputWithContext(context.Background()) +} + +func (i CertificateArray) ToCertificateArrayOutputWithContext(ctx context.Context) CertificateArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificateArrayOutput) +} + +// CertificateMapInput is an input type that accepts CertificateMap and CertificateMapOutput values. +// You can construct a concrete instance of `CertificateMapInput` via: +// +// CertificateMap{ "key": CertificateArgs{...} } +type CertificateMapInput interface { + pulumi.Input + + ToCertificateMapOutput() CertificateMapOutput + ToCertificateMapOutputWithContext(context.Context) CertificateMapOutput +} + +type CertificateMap map[string]CertificateInput + +func (CertificateMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Certificate)(nil)).Elem() +} + +func (i CertificateMap) ToCertificateMapOutput() CertificateMapOutput { + return i.ToCertificateMapOutputWithContext(context.Background()) +} + +func (i CertificateMap) ToCertificateMapOutputWithContext(ctx context.Context) CertificateMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(CertificateMapOutput) +} + +type CertificateOutput struct{ *pulumi.OutputState } + +func (CertificateOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Certificate)(nil)).Elem() +} + +func (o CertificateOutput) ToCertificateOutput() CertificateOutput { + return o +} + +func (o CertificateOutput) ToCertificateOutputWithContext(ctx context.Context) CertificateOutput { + return o +} + +// **Required** - The certificate. +func (o CertificateOutput) Certificate() pulumi.StringOutput { + return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Certificate }).(pulumi.StringOutput) +} + +// *Optional* - Description of the certificate. +func (o CertificateOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// The fingerprint of the certificate. +func (o CertificateOutput) Fingerprint() pulumi.StringOutput { + return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Fingerprint }).(pulumi.StringOutput) +} + +// **Required** - Name of the certificate. +func (o CertificateOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - List of projects to restrict the certificate to. +func (o CertificateOutput) Projects() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Certificate) pulumi.StringArrayOutput { return v.Projects }).(pulumi.StringArrayOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o CertificateOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// *Optional* - Restrict the certificate to one or more projects. +func (o CertificateOutput) Restricted() pulumi.BoolOutput { + return o.ApplyT(func(v *Certificate) pulumi.BoolOutput { return v.Restricted }).(pulumi.BoolOutput) +} + +// *Optional* - The type of certificate to create. Can be one of: client, +// or metrics. If no type is specified, a client certificate is created. +func (o CertificateOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput) +} + +type CertificateArrayOutput struct{ *pulumi.OutputState } + +func (CertificateArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Certificate)(nil)).Elem() +} + +func (o CertificateArrayOutput) ToCertificateArrayOutput() CertificateArrayOutput { + return o +} + +func (o CertificateArrayOutput) ToCertificateArrayOutputWithContext(ctx context.Context) CertificateArrayOutput { + return o +} + +func (o CertificateArrayOutput) Index(i pulumi.IntInput) CertificateOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Certificate { + return vs[0].([]*Certificate)[vs[1].(int)] + }).(CertificateOutput) +} + +type CertificateMapOutput struct{ *pulumi.OutputState } + +func (CertificateMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Certificate)(nil)).Elem() +} + +func (o CertificateMapOutput) ToCertificateMapOutput() CertificateMapOutput { + return o +} + +func (o CertificateMapOutput) ToCertificateMapOutputWithContext(ctx context.Context) CertificateMapOutput { + return o +} + +func (o CertificateMapOutput) MapIndex(k pulumi.StringInput) CertificateOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Certificate { + return vs[0].(map[string]*Certificate)[vs[1].(string)] + }).(CertificateOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*CertificateInput)(nil)).Elem(), &Certificate{}) + pulumi.RegisterInputType(reflect.TypeOf((*CertificateArrayInput)(nil)).Elem(), CertificateArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*CertificateMapInput)(nil)).Elem(), CertificateMap{}) + pulumi.RegisterOutputType(CertificateOutput{}) + pulumi.RegisterOutputType(CertificateArrayOutput{}) + pulumi.RegisterOutputType(CertificateMapOutput{}) +} diff --git a/sdk/go/incus/clusterGroup.go b/sdk/go/incus/clusterGroup.go new file mode 100644 index 0000000..b5f22b8 --- /dev/null +++ b/sdk/go/incus/clusterGroup.go @@ -0,0 +1,265 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type ClusterGroup struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // [cluster group config settings](https://linuxcontainers.org/incus/docs/main/howto/cluster_groups/#configuration-options). + Config pulumi.StringMapOutput `pulumi:"config"` + Description pulumi.StringOutput `pulumi:"description"` + // **Required** - Name of the cluster group. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` +} + +// NewClusterGroup registers a new resource with the given unique name, arguments, and options. +func NewClusterGroup(ctx *pulumi.Context, + name string, args *ClusterGroupArgs, opts ...pulumi.ResourceOption) (*ClusterGroup, error) { + if args == nil { + args = &ClusterGroupArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource ClusterGroup + err := ctx.RegisterResource("incus:index/clusterGroup:ClusterGroup", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetClusterGroup gets an existing ClusterGroup resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetClusterGroup(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ClusterGroupState, opts ...pulumi.ResourceOption) (*ClusterGroup, error) { + var resource ClusterGroup + err := ctx.ReadResource("incus:index/clusterGroup:ClusterGroup", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ClusterGroup resources. +type clusterGroupState struct { + // *Optional* - Map of key/value pairs of + // [cluster group config settings](https://linuxcontainers.org/incus/docs/main/howto/cluster_groups/#configuration-options). + Config map[string]string `pulumi:"config"` + Description *string `pulumi:"description"` + // **Required** - Name of the cluster group. + Name *string `pulumi:"name"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +type ClusterGroupState struct { + // *Optional* - Map of key/value pairs of + // [cluster group config settings](https://linuxcontainers.org/incus/docs/main/howto/cluster_groups/#configuration-options). + Config pulumi.StringMapInput + Description pulumi.StringPtrInput + // **Required** - Name of the cluster group. + Name pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (ClusterGroupState) ElementType() reflect.Type { + return reflect.TypeOf((*clusterGroupState)(nil)).Elem() +} + +type clusterGroupArgs struct { + // *Optional* - Map of key/value pairs of + // [cluster group config settings](https://linuxcontainers.org/incus/docs/main/howto/cluster_groups/#configuration-options). + Config map[string]string `pulumi:"config"` + Description *string `pulumi:"description"` + // **Required** - Name of the cluster group. + Name *string `pulumi:"name"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// The set of arguments for constructing a ClusterGroup resource. +type ClusterGroupArgs struct { + // *Optional* - Map of key/value pairs of + // [cluster group config settings](https://linuxcontainers.org/incus/docs/main/howto/cluster_groups/#configuration-options). + Config pulumi.StringMapInput + Description pulumi.StringPtrInput + // **Required** - Name of the cluster group. + Name pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (ClusterGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*clusterGroupArgs)(nil)).Elem() +} + +type ClusterGroupInput interface { + pulumi.Input + + ToClusterGroupOutput() ClusterGroupOutput + ToClusterGroupOutputWithContext(ctx context.Context) ClusterGroupOutput +} + +func (*ClusterGroup) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterGroup)(nil)).Elem() +} + +func (i *ClusterGroup) ToClusterGroupOutput() ClusterGroupOutput { + return i.ToClusterGroupOutputWithContext(context.Background()) +} + +func (i *ClusterGroup) ToClusterGroupOutputWithContext(ctx context.Context) ClusterGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterGroupOutput) +} + +// ClusterGroupArrayInput is an input type that accepts ClusterGroupArray and ClusterGroupArrayOutput values. +// You can construct a concrete instance of `ClusterGroupArrayInput` via: +// +// ClusterGroupArray{ ClusterGroupArgs{...} } +type ClusterGroupArrayInput interface { + pulumi.Input + + ToClusterGroupArrayOutput() ClusterGroupArrayOutput + ToClusterGroupArrayOutputWithContext(context.Context) ClusterGroupArrayOutput +} + +type ClusterGroupArray []ClusterGroupInput + +func (ClusterGroupArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ClusterGroup)(nil)).Elem() +} + +func (i ClusterGroupArray) ToClusterGroupArrayOutput() ClusterGroupArrayOutput { + return i.ToClusterGroupArrayOutputWithContext(context.Background()) +} + +func (i ClusterGroupArray) ToClusterGroupArrayOutputWithContext(ctx context.Context) ClusterGroupArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterGroupArrayOutput) +} + +// ClusterGroupMapInput is an input type that accepts ClusterGroupMap and ClusterGroupMapOutput values. +// You can construct a concrete instance of `ClusterGroupMapInput` via: +// +// ClusterGroupMap{ "key": ClusterGroupArgs{...} } +type ClusterGroupMapInput interface { + pulumi.Input + + ToClusterGroupMapOutput() ClusterGroupMapOutput + ToClusterGroupMapOutputWithContext(context.Context) ClusterGroupMapOutput +} + +type ClusterGroupMap map[string]ClusterGroupInput + +func (ClusterGroupMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ClusterGroup)(nil)).Elem() +} + +func (i ClusterGroupMap) ToClusterGroupMapOutput() ClusterGroupMapOutput { + return i.ToClusterGroupMapOutputWithContext(context.Background()) +} + +func (i ClusterGroupMap) ToClusterGroupMapOutputWithContext(ctx context.Context) ClusterGroupMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterGroupMapOutput) +} + +type ClusterGroupOutput struct{ *pulumi.OutputState } + +func (ClusterGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterGroup)(nil)).Elem() +} + +func (o ClusterGroupOutput) ToClusterGroupOutput() ClusterGroupOutput { + return o +} + +func (o ClusterGroupOutput) ToClusterGroupOutputWithContext(ctx context.Context) ClusterGroupOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// [cluster group config settings](https://linuxcontainers.org/incus/docs/main/howto/cluster_groups/#configuration-options). +func (o ClusterGroupOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *ClusterGroup) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +func (o ClusterGroupOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *ClusterGroup) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// **Required** - Name of the cluster group. +func (o ClusterGroupOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *ClusterGroup) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o ClusterGroupOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterGroup) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +type ClusterGroupArrayOutput struct{ *pulumi.OutputState } + +func (ClusterGroupArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ClusterGroup)(nil)).Elem() +} + +func (o ClusterGroupArrayOutput) ToClusterGroupArrayOutput() ClusterGroupArrayOutput { + return o +} + +func (o ClusterGroupArrayOutput) ToClusterGroupArrayOutputWithContext(ctx context.Context) ClusterGroupArrayOutput { + return o +} + +func (o ClusterGroupArrayOutput) Index(i pulumi.IntInput) ClusterGroupOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ClusterGroup { + return vs[0].([]*ClusterGroup)[vs[1].(int)] + }).(ClusterGroupOutput) +} + +type ClusterGroupMapOutput struct{ *pulumi.OutputState } + +func (ClusterGroupMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ClusterGroup)(nil)).Elem() +} + +func (o ClusterGroupMapOutput) ToClusterGroupMapOutput() ClusterGroupMapOutput { + return o +} + +func (o ClusterGroupMapOutput) ToClusterGroupMapOutputWithContext(ctx context.Context) ClusterGroupMapOutput { + return o +} + +func (o ClusterGroupMapOutput) MapIndex(k pulumi.StringInput) ClusterGroupOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ClusterGroup { + return vs[0].(map[string]*ClusterGroup)[vs[1].(string)] + }).(ClusterGroupOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ClusterGroupInput)(nil)).Elem(), &ClusterGroup{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterGroupArrayInput)(nil)).Elem(), ClusterGroupArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterGroupMapInput)(nil)).Elem(), ClusterGroupMap{}) + pulumi.RegisterOutputType(ClusterGroupOutput{}) + pulumi.RegisterOutputType(ClusterGroupArrayOutput{}) + pulumi.RegisterOutputType(ClusterGroupMapOutput{}) +} diff --git a/sdk/go/incus/clusterGroupAssignment.go b/sdk/go/incus/clusterGroupAssignment.go new file mode 100644 index 0000000..38589ce --- /dev/null +++ b/sdk/go/incus/clusterGroupAssignment.go @@ -0,0 +1,257 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type ClusterGroupAssignment struct { + pulumi.CustomResourceState + + // **Required** - Name of the cluster group. + ClusterGroup pulumi.StringOutput `pulumi:"clusterGroup"` + // **Required** - Name of the cluster group member. + Member pulumi.StringOutput `pulumi:"member"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` +} + +// NewClusterGroupAssignment registers a new resource with the given unique name, arguments, and options. +func NewClusterGroupAssignment(ctx *pulumi.Context, + name string, args *ClusterGroupAssignmentArgs, opts ...pulumi.ResourceOption) (*ClusterGroupAssignment, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ClusterGroup == nil { + return nil, errors.New("invalid value for required argument 'ClusterGroup'") + } + if args.Member == nil { + return nil, errors.New("invalid value for required argument 'Member'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource ClusterGroupAssignment + err := ctx.RegisterResource("incus:index/clusterGroupAssignment:ClusterGroupAssignment", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetClusterGroupAssignment gets an existing ClusterGroupAssignment resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetClusterGroupAssignment(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ClusterGroupAssignmentState, opts ...pulumi.ResourceOption) (*ClusterGroupAssignment, error) { + var resource ClusterGroupAssignment + err := ctx.ReadResource("incus:index/clusterGroupAssignment:ClusterGroupAssignment", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ClusterGroupAssignment resources. +type clusterGroupAssignmentState struct { + // **Required** - Name of the cluster group. + ClusterGroup *string `pulumi:"clusterGroup"` + // **Required** - Name of the cluster group member. + Member *string `pulumi:"member"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +type ClusterGroupAssignmentState struct { + // **Required** - Name of the cluster group. + ClusterGroup pulumi.StringPtrInput + // **Required** - Name of the cluster group member. + Member pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (ClusterGroupAssignmentState) ElementType() reflect.Type { + return reflect.TypeOf((*clusterGroupAssignmentState)(nil)).Elem() +} + +type clusterGroupAssignmentArgs struct { + // **Required** - Name of the cluster group. + ClusterGroup string `pulumi:"clusterGroup"` + // **Required** - Name of the cluster group member. + Member string `pulumi:"member"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// The set of arguments for constructing a ClusterGroupAssignment resource. +type ClusterGroupAssignmentArgs struct { + // **Required** - Name of the cluster group. + ClusterGroup pulumi.StringInput + // **Required** - Name of the cluster group member. + Member pulumi.StringInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (ClusterGroupAssignmentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*clusterGroupAssignmentArgs)(nil)).Elem() +} + +type ClusterGroupAssignmentInput interface { + pulumi.Input + + ToClusterGroupAssignmentOutput() ClusterGroupAssignmentOutput + ToClusterGroupAssignmentOutputWithContext(ctx context.Context) ClusterGroupAssignmentOutput +} + +func (*ClusterGroupAssignment) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterGroupAssignment)(nil)).Elem() +} + +func (i *ClusterGroupAssignment) ToClusterGroupAssignmentOutput() ClusterGroupAssignmentOutput { + return i.ToClusterGroupAssignmentOutputWithContext(context.Background()) +} + +func (i *ClusterGroupAssignment) ToClusterGroupAssignmentOutputWithContext(ctx context.Context) ClusterGroupAssignmentOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterGroupAssignmentOutput) +} + +// ClusterGroupAssignmentArrayInput is an input type that accepts ClusterGroupAssignmentArray and ClusterGroupAssignmentArrayOutput values. +// You can construct a concrete instance of `ClusterGroupAssignmentArrayInput` via: +// +// ClusterGroupAssignmentArray{ ClusterGroupAssignmentArgs{...} } +type ClusterGroupAssignmentArrayInput interface { + pulumi.Input + + ToClusterGroupAssignmentArrayOutput() ClusterGroupAssignmentArrayOutput + ToClusterGroupAssignmentArrayOutputWithContext(context.Context) ClusterGroupAssignmentArrayOutput +} + +type ClusterGroupAssignmentArray []ClusterGroupAssignmentInput + +func (ClusterGroupAssignmentArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ClusterGroupAssignment)(nil)).Elem() +} + +func (i ClusterGroupAssignmentArray) ToClusterGroupAssignmentArrayOutput() ClusterGroupAssignmentArrayOutput { + return i.ToClusterGroupAssignmentArrayOutputWithContext(context.Background()) +} + +func (i ClusterGroupAssignmentArray) ToClusterGroupAssignmentArrayOutputWithContext(ctx context.Context) ClusterGroupAssignmentArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterGroupAssignmentArrayOutput) +} + +// ClusterGroupAssignmentMapInput is an input type that accepts ClusterGroupAssignmentMap and ClusterGroupAssignmentMapOutput values. +// You can construct a concrete instance of `ClusterGroupAssignmentMapInput` via: +// +// ClusterGroupAssignmentMap{ "key": ClusterGroupAssignmentArgs{...} } +type ClusterGroupAssignmentMapInput interface { + pulumi.Input + + ToClusterGroupAssignmentMapOutput() ClusterGroupAssignmentMapOutput + ToClusterGroupAssignmentMapOutputWithContext(context.Context) ClusterGroupAssignmentMapOutput +} + +type ClusterGroupAssignmentMap map[string]ClusterGroupAssignmentInput + +func (ClusterGroupAssignmentMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ClusterGroupAssignment)(nil)).Elem() +} + +func (i ClusterGroupAssignmentMap) ToClusterGroupAssignmentMapOutput() ClusterGroupAssignmentMapOutput { + return i.ToClusterGroupAssignmentMapOutputWithContext(context.Background()) +} + +func (i ClusterGroupAssignmentMap) ToClusterGroupAssignmentMapOutputWithContext(ctx context.Context) ClusterGroupAssignmentMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterGroupAssignmentMapOutput) +} + +type ClusterGroupAssignmentOutput struct{ *pulumi.OutputState } + +func (ClusterGroupAssignmentOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterGroupAssignment)(nil)).Elem() +} + +func (o ClusterGroupAssignmentOutput) ToClusterGroupAssignmentOutput() ClusterGroupAssignmentOutput { + return o +} + +func (o ClusterGroupAssignmentOutput) ToClusterGroupAssignmentOutputWithContext(ctx context.Context) ClusterGroupAssignmentOutput { + return o +} + +// **Required** - Name of the cluster group. +func (o ClusterGroupAssignmentOutput) ClusterGroup() pulumi.StringOutput { + return o.ApplyT(func(v *ClusterGroupAssignment) pulumi.StringOutput { return v.ClusterGroup }).(pulumi.StringOutput) +} + +// **Required** - Name of the cluster group member. +func (o ClusterGroupAssignmentOutput) Member() pulumi.StringOutput { + return o.ApplyT(func(v *ClusterGroupAssignment) pulumi.StringOutput { return v.Member }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o ClusterGroupAssignmentOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterGroupAssignment) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +type ClusterGroupAssignmentArrayOutput struct{ *pulumi.OutputState } + +func (ClusterGroupAssignmentArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ClusterGroupAssignment)(nil)).Elem() +} + +func (o ClusterGroupAssignmentArrayOutput) ToClusterGroupAssignmentArrayOutput() ClusterGroupAssignmentArrayOutput { + return o +} + +func (o ClusterGroupAssignmentArrayOutput) ToClusterGroupAssignmentArrayOutputWithContext(ctx context.Context) ClusterGroupAssignmentArrayOutput { + return o +} + +func (o ClusterGroupAssignmentArrayOutput) Index(i pulumi.IntInput) ClusterGroupAssignmentOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ClusterGroupAssignment { + return vs[0].([]*ClusterGroupAssignment)[vs[1].(int)] + }).(ClusterGroupAssignmentOutput) +} + +type ClusterGroupAssignmentMapOutput struct{ *pulumi.OutputState } + +func (ClusterGroupAssignmentMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ClusterGroupAssignment)(nil)).Elem() +} + +func (o ClusterGroupAssignmentMapOutput) ToClusterGroupAssignmentMapOutput() ClusterGroupAssignmentMapOutput { + return o +} + +func (o ClusterGroupAssignmentMapOutput) ToClusterGroupAssignmentMapOutputWithContext(ctx context.Context) ClusterGroupAssignmentMapOutput { + return o +} + +func (o ClusterGroupAssignmentMapOutput) MapIndex(k pulumi.StringInput) ClusterGroupAssignmentOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ClusterGroupAssignment { + return vs[0].(map[string]*ClusterGroupAssignment)[vs[1].(string)] + }).(ClusterGroupAssignmentOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ClusterGroupAssignmentInput)(nil)).Elem(), &ClusterGroupAssignment{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterGroupAssignmentArrayInput)(nil)).Elem(), ClusterGroupAssignmentArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterGroupAssignmentMapInput)(nil)).Elem(), ClusterGroupAssignmentMap{}) + pulumi.RegisterOutputType(ClusterGroupAssignmentOutput{}) + pulumi.RegisterOutputType(ClusterGroupAssignmentArrayOutput{}) + pulumi.RegisterOutputType(ClusterGroupAssignmentMapOutput{}) +} diff --git a/sdk/go/incus/config/config.go b/sdk/go/incus/config/config.go new file mode 100644 index 0000000..bccd07f --- /dev/null +++ b/sdk/go/incus/config/config.go @@ -0,0 +1,38 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package config + +import ( + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi/config" +) + +var _ = internal.GetEnvOrDefault + +// Accept the server certificate. +func GetAcceptRemoteCertificate(ctx *pulumi.Context) bool { + return config.GetBool(ctx, "incus:acceptRemoteCertificate") +} + +// The directory to look for existing Incus configuration. (default = $HOME/.config/incus) +func GetConfigDir(ctx *pulumi.Context) string { + return config.Get(ctx, "incus:configDir") +} + +// Automatically generate the Incus client certificates if they don't exist. +func GetGenerateClientCertificates(ctx *pulumi.Context) bool { + return config.GetBool(ctx, "incus:generateClientCertificates") +} + +// The project where project-scoped resources will be created. Can be overridden in individual resources. (default = +// default) +func GetProject(ctx *pulumi.Context) string { + return config.Get(ctx, "incus:project") +} + +// Incus Remote +func GetRemotes(ctx *pulumi.Context) string { + return config.Get(ctx, "incus:remotes") +} diff --git a/sdk/go/incus/config/pulumiTypes.go b/sdk/go/incus/config/pulumiTypes.go new file mode 100644 index 0000000..5b216c6 --- /dev/null +++ b/sdk/go/incus/config/pulumiTypes.go @@ -0,0 +1,163 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package config + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type Remotes struct { + // The FQDN or IP where the Incus daemon can be contacted. (default = "" (read from lxc config)) + Address *string `pulumi:"address"` + // Set this remote as default. + Default *bool `pulumi:"default"` + // Name of the Incus remote. Required when incusScheme set to https, to enable locating server certificate. + Name string `pulumi:"name"` + // Port Incus Daemon API is listening on. (default = 8443) + Port *string `pulumi:"port"` + // Unix (unix) or HTTPs (https). (default = unix) + Scheme *string `pulumi:"scheme"` + // The trust token for the remote. + Token *string `pulumi:"token"` +} + +// RemotesInput is an input type that accepts RemotesArgs and RemotesOutput values. +// You can construct a concrete instance of `RemotesInput` via: +// +// RemotesArgs{...} +type RemotesInput interface { + pulumi.Input + + ToRemotesOutput() RemotesOutput + ToRemotesOutputWithContext(context.Context) RemotesOutput +} + +type RemotesArgs struct { + // The FQDN or IP where the Incus daemon can be contacted. (default = "" (read from lxc config)) + Address pulumi.StringPtrInput `pulumi:"address"` + // Set this remote as default. + Default pulumi.BoolPtrInput `pulumi:"default"` + // Name of the Incus remote. Required when incusScheme set to https, to enable locating server certificate. + Name pulumi.StringInput `pulumi:"name"` + // Port Incus Daemon API is listening on. (default = 8443) + Port pulumi.StringPtrInput `pulumi:"port"` + // Unix (unix) or HTTPs (https). (default = unix) + Scheme pulumi.StringPtrInput `pulumi:"scheme"` + // The trust token for the remote. + Token pulumi.StringPtrInput `pulumi:"token"` +} + +func (RemotesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*Remotes)(nil)).Elem() +} + +func (i RemotesArgs) ToRemotesOutput() RemotesOutput { + return i.ToRemotesOutputWithContext(context.Background()) +} + +func (i RemotesArgs) ToRemotesOutputWithContext(ctx context.Context) RemotesOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemotesOutput) +} + +// RemotesArrayInput is an input type that accepts RemotesArray and RemotesArrayOutput values. +// You can construct a concrete instance of `RemotesArrayInput` via: +// +// RemotesArray{ RemotesArgs{...} } +type RemotesArrayInput interface { + pulumi.Input + + ToRemotesArrayOutput() RemotesArrayOutput + ToRemotesArrayOutputWithContext(context.Context) RemotesArrayOutput +} + +type RemotesArray []RemotesInput + +func (RemotesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]Remotes)(nil)).Elem() +} + +func (i RemotesArray) ToRemotesArrayOutput() RemotesArrayOutput { + return i.ToRemotesArrayOutputWithContext(context.Background()) +} + +func (i RemotesArray) ToRemotesArrayOutputWithContext(ctx context.Context) RemotesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemotesArrayOutput) +} + +type RemotesOutput struct{ *pulumi.OutputState } + +func (RemotesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*Remotes)(nil)).Elem() +} + +func (o RemotesOutput) ToRemotesOutput() RemotesOutput { + return o +} + +func (o RemotesOutput) ToRemotesOutputWithContext(ctx context.Context) RemotesOutput { + return o +} + +// The FQDN or IP where the Incus daemon can be contacted. (default = "" (read from lxc config)) +func (o RemotesOutput) Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v Remotes) *string { return v.Address }).(pulumi.StringPtrOutput) +} + +// Set this remote as default. +func (o RemotesOutput) Default() pulumi.BoolPtrOutput { + return o.ApplyT(func(v Remotes) *bool { return v.Default }).(pulumi.BoolPtrOutput) +} + +// Name of the Incus remote. Required when incusScheme set to https, to enable locating server certificate. +func (o RemotesOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v Remotes) string { return v.Name }).(pulumi.StringOutput) +} + +// Port Incus Daemon API is listening on. (default = 8443) +func (o RemotesOutput) Port() pulumi.StringPtrOutput { + return o.ApplyT(func(v Remotes) *string { return v.Port }).(pulumi.StringPtrOutput) +} + +// Unix (unix) or HTTPs (https). (default = unix) +func (o RemotesOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v Remotes) *string { return v.Scheme }).(pulumi.StringPtrOutput) +} + +// The trust token for the remote. +func (o RemotesOutput) Token() pulumi.StringPtrOutput { + return o.ApplyT(func(v Remotes) *string { return v.Token }).(pulumi.StringPtrOutput) +} + +type RemotesArrayOutput struct{ *pulumi.OutputState } + +func (RemotesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]Remotes)(nil)).Elem() +} + +func (o RemotesArrayOutput) ToRemotesArrayOutput() RemotesArrayOutput { + return o +} + +func (o RemotesArrayOutput) ToRemotesArrayOutputWithContext(ctx context.Context) RemotesArrayOutput { + return o +} + +func (o RemotesArrayOutput) Index(i pulumi.IntInput) RemotesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) Remotes { + return vs[0].([]Remotes)[vs[1].(int)] + }).(RemotesOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RemotesInput)(nil)).Elem(), RemotesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RemotesArrayInput)(nil)).Elem(), RemotesArray{}) + pulumi.RegisterOutputType(RemotesOutput{}) + pulumi.RegisterOutputType(RemotesArrayOutput{}) +} diff --git a/sdk/go/incus/doc.go b/sdk/go/incus/doc.go new file mode 100644 index 0000000..2e532a1 --- /dev/null +++ b/sdk/go/incus/doc.go @@ -0,0 +1,2 @@ +// A Pulumi package for creating and managing incus cloud resources. +package incus diff --git a/sdk/go/incus/getImage.go b/sdk/go/incus/getImage.go new file mode 100644 index 0000000..263d66c --- /dev/null +++ b/sdk/go/incus/getImage.go @@ -0,0 +1,179 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## # Image +// +// Provides information about an Incus image. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// debianCustom, err := incus.LookupImage(ctx, &incus.LookupImageArgs{ +// Name: pulumi.StringRef("debian_custom"), +// }, nil) +// if err != nil { +// return err +// } +// _, err = incus.NewInstance(ctx, "d1", &incus.InstanceArgs{ +// Image: pulumi.String(debianCustom.Fingerprint), +// Name: pulumi.String("d1"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupImage(ctx *pulumi.Context, args *LookupImageArgs, opts ...pulumi.InvokeOption) (*LookupImageResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupImageResult + err := ctx.Invoke("incus:index/getImage:getImage", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getImage. +type LookupImageArgs struct { + // *Optional* - The image architecture (e.g. x86_64, aarch64). See [Architectures](https://linuxcontainers.org/incus/docs/main/architectures/) for all possible values. + Architecture *string `pulumi:"architecture"` + // *Optional* - Fingerprint of the image. + Fingerprint *string `pulumi:"fingerprint"` + // *Optional* - Name of the image. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the image is stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource was created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Type of image. Must be one of `container` or `virtual-machine`. + Type *string `pulumi:"type"` +} + +// A collection of values returned by getImage. +type LookupImageResult struct { + // The list of aliases for the image. + Aliases []string `pulumi:"aliases"` + Architecture string `pulumi:"architecture"` + // The datetime of image creation, in Unix time. + CreatedAt int `pulumi:"createdAt"` + Fingerprint string `pulumi:"fingerprint"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Name *string `pulumi:"name"` + Project *string `pulumi:"project"` + Remote *string `pulumi:"remote"` + Type string `pulumi:"type"` +} + +func LookupImageOutput(ctx *pulumi.Context, args LookupImageOutputArgs, opts ...pulumi.InvokeOption) LookupImageResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (LookupImageResultOutput, error) { + args := v.(LookupImageArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("incus:index/getImage:getImage", args, LookupImageResultOutput{}, options).(LookupImageResultOutput), nil + }).(LookupImageResultOutput) +} + +// A collection of arguments for invoking getImage. +type LookupImageOutputArgs struct { + // *Optional* - The image architecture (e.g. x86_64, aarch64). See [Architectures](https://linuxcontainers.org/incus/docs/main/architectures/) for all possible values. + Architecture pulumi.StringPtrInput `pulumi:"architecture"` + // *Optional* - Fingerprint of the image. + Fingerprint pulumi.StringPtrInput `pulumi:"fingerprint"` + // *Optional* - Name of the image. + Name pulumi.StringPtrInput `pulumi:"name"` + // *Optional* - Name of the project where the image is stored. + Project pulumi.StringPtrInput `pulumi:"project"` + // *Optional* - The remote in which the resource was created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput `pulumi:"remote"` + // *Optional* - Type of image. Must be one of `container` or `virtual-machine`. + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (LookupImageOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupImageArgs)(nil)).Elem() +} + +// A collection of values returned by getImage. +type LookupImageResultOutput struct{ *pulumi.OutputState } + +func (LookupImageResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupImageResult)(nil)).Elem() +} + +func (o LookupImageResultOutput) ToLookupImageResultOutput() LookupImageResultOutput { + return o +} + +func (o LookupImageResultOutput) ToLookupImageResultOutputWithContext(ctx context.Context) LookupImageResultOutput { + return o +} + +// The list of aliases for the image. +func (o LookupImageResultOutput) Aliases() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupImageResult) []string { return v.Aliases }).(pulumi.StringArrayOutput) +} + +func (o LookupImageResultOutput) Architecture() pulumi.StringOutput { + return o.ApplyT(func(v LookupImageResult) string { return v.Architecture }).(pulumi.StringOutput) +} + +// The datetime of image creation, in Unix time. +func (o LookupImageResultOutput) CreatedAt() pulumi.IntOutput { + return o.ApplyT(func(v LookupImageResult) int { return v.CreatedAt }).(pulumi.IntOutput) +} + +func (o LookupImageResultOutput) Fingerprint() pulumi.StringOutput { + return o.ApplyT(func(v LookupImageResult) string { return v.Fingerprint }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupImageResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupImageResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o LookupImageResultOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupImageResult) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +func (o LookupImageResultOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupImageResult) *string { return v.Project }).(pulumi.StringPtrOutput) +} + +func (o LookupImageResultOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupImageResult) *string { return v.Remote }).(pulumi.StringPtrOutput) +} + +func (o LookupImageResultOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v LookupImageResult) string { return v.Type }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupImageResultOutput{}) +} diff --git a/sdk/go/incus/getProfile.go b/sdk/go/incus/getProfile.go new file mode 100644 index 0000000..821cacc --- /dev/null +++ b/sdk/go/incus/getProfile.go @@ -0,0 +1,168 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## # Profile +// +// Provides information about an Incus profile. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _default, err := incus.LookupProfile(ctx, &incus.LookupProfileArgs{ +// Name: "default", +// }, nil) +// if err != nil { +// return err +// } +// _, err = incus.NewInstance(ctx, "d1", &incus.InstanceArgs{ +// Profiles: pulumi.StringArray{ +// pulumi.String(_default.Name), +// }, +// Image: pulumi.String("images:debian/12"), +// Name: pulumi.String("d1"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupProfile(ctx *pulumi.Context, args *LookupProfileArgs, opts ...pulumi.InvokeOption) (*LookupProfileResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupProfileResult + err := ctx.Invoke("incus:index/getProfile:getProfile", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getProfile. +type LookupProfileArgs struct { + // Device definition. See reference below. + Devices []GetProfileDevice `pulumi:"devices"` + // **Required** - Name of the profile. + Name string `pulumi:"name"` + // *Optional* - Name of the project where the profile will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource was created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// A collection of values returned by getProfile. +type LookupProfileResult struct { + // Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config map[string]string `pulumi:"config"` + Description string `pulumi:"description"` + // Device definition. See reference below. + Devices []GetProfileDevice `pulumi:"devices"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Name of the device. + Name string `pulumi:"name"` + Project *string `pulumi:"project"` + Remote *string `pulumi:"remote"` +} + +func LookupProfileOutput(ctx *pulumi.Context, args LookupProfileOutputArgs, opts ...pulumi.InvokeOption) LookupProfileResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (LookupProfileResultOutput, error) { + args := v.(LookupProfileArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("incus:index/getProfile:getProfile", args, LookupProfileResultOutput{}, options).(LookupProfileResultOutput), nil + }).(LookupProfileResultOutput) +} + +// A collection of arguments for invoking getProfile. +type LookupProfileOutputArgs struct { + // Device definition. See reference below. + Devices GetProfileDeviceArrayInput `pulumi:"devices"` + // **Required** - Name of the profile. + Name pulumi.StringInput `pulumi:"name"` + // *Optional* - Name of the project where the profile will be stored. + Project pulumi.StringPtrInput `pulumi:"project"` + // *Optional* - The remote in which the resource was created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput `pulumi:"remote"` +} + +func (LookupProfileOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupProfileArgs)(nil)).Elem() +} + +// A collection of values returned by getProfile. +type LookupProfileResultOutput struct{ *pulumi.OutputState } + +func (LookupProfileResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupProfileResult)(nil)).Elem() +} + +func (o LookupProfileResultOutput) ToLookupProfileResultOutput() LookupProfileResultOutput { + return o +} + +func (o LookupProfileResultOutput) ToLookupProfileResultOutputWithContext(ctx context.Context) LookupProfileResultOutput { + return o +} + +// Map of key/value pairs of +// [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). +func (o LookupProfileResultOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupProfileResult) map[string]string { return v.Config }).(pulumi.StringMapOutput) +} + +func (o LookupProfileResultOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v LookupProfileResult) string { return v.Description }).(pulumi.StringOutput) +} + +// Device definition. See reference below. +func (o LookupProfileResultOutput) Devices() GetProfileDeviceArrayOutput { + return o.ApplyT(func(v LookupProfileResult) []GetProfileDevice { return v.Devices }).(GetProfileDeviceArrayOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupProfileResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupProfileResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Name of the device. +func (o LookupProfileResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupProfileResult) string { return v.Name }).(pulumi.StringOutput) +} + +func (o LookupProfileResultOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupProfileResult) *string { return v.Project }).(pulumi.StringPtrOutput) +} + +func (o LookupProfileResultOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupProfileResult) *string { return v.Remote }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupProfileResultOutput{}) +} diff --git a/sdk/go/incus/getProject.go b/sdk/go/incus/getProject.go new file mode 100644 index 0000000..445451e --- /dev/null +++ b/sdk/go/incus/getProject.go @@ -0,0 +1,156 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## # Project +// +// Provides information about an Incus project. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _default, err := incus.LookupProject(ctx, &incus.LookupProjectArgs{ +// Name: "default", +// }, nil) +// if err != nil { +// return err +// } +// _, err = incus.NewInstance(ctx, "d1", &incus.InstanceArgs{ +// Project: pulumi.String(_default.Name), +// Image: pulumi.String("images:debian/12"), +// Name: pulumi.String("d1"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupProject(ctx *pulumi.Context, args *LookupProjectArgs, opts ...pulumi.InvokeOption) (*LookupProjectResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupProjectResult + err := ctx.Invoke("incus:index/getProject:getProject", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getProject. +type LookupProjectArgs struct { + // Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config map[string]string `pulumi:"config"` + // Description of the project. + Description *string `pulumi:"description"` + // **Required** - Name of the project. + Name string `pulumi:"name"` + // *Optional* - The remote in which the resource was created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// A collection of values returned by getProject. +type LookupProjectResult struct { + // Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config map[string]string `pulumi:"config"` + // Description of the project. + Description string `pulumi:"description"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Name string `pulumi:"name"` + Remote *string `pulumi:"remote"` +} + +func LookupProjectOutput(ctx *pulumi.Context, args LookupProjectOutputArgs, opts ...pulumi.InvokeOption) LookupProjectResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (LookupProjectResultOutput, error) { + args := v.(LookupProjectArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("incus:index/getProject:getProject", args, LookupProjectResultOutput{}, options).(LookupProjectResultOutput), nil + }).(LookupProjectResultOutput) +} + +// A collection of arguments for invoking getProject. +type LookupProjectOutputArgs struct { + // Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config pulumi.StringMapInput `pulumi:"config"` + // Description of the project. + Description pulumi.StringPtrInput `pulumi:"description"` + // **Required** - Name of the project. + Name pulumi.StringInput `pulumi:"name"` + // *Optional* - The remote in which the resource was created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput `pulumi:"remote"` +} + +func (LookupProjectOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupProjectArgs)(nil)).Elem() +} + +// A collection of values returned by getProject. +type LookupProjectResultOutput struct{ *pulumi.OutputState } + +func (LookupProjectResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupProjectResult)(nil)).Elem() +} + +func (o LookupProjectResultOutput) ToLookupProjectResultOutput() LookupProjectResultOutput { + return o +} + +func (o LookupProjectResultOutput) ToLookupProjectResultOutputWithContext(ctx context.Context) LookupProjectResultOutput { + return o +} + +// Map of key/value pairs of +// [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). +func (o LookupProjectResultOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupProjectResult) map[string]string { return v.Config }).(pulumi.StringMapOutput) +} + +// Description of the project. +func (o LookupProjectResultOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v LookupProjectResult) string { return v.Description }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupProjectResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupProjectResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o LookupProjectResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupProjectResult) string { return v.Name }).(pulumi.StringOutput) +} + +func (o LookupProjectResultOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupProjectResult) *string { return v.Remote }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupProjectResultOutput{}) +} diff --git a/sdk/go/incus/image.go b/sdk/go/incus/image.go new file mode 100644 index 0000000..81b0fea --- /dev/null +++ b/sdk/go/incus/image.go @@ -0,0 +1,389 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## # Image +// +// Manages a locally-stored Incus image. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// alpine, err := incus.NewImage(ctx, "alpine", &incus.ImageArgs{ +// SourceImage: &incus.ImageSourceImageArgs{ +// Remote: pulumi.String("images"), +// Name: pulumi.String("alpine/edge"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = incus.NewInstance(ctx, "test1", &incus.InstanceArgs{ +// Name: pulumi.String("test1"), +// Image: alpine.Fingerprint, +// Ephemeral: pulumi.Bool(false), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Notes +// +// * See the Incus [documentation](https://linuxcontainers.org/incus/docs/main/howto/images_remote) for more info on default image remotes. +type Image struct { + pulumi.CustomResourceState + + // *Optional* - A list of aliases to assign to the image after + // pulling. + Aliases pulumi.StringArrayOutput `pulumi:"aliases"` + // The list of aliases that were copied from the + // `sourceImage`. + CopiedAliases pulumi.StringArrayOutput `pulumi:"copiedAliases"` + // The datetime of image creation, in Unix time. + CreatedAt pulumi.IntOutput `pulumi:"createdAt"` + // The unique hash fingperint of the image. + Fingerprint pulumi.StringOutput `pulumi:"fingerprint"` + // *Optional* - Name of the project where the image will be stored. + Project pulumi.StringPtrOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + ResourceId pulumi.StringOutput `pulumi:"resourceId"` + // *Optional* - The image file from the local file system from which the image will be created. See reference below. + SourceFile ImageSourceFilePtrOutput `pulumi:"sourceFile"` + // *Optional* - The source image from which the image will be created. See reference below. + SourceImage ImageSourceImagePtrOutput `pulumi:"sourceImage"` + // *Optional* - The source instance from which the image will be created. See reference below. + SourceInstance ImageSourceInstancePtrOutput `pulumi:"sourceInstance"` +} + +// NewImage registers a new resource with the given unique name, arguments, and options. +func NewImage(ctx *pulumi.Context, + name string, args *ImageArgs, opts ...pulumi.ResourceOption) (*Image, error) { + if args == nil { + args = &ImageArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Image + err := ctx.RegisterResource("incus:index/image:Image", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetImage gets an existing Image resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetImage(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ImageState, opts ...pulumi.ResourceOption) (*Image, error) { + var resource Image + err := ctx.ReadResource("incus:index/image:Image", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Image resources. +type imageState struct { + // *Optional* - A list of aliases to assign to the image after + // pulling. + Aliases []string `pulumi:"aliases"` + // The list of aliases that were copied from the + // `sourceImage`. + CopiedAliases []string `pulumi:"copiedAliases"` + // The datetime of image creation, in Unix time. + CreatedAt *int `pulumi:"createdAt"` + // The unique hash fingperint of the image. + Fingerprint *string `pulumi:"fingerprint"` + // *Optional* - Name of the project where the image will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + ResourceId *string `pulumi:"resourceId"` + // *Optional* - The image file from the local file system from which the image will be created. See reference below. + SourceFile *ImageSourceFile `pulumi:"sourceFile"` + // *Optional* - The source image from which the image will be created. See reference below. + SourceImage *ImageSourceImage `pulumi:"sourceImage"` + // *Optional* - The source instance from which the image will be created. See reference below. + SourceInstance *ImageSourceInstance `pulumi:"sourceInstance"` +} + +type ImageState struct { + // *Optional* - A list of aliases to assign to the image after + // pulling. + Aliases pulumi.StringArrayInput + // The list of aliases that were copied from the + // `sourceImage`. + CopiedAliases pulumi.StringArrayInput + // The datetime of image creation, in Unix time. + CreatedAt pulumi.IntPtrInput + // The unique hash fingperint of the image. + Fingerprint pulumi.StringPtrInput + // *Optional* - Name of the project where the image will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + ResourceId pulumi.StringPtrInput + // *Optional* - The image file from the local file system from which the image will be created. See reference below. + SourceFile ImageSourceFilePtrInput + // *Optional* - The source image from which the image will be created. See reference below. + SourceImage ImageSourceImagePtrInput + // *Optional* - The source instance from which the image will be created. See reference below. + SourceInstance ImageSourceInstancePtrInput +} + +func (ImageState) ElementType() reflect.Type { + return reflect.TypeOf((*imageState)(nil)).Elem() +} + +type imageArgs struct { + // *Optional* - A list of aliases to assign to the image after + // pulling. + Aliases []string `pulumi:"aliases"` + // *Optional* - Name of the project where the image will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - The image file from the local file system from which the image will be created. See reference below. + SourceFile *ImageSourceFile `pulumi:"sourceFile"` + // *Optional* - The source image from which the image will be created. See reference below. + SourceImage *ImageSourceImage `pulumi:"sourceImage"` + // *Optional* - The source instance from which the image will be created. See reference below. + SourceInstance *ImageSourceInstance `pulumi:"sourceInstance"` +} + +// The set of arguments for constructing a Image resource. +type ImageArgs struct { + // *Optional* - A list of aliases to assign to the image after + // pulling. + Aliases pulumi.StringArrayInput + // *Optional* - Name of the project where the image will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - The image file from the local file system from which the image will be created. See reference below. + SourceFile ImageSourceFilePtrInput + // *Optional* - The source image from which the image will be created. See reference below. + SourceImage ImageSourceImagePtrInput + // *Optional* - The source instance from which the image will be created. See reference below. + SourceInstance ImageSourceInstancePtrInput +} + +func (ImageArgs) ElementType() reflect.Type { + return reflect.TypeOf((*imageArgs)(nil)).Elem() +} + +type ImageInput interface { + pulumi.Input + + ToImageOutput() ImageOutput + ToImageOutputWithContext(ctx context.Context) ImageOutput +} + +func (*Image) ElementType() reflect.Type { + return reflect.TypeOf((**Image)(nil)).Elem() +} + +func (i *Image) ToImageOutput() ImageOutput { + return i.ToImageOutputWithContext(context.Background()) +} + +func (i *Image) ToImageOutputWithContext(ctx context.Context) ImageOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageOutput) +} + +// ImageArrayInput is an input type that accepts ImageArray and ImageArrayOutput values. +// You can construct a concrete instance of `ImageArrayInput` via: +// +// ImageArray{ ImageArgs{...} } +type ImageArrayInput interface { + pulumi.Input + + ToImageArrayOutput() ImageArrayOutput + ToImageArrayOutputWithContext(context.Context) ImageArrayOutput +} + +type ImageArray []ImageInput + +func (ImageArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Image)(nil)).Elem() +} + +func (i ImageArray) ToImageArrayOutput() ImageArrayOutput { + return i.ToImageArrayOutputWithContext(context.Background()) +} + +func (i ImageArray) ToImageArrayOutputWithContext(ctx context.Context) ImageArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageArrayOutput) +} + +// ImageMapInput is an input type that accepts ImageMap and ImageMapOutput values. +// You can construct a concrete instance of `ImageMapInput` via: +// +// ImageMap{ "key": ImageArgs{...} } +type ImageMapInput interface { + pulumi.Input + + ToImageMapOutput() ImageMapOutput + ToImageMapOutputWithContext(context.Context) ImageMapOutput +} + +type ImageMap map[string]ImageInput + +func (ImageMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Image)(nil)).Elem() +} + +func (i ImageMap) ToImageMapOutput() ImageMapOutput { + return i.ToImageMapOutputWithContext(context.Background()) +} + +func (i ImageMap) ToImageMapOutputWithContext(ctx context.Context) ImageMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageMapOutput) +} + +type ImageOutput struct{ *pulumi.OutputState } + +func (ImageOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Image)(nil)).Elem() +} + +func (o ImageOutput) ToImageOutput() ImageOutput { + return o +} + +func (o ImageOutput) ToImageOutputWithContext(ctx context.Context) ImageOutput { + return o +} + +// *Optional* - A list of aliases to assign to the image after +// pulling. +func (o ImageOutput) Aliases() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Image) pulumi.StringArrayOutput { return v.Aliases }).(pulumi.StringArrayOutput) +} + +// The list of aliases that were copied from the +// `sourceImage`. +func (o ImageOutput) CopiedAliases() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Image) pulumi.StringArrayOutput { return v.CopiedAliases }).(pulumi.StringArrayOutput) +} + +// The datetime of image creation, in Unix time. +func (o ImageOutput) CreatedAt() pulumi.IntOutput { + return o.ApplyT(func(v *Image) pulumi.IntOutput { return v.CreatedAt }).(pulumi.IntOutput) +} + +// The unique hash fingperint of the image. +func (o ImageOutput) Fingerprint() pulumi.StringOutput { + return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.Fingerprint }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the image will be stored. +func (o ImageOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Image) pulumi.StringPtrOutput { return v.Project }).(pulumi.StringPtrOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o ImageOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Image) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +func (o ImageOutput) ResourceId() pulumi.StringOutput { + return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.ResourceId }).(pulumi.StringOutput) +} + +// *Optional* - The image file from the local file system from which the image will be created. See reference below. +func (o ImageOutput) SourceFile() ImageSourceFilePtrOutput { + return o.ApplyT(func(v *Image) ImageSourceFilePtrOutput { return v.SourceFile }).(ImageSourceFilePtrOutput) +} + +// *Optional* - The source image from which the image will be created. See reference below. +func (o ImageOutput) SourceImage() ImageSourceImagePtrOutput { + return o.ApplyT(func(v *Image) ImageSourceImagePtrOutput { return v.SourceImage }).(ImageSourceImagePtrOutput) +} + +// *Optional* - The source instance from which the image will be created. See reference below. +func (o ImageOutput) SourceInstance() ImageSourceInstancePtrOutput { + return o.ApplyT(func(v *Image) ImageSourceInstancePtrOutput { return v.SourceInstance }).(ImageSourceInstancePtrOutput) +} + +type ImageArrayOutput struct{ *pulumi.OutputState } + +func (ImageArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Image)(nil)).Elem() +} + +func (o ImageArrayOutput) ToImageArrayOutput() ImageArrayOutput { + return o +} + +func (o ImageArrayOutput) ToImageArrayOutputWithContext(ctx context.Context) ImageArrayOutput { + return o +} + +func (o ImageArrayOutput) Index(i pulumi.IntInput) ImageOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Image { + return vs[0].([]*Image)[vs[1].(int)] + }).(ImageOutput) +} + +type ImageMapOutput struct{ *pulumi.OutputState } + +func (ImageMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Image)(nil)).Elem() +} + +func (o ImageMapOutput) ToImageMapOutput() ImageMapOutput { + return o +} + +func (o ImageMapOutput) ToImageMapOutputWithContext(ctx context.Context) ImageMapOutput { + return o +} + +func (o ImageMapOutput) MapIndex(k pulumi.StringInput) ImageOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Image { + return vs[0].(map[string]*Image)[vs[1].(string)] + }).(ImageOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ImageInput)(nil)).Elem(), &Image{}) + pulumi.RegisterInputType(reflect.TypeOf((*ImageArrayInput)(nil)).Elem(), ImageArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ImageMapInput)(nil)).Elem(), ImageMap{}) + pulumi.RegisterOutputType(ImageOutput{}) + pulumi.RegisterOutputType(ImageArrayOutput{}) + pulumi.RegisterOutputType(ImageMapOutput{}) +} diff --git a/sdk/go/incus/init.go b/sdk/go/incus/init.go new file mode 100644 index 0000000..6b08fb1 --- /dev/null +++ b/sdk/go/incus/init.go @@ -0,0 +1,199 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "fmt" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/blang/semver" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "incus:index/certificate:Certificate": + r = &Certificate{} + case "incus:index/clusterGroup:ClusterGroup": + r = &ClusterGroup{} + case "incus:index/clusterGroupAssignment:ClusterGroupAssignment": + r = &ClusterGroupAssignment{} + case "incus:index/image:Image": + r = &Image{} + case "incus:index/instance:Instance": + r = &Instance{} + case "incus:index/instanceSnapshot:InstanceSnapshot": + r = &InstanceSnapshot{} + case "incus:index/network:Network": + r = &Network{} + case "incus:index/networkAcl:NetworkAcl": + r = &NetworkAcl{} + case "incus:index/networkForward:NetworkForward": + r = &NetworkForward{} + case "incus:index/networkIntegration:NetworkIntegration": + r = &NetworkIntegration{} + case "incus:index/networkLoadBalancer:NetworkLoadBalancer": + r = &NetworkLoadBalancer{} + case "incus:index/networkPeer:NetworkPeer": + r = &NetworkPeer{} + case "incus:index/networkZone:NetworkZone": + r = &NetworkZone{} + case "incus:index/networkZoneRecord:NetworkZoneRecord": + r = &NetworkZoneRecord{} + case "incus:index/profile:Profile": + r = &Profile{} + case "incus:index/project:Project": + r = &Project{} + case "incus:index/storageBucket:StorageBucket": + r = &StorageBucket{} + case "incus:index/storageBucketKey:StorageBucketKey": + r = &StorageBucketKey{} + case "incus:index/storagePool:StoragePool": + r = &StoragePool{} + case "incus:index/storageVolume:StorageVolume": + r = &StorageVolume{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +type pkg struct { + version semver.Version +} + +func (p *pkg) Version() semver.Version { + return p.version +} + +func (p *pkg) ConstructProvider(ctx *pulumi.Context, name, typ, urn string) (pulumi.ProviderResource, error) { + if typ != "pulumi:providers:incus" { + return nil, fmt.Errorf("unknown provider type: %s", typ) + } + + r := &Provider{} + err := ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return r, err +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "incus", + "index/certificate", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/clusterGroup", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/clusterGroupAssignment", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/image", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/instance", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/instanceSnapshot", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/network", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/networkAcl", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/networkForward", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/networkIntegration", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/networkLoadBalancer", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/networkPeer", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/networkZone", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/networkZoneRecord", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/profile", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/project", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/storageBucket", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/storageBucketKey", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/storagePool", + &module{version}, + ) + pulumi.RegisterResourceModule( + "incus", + "index/storageVolume", + &module{version}, + ) + pulumi.RegisterResourcePackage( + "incus", + &pkg{version}, + ) +} diff --git a/sdk/go/incus/instance.go b/sdk/go/incus/instance.go new file mode 100644 index 0000000..b8bf953 --- /dev/null +++ b/sdk/go/incus/instance.go @@ -0,0 +1,534 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type Instance struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the instance. + Description pulumi.StringOutput `pulumi:"description"` + // *Optional* - Device definition. See reference below. + Devices InstanceDeviceArrayOutput `pulumi:"devices"` + // *Optional* - Boolean indicating if this instance is ephemeral. Defaults to `false`. + Ephemeral pulumi.BoolOutput `pulumi:"ephemeral"` + // *Optional* - File to upload to the instance. See reference below. + Files InstanceFileArrayOutput `pulumi:"files"` + // *Optional* - Base image from which the instance will be created. Must + // specify [an image accessible from the provider remote](https://linuxcontainers.org/incus/docs/main/reference/image_servers/). + Image pulumi.StringPtrOutput `pulumi:"image"` + // The IPv4 Address of the instance. See Instance Network + // Access for more details. + Ipv4Address pulumi.StringOutput `pulumi:"ipv4Address"` + // The IPv6 Address of the instance. See Instance Network + // Access for more details. + Ipv6Address pulumi.StringOutput `pulumi:"ipv6Address"` + // The MAC address of the detected NIC. See Instance Network + // Access for more details. + MacAddress pulumi.StringOutput `pulumi:"macAddress"` + // **Required** - Name of the instance. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - List of Incus config profiles to apply to the new + // instance. Profile `default` will be applied if profiles are not set (are `null`). + // However, if an empty array (`[]`) is set as a value, no profiles will be applied. + Profiles pulumi.StringArrayOutput `pulumi:"profiles"` + // *Optional* - Name of the project where the instance will be spawned. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // *Optional* - Boolean indicating whether the instance should be started (running). Defaults to `true`. + Running pulumi.BoolOutput `pulumi:"running"` + // *Optional* - The souce backup file from which the instance should be restored. For handling of storage pool, see examples. + SourceFile pulumi.StringPtrOutput `pulumi:"sourceFile"` + // *Optional* - The source instance from which the instance will be created. See reference below. + SourceInstance InstanceSourceInstancePtrOutput `pulumi:"sourceInstance"` + // The status of the instance. + Status pulumi.StringOutput `pulumi:"status"` + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringOutput `pulumi:"target"` + // *Optional* - Instance type. Can be `container`, or `virtual-machine`. Defaults to `container`. + Type pulumi.StringOutput `pulumi:"type"` + // *Optional* - WaitFor definition. See reference below. + // If `running` is set to false or instance is already running (on update), this value has no effect. + WaitFors InstanceWaitForArrayOutput `pulumi:"waitFors"` +} + +// NewInstance registers a new resource with the given unique name, arguments, and options. +func NewInstance(ctx *pulumi.Context, + name string, args *InstanceArgs, opts ...pulumi.ResourceOption) (*Instance, error) { + if args == nil { + args = &InstanceArgs{} + } + + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Instance + err := ctx.RegisterResource("incus:index/instance:Instance", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetInstance gets an existing Instance resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetInstance(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *InstanceState, opts ...pulumi.ResourceOption) (*Instance, error) { + var resource Instance + err := ctx.ReadResource("incus:index/instance:Instance", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Instance resources. +type instanceState struct { + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the instance. + Description *string `pulumi:"description"` + // *Optional* - Device definition. See reference below. + Devices []InstanceDevice `pulumi:"devices"` + // *Optional* - Boolean indicating if this instance is ephemeral. Defaults to `false`. + Ephemeral *bool `pulumi:"ephemeral"` + // *Optional* - File to upload to the instance. See reference below. + Files []InstanceFile `pulumi:"files"` + // *Optional* - Base image from which the instance will be created. Must + // specify [an image accessible from the provider remote](https://linuxcontainers.org/incus/docs/main/reference/image_servers/). + Image *string `pulumi:"image"` + // The IPv4 Address of the instance. See Instance Network + // Access for more details. + Ipv4Address *string `pulumi:"ipv4Address"` + // The IPv6 Address of the instance. See Instance Network + // Access for more details. + Ipv6Address *string `pulumi:"ipv6Address"` + // The MAC address of the detected NIC. See Instance Network + // Access for more details. + MacAddress *string `pulumi:"macAddress"` + // **Required** - Name of the instance. + Name *string `pulumi:"name"` + // *Optional* - List of Incus config profiles to apply to the new + // instance. Profile `default` will be applied if profiles are not set (are `null`). + // However, if an empty array (`[]`) is set as a value, no profiles will be applied. + Profiles []string `pulumi:"profiles"` + // *Optional* - Name of the project where the instance will be spawned. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Boolean indicating whether the instance should be started (running). Defaults to `true`. + Running *bool `pulumi:"running"` + // *Optional* - The souce backup file from which the instance should be restored. For handling of storage pool, see examples. + SourceFile *string `pulumi:"sourceFile"` + // *Optional* - The source instance from which the instance will be created. See reference below. + SourceInstance *InstanceSourceInstance `pulumi:"sourceInstance"` + // The status of the instance. + Status *string `pulumi:"status"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` + // *Optional* - Instance type. Can be `container`, or `virtual-machine`. Defaults to `container`. + Type *string `pulumi:"type"` + // *Optional* - WaitFor definition. See reference below. + // If `running` is set to false or instance is already running (on update), this value has no effect. + WaitFors []InstanceWaitFor `pulumi:"waitFors"` +} + +type InstanceState struct { + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config pulumi.StringMapInput + // *Optional* - Description of the instance. + Description pulumi.StringPtrInput + // *Optional* - Device definition. See reference below. + Devices InstanceDeviceArrayInput + // *Optional* - Boolean indicating if this instance is ephemeral. Defaults to `false`. + Ephemeral pulumi.BoolPtrInput + // *Optional* - File to upload to the instance. See reference below. + Files InstanceFileArrayInput + // *Optional* - Base image from which the instance will be created. Must + // specify [an image accessible from the provider remote](https://linuxcontainers.org/incus/docs/main/reference/image_servers/). + Image pulumi.StringPtrInput + // The IPv4 Address of the instance. See Instance Network + // Access for more details. + Ipv4Address pulumi.StringPtrInput + // The IPv6 Address of the instance. See Instance Network + // Access for more details. + Ipv6Address pulumi.StringPtrInput + // The MAC address of the detected NIC. See Instance Network + // Access for more details. + MacAddress pulumi.StringPtrInput + // **Required** - Name of the instance. + Name pulumi.StringPtrInput + // *Optional* - List of Incus config profiles to apply to the new + // instance. Profile `default` will be applied if profiles are not set (are `null`). + // However, if an empty array (`[]`) is set as a value, no profiles will be applied. + Profiles pulumi.StringArrayInput + // *Optional* - Name of the project where the instance will be spawned. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Boolean indicating whether the instance should be started (running). Defaults to `true`. + Running pulumi.BoolPtrInput + // *Optional* - The souce backup file from which the instance should be restored. For handling of storage pool, see examples. + SourceFile pulumi.StringPtrInput + // *Optional* - The source instance from which the instance will be created. See reference below. + SourceInstance InstanceSourceInstancePtrInput + // The status of the instance. + Status pulumi.StringPtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput + // *Optional* - Instance type. Can be `container`, or `virtual-machine`. Defaults to `container`. + Type pulumi.StringPtrInput + // *Optional* - WaitFor definition. See reference below. + // If `running` is set to false or instance is already running (on update), this value has no effect. + WaitFors InstanceWaitForArrayInput +} + +func (InstanceState) ElementType() reflect.Type { + return reflect.TypeOf((*instanceState)(nil)).Elem() +} + +type instanceArgs struct { + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the instance. + Description *string `pulumi:"description"` + // *Optional* - Device definition. See reference below. + Devices []InstanceDevice `pulumi:"devices"` + // *Optional* - Boolean indicating if this instance is ephemeral. Defaults to `false`. + Ephemeral *bool `pulumi:"ephemeral"` + // *Optional* - File to upload to the instance. See reference below. + Files []InstanceFile `pulumi:"files"` + // *Optional* - Base image from which the instance will be created. Must + // specify [an image accessible from the provider remote](https://linuxcontainers.org/incus/docs/main/reference/image_servers/). + Image *string `pulumi:"image"` + // **Required** - Name of the instance. + Name *string `pulumi:"name"` + // *Optional* - List of Incus config profiles to apply to the new + // instance. Profile `default` will be applied if profiles are not set (are `null`). + // However, if an empty array (`[]`) is set as a value, no profiles will be applied. + Profiles []string `pulumi:"profiles"` + // *Optional* - Name of the project where the instance will be spawned. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Boolean indicating whether the instance should be started (running). Defaults to `true`. + Running *bool `pulumi:"running"` + // *Optional* - The souce backup file from which the instance should be restored. For handling of storage pool, see examples. + SourceFile *string `pulumi:"sourceFile"` + // *Optional* - The source instance from which the instance will be created. See reference below. + SourceInstance *InstanceSourceInstance `pulumi:"sourceInstance"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` + // *Optional* - Instance type. Can be `container`, or `virtual-machine`. Defaults to `container`. + Type *string `pulumi:"type"` + // *Optional* - WaitFor definition. See reference below. + // If `running` is set to false or instance is already running (on update), this value has no effect. + WaitFors []InstanceWaitFor `pulumi:"waitFors"` +} + +// The set of arguments for constructing a Instance resource. +type InstanceArgs struct { + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config pulumi.StringMapInput + // *Optional* - Description of the instance. + Description pulumi.StringPtrInput + // *Optional* - Device definition. See reference below. + Devices InstanceDeviceArrayInput + // *Optional* - Boolean indicating if this instance is ephemeral. Defaults to `false`. + Ephemeral pulumi.BoolPtrInput + // *Optional* - File to upload to the instance. See reference below. + Files InstanceFileArrayInput + // *Optional* - Base image from which the instance will be created. Must + // specify [an image accessible from the provider remote](https://linuxcontainers.org/incus/docs/main/reference/image_servers/). + Image pulumi.StringPtrInput + // **Required** - Name of the instance. + Name pulumi.StringPtrInput + // *Optional* - List of Incus config profiles to apply to the new + // instance. Profile `default` will be applied if profiles are not set (are `null`). + // However, if an empty array (`[]`) is set as a value, no profiles will be applied. + Profiles pulumi.StringArrayInput + // *Optional* - Name of the project where the instance will be spawned. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Boolean indicating whether the instance should be started (running). Defaults to `true`. + Running pulumi.BoolPtrInput + // *Optional* - The souce backup file from which the instance should be restored. For handling of storage pool, see examples. + SourceFile pulumi.StringPtrInput + // *Optional* - The source instance from which the instance will be created. See reference below. + SourceInstance InstanceSourceInstancePtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput + // *Optional* - Instance type. Can be `container`, or `virtual-machine`. Defaults to `container`. + Type pulumi.StringPtrInput + // *Optional* - WaitFor definition. See reference below. + // If `running` is set to false or instance is already running (on update), this value has no effect. + WaitFors InstanceWaitForArrayInput +} + +func (InstanceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*instanceArgs)(nil)).Elem() +} + +type InstanceInput interface { + pulumi.Input + + ToInstanceOutput() InstanceOutput + ToInstanceOutputWithContext(ctx context.Context) InstanceOutput +} + +func (*Instance) ElementType() reflect.Type { + return reflect.TypeOf((**Instance)(nil)).Elem() +} + +func (i *Instance) ToInstanceOutput() InstanceOutput { + return i.ToInstanceOutputWithContext(context.Background()) +} + +func (i *Instance) ToInstanceOutputWithContext(ctx context.Context) InstanceOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceOutput) +} + +// InstanceArrayInput is an input type that accepts InstanceArray and InstanceArrayOutput values. +// You can construct a concrete instance of `InstanceArrayInput` via: +// +// InstanceArray{ InstanceArgs{...} } +type InstanceArrayInput interface { + pulumi.Input + + ToInstanceArrayOutput() InstanceArrayOutput + ToInstanceArrayOutputWithContext(context.Context) InstanceArrayOutput +} + +type InstanceArray []InstanceInput + +func (InstanceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Instance)(nil)).Elem() +} + +func (i InstanceArray) ToInstanceArrayOutput() InstanceArrayOutput { + return i.ToInstanceArrayOutputWithContext(context.Background()) +} + +func (i InstanceArray) ToInstanceArrayOutputWithContext(ctx context.Context) InstanceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceArrayOutput) +} + +// InstanceMapInput is an input type that accepts InstanceMap and InstanceMapOutput values. +// You can construct a concrete instance of `InstanceMapInput` via: +// +// InstanceMap{ "key": InstanceArgs{...} } +type InstanceMapInput interface { + pulumi.Input + + ToInstanceMapOutput() InstanceMapOutput + ToInstanceMapOutputWithContext(context.Context) InstanceMapOutput +} + +type InstanceMap map[string]InstanceInput + +func (InstanceMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Instance)(nil)).Elem() +} + +func (i InstanceMap) ToInstanceMapOutput() InstanceMapOutput { + return i.ToInstanceMapOutputWithContext(context.Background()) +} + +func (i InstanceMap) ToInstanceMapOutputWithContext(ctx context.Context) InstanceMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceMapOutput) +} + +type InstanceOutput struct{ *pulumi.OutputState } + +func (InstanceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Instance)(nil)).Elem() +} + +func (o InstanceOutput) ToInstanceOutput() InstanceOutput { + return o +} + +func (o InstanceOutput) ToInstanceOutputWithContext(ctx context.Context) InstanceOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). +func (o InstanceOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *Instance) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the instance. +func (o InstanceOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// *Optional* - Device definition. See reference below. +func (o InstanceOutput) Devices() InstanceDeviceArrayOutput { + return o.ApplyT(func(v *Instance) InstanceDeviceArrayOutput { return v.Devices }).(InstanceDeviceArrayOutput) +} + +// *Optional* - Boolean indicating if this instance is ephemeral. Defaults to `false`. +func (o InstanceOutput) Ephemeral() pulumi.BoolOutput { + return o.ApplyT(func(v *Instance) pulumi.BoolOutput { return v.Ephemeral }).(pulumi.BoolOutput) +} + +// *Optional* - File to upload to the instance. See reference below. +func (o InstanceOutput) Files() InstanceFileArrayOutput { + return o.ApplyT(func(v *Instance) InstanceFileArrayOutput { return v.Files }).(InstanceFileArrayOutput) +} + +// *Optional* - Base image from which the instance will be created. Must +// specify [an image accessible from the provider remote](https://linuxcontainers.org/incus/docs/main/reference/image_servers/). +func (o InstanceOutput) Image() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Instance) pulumi.StringPtrOutput { return v.Image }).(pulumi.StringPtrOutput) +} + +// The IPv4 Address of the instance. See Instance Network +// Access for more details. +func (o InstanceOutput) Ipv4Address() pulumi.StringOutput { + return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.Ipv4Address }).(pulumi.StringOutput) +} + +// The IPv6 Address of the instance. See Instance Network +// Access for more details. +func (o InstanceOutput) Ipv6Address() pulumi.StringOutput { + return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.Ipv6Address }).(pulumi.StringOutput) +} + +// The MAC address of the detected NIC. See Instance Network +// Access for more details. +func (o InstanceOutput) MacAddress() pulumi.StringOutput { + return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.MacAddress }).(pulumi.StringOutput) +} + +// **Required** - Name of the instance. +func (o InstanceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - List of Incus config profiles to apply to the new +// instance. Profile `default` will be applied if profiles are not set (are `null`). +// However, if an empty array (`[]`) is set as a value, no profiles will be applied. +func (o InstanceOutput) Profiles() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Instance) pulumi.StringArrayOutput { return v.Profiles }).(pulumi.StringArrayOutput) +} + +// *Optional* - Name of the project where the instance will be spawned. +func (o InstanceOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o InstanceOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Instance) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// *Optional* - Boolean indicating whether the instance should be started (running). Defaults to `true`. +func (o InstanceOutput) Running() pulumi.BoolOutput { + return o.ApplyT(func(v *Instance) pulumi.BoolOutput { return v.Running }).(pulumi.BoolOutput) +} + +// *Optional* - The souce backup file from which the instance should be restored. For handling of storage pool, see examples. +func (o InstanceOutput) SourceFile() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Instance) pulumi.StringPtrOutput { return v.SourceFile }).(pulumi.StringPtrOutput) +} + +// *Optional* - The source instance from which the instance will be created. See reference below. +func (o InstanceOutput) SourceInstance() InstanceSourceInstancePtrOutput { + return o.ApplyT(func(v *Instance) InstanceSourceInstancePtrOutput { return v.SourceInstance }).(InstanceSourceInstancePtrOutput) +} + +// The status of the instance. +func (o InstanceOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput) +} + +// *Optional* - Specify a target node in a cluster. +func (o InstanceOutput) Target() pulumi.StringOutput { + return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.Target }).(pulumi.StringOutput) +} + +// *Optional* - Instance type. Can be `container`, or `virtual-machine`. Defaults to `container`. +func (o InstanceOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput) +} + +// *Optional* - WaitFor definition. See reference below. +// If `running` is set to false or instance is already running (on update), this value has no effect. +func (o InstanceOutput) WaitFors() InstanceWaitForArrayOutput { + return o.ApplyT(func(v *Instance) InstanceWaitForArrayOutput { return v.WaitFors }).(InstanceWaitForArrayOutput) +} + +type InstanceArrayOutput struct{ *pulumi.OutputState } + +func (InstanceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Instance)(nil)).Elem() +} + +func (o InstanceArrayOutput) ToInstanceArrayOutput() InstanceArrayOutput { + return o +} + +func (o InstanceArrayOutput) ToInstanceArrayOutputWithContext(ctx context.Context) InstanceArrayOutput { + return o +} + +func (o InstanceArrayOutput) Index(i pulumi.IntInput) InstanceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Instance { + return vs[0].([]*Instance)[vs[1].(int)] + }).(InstanceOutput) +} + +type InstanceMapOutput struct{ *pulumi.OutputState } + +func (InstanceMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Instance)(nil)).Elem() +} + +func (o InstanceMapOutput) ToInstanceMapOutput() InstanceMapOutput { + return o +} + +func (o InstanceMapOutput) ToInstanceMapOutputWithContext(ctx context.Context) InstanceMapOutput { + return o +} + +func (o InstanceMapOutput) MapIndex(k pulumi.StringInput) InstanceOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Instance { + return vs[0].(map[string]*Instance)[vs[1].(string)] + }).(InstanceOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*InstanceInput)(nil)).Elem(), &Instance{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceArrayInput)(nil)).Elem(), InstanceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceMapInput)(nil)).Elem(), InstanceMap{}) + pulumi.RegisterOutputType(InstanceOutput{}) + pulumi.RegisterOutputType(InstanceArrayOutput{}) + pulumi.RegisterOutputType(InstanceMapOutput{}) +} diff --git a/sdk/go/incus/instanceSnapshot.go b/sdk/go/incus/instanceSnapshot.go new file mode 100644 index 0000000..94782ca --- /dev/null +++ b/sdk/go/incus/instanceSnapshot.go @@ -0,0 +1,352 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## # InstanceSnapshot +// +// Manages a snapshot of an Incus instance. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// instance, err := incus.NewInstance(ctx, "instance", &incus.InstanceArgs{ +// Name: pulumi.String("my-instance"), +// Image: pulumi.String("ubuntu"), +// Ephemeral: pulumi.Bool(false), +// }) +// if err != nil { +// return err +// } +// _, err = incus.NewInstanceSnapshot(ctx, "snap1", &incus.InstanceSnapshotArgs{ +// Name: pulumi.String("my-snapshot-1"), +// Instance: instance.Name, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +type InstanceSnapshot struct { + pulumi.CustomResourceState + + // The time Incus reported the snapshot was successfully created, + // in UTC. + CreatedAt pulumi.IntOutput `pulumi:"createdAt"` + // **Required** - The name of the instance to snapshot. + Instance pulumi.StringOutput `pulumi:"instance"` + // **Required** - Name of the snapshot. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - Name of the project where the snapshot will be stored. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // *Optional* - Set to `true` to create a stateful snapshot, + // `false` for stateless. Stateful snapshots include runtime state. Defaults to + // `false`. + Stateful pulumi.BoolOutput `pulumi:"stateful"` +} + +// NewInstanceSnapshot registers a new resource with the given unique name, arguments, and options. +func NewInstanceSnapshot(ctx *pulumi.Context, + name string, args *InstanceSnapshotArgs, opts ...pulumi.ResourceOption) (*InstanceSnapshot, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Instance == nil { + return nil, errors.New("invalid value for required argument 'Instance'") + } + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource InstanceSnapshot + err := ctx.RegisterResource("incus:index/instanceSnapshot:InstanceSnapshot", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetInstanceSnapshot gets an existing InstanceSnapshot resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetInstanceSnapshot(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *InstanceSnapshotState, opts ...pulumi.ResourceOption) (*InstanceSnapshot, error) { + var resource InstanceSnapshot + err := ctx.ReadResource("incus:index/instanceSnapshot:InstanceSnapshot", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering InstanceSnapshot resources. +type instanceSnapshotState struct { + // The time Incus reported the snapshot was successfully created, + // in UTC. + CreatedAt *int `pulumi:"createdAt"` + // **Required** - The name of the instance to snapshot. + Instance *string `pulumi:"instance"` + // **Required** - Name of the snapshot. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the snapshot will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Set to `true` to create a stateful snapshot, + // `false` for stateless. Stateful snapshots include runtime state. Defaults to + // `false`. + Stateful *bool `pulumi:"stateful"` +} + +type InstanceSnapshotState struct { + // The time Incus reported the snapshot was successfully created, + // in UTC. + CreatedAt pulumi.IntPtrInput + // **Required** - The name of the instance to snapshot. + Instance pulumi.StringPtrInput + // **Required** - Name of the snapshot. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the snapshot will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Set to `true` to create a stateful snapshot, + // `false` for stateless. Stateful snapshots include runtime state. Defaults to + // `false`. + Stateful pulumi.BoolPtrInput +} + +func (InstanceSnapshotState) ElementType() reflect.Type { + return reflect.TypeOf((*instanceSnapshotState)(nil)).Elem() +} + +type instanceSnapshotArgs struct { + // **Required** - The name of the instance to snapshot. + Instance string `pulumi:"instance"` + // **Required** - Name of the snapshot. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the snapshot will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Set to `true` to create a stateful snapshot, + // `false` for stateless. Stateful snapshots include runtime state. Defaults to + // `false`. + Stateful *bool `pulumi:"stateful"` +} + +// The set of arguments for constructing a InstanceSnapshot resource. +type InstanceSnapshotArgs struct { + // **Required** - The name of the instance to snapshot. + Instance pulumi.StringInput + // **Required** - Name of the snapshot. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the snapshot will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Set to `true` to create a stateful snapshot, + // `false` for stateless. Stateful snapshots include runtime state. Defaults to + // `false`. + Stateful pulumi.BoolPtrInput +} + +func (InstanceSnapshotArgs) ElementType() reflect.Type { + return reflect.TypeOf((*instanceSnapshotArgs)(nil)).Elem() +} + +type InstanceSnapshotInput interface { + pulumi.Input + + ToInstanceSnapshotOutput() InstanceSnapshotOutput + ToInstanceSnapshotOutputWithContext(ctx context.Context) InstanceSnapshotOutput +} + +func (*InstanceSnapshot) ElementType() reflect.Type { + return reflect.TypeOf((**InstanceSnapshot)(nil)).Elem() +} + +func (i *InstanceSnapshot) ToInstanceSnapshotOutput() InstanceSnapshotOutput { + return i.ToInstanceSnapshotOutputWithContext(context.Background()) +} + +func (i *InstanceSnapshot) ToInstanceSnapshotOutputWithContext(ctx context.Context) InstanceSnapshotOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceSnapshotOutput) +} + +// InstanceSnapshotArrayInput is an input type that accepts InstanceSnapshotArray and InstanceSnapshotArrayOutput values. +// You can construct a concrete instance of `InstanceSnapshotArrayInput` via: +// +// InstanceSnapshotArray{ InstanceSnapshotArgs{...} } +type InstanceSnapshotArrayInput interface { + pulumi.Input + + ToInstanceSnapshotArrayOutput() InstanceSnapshotArrayOutput + ToInstanceSnapshotArrayOutputWithContext(context.Context) InstanceSnapshotArrayOutput +} + +type InstanceSnapshotArray []InstanceSnapshotInput + +func (InstanceSnapshotArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InstanceSnapshot)(nil)).Elem() +} + +func (i InstanceSnapshotArray) ToInstanceSnapshotArrayOutput() InstanceSnapshotArrayOutput { + return i.ToInstanceSnapshotArrayOutputWithContext(context.Background()) +} + +func (i InstanceSnapshotArray) ToInstanceSnapshotArrayOutputWithContext(ctx context.Context) InstanceSnapshotArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceSnapshotArrayOutput) +} + +// InstanceSnapshotMapInput is an input type that accepts InstanceSnapshotMap and InstanceSnapshotMapOutput values. +// You can construct a concrete instance of `InstanceSnapshotMapInput` via: +// +// InstanceSnapshotMap{ "key": InstanceSnapshotArgs{...} } +type InstanceSnapshotMapInput interface { + pulumi.Input + + ToInstanceSnapshotMapOutput() InstanceSnapshotMapOutput + ToInstanceSnapshotMapOutputWithContext(context.Context) InstanceSnapshotMapOutput +} + +type InstanceSnapshotMap map[string]InstanceSnapshotInput + +func (InstanceSnapshotMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InstanceSnapshot)(nil)).Elem() +} + +func (i InstanceSnapshotMap) ToInstanceSnapshotMapOutput() InstanceSnapshotMapOutput { + return i.ToInstanceSnapshotMapOutputWithContext(context.Background()) +} + +func (i InstanceSnapshotMap) ToInstanceSnapshotMapOutputWithContext(ctx context.Context) InstanceSnapshotMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceSnapshotMapOutput) +} + +type InstanceSnapshotOutput struct{ *pulumi.OutputState } + +func (InstanceSnapshotOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InstanceSnapshot)(nil)).Elem() +} + +func (o InstanceSnapshotOutput) ToInstanceSnapshotOutput() InstanceSnapshotOutput { + return o +} + +func (o InstanceSnapshotOutput) ToInstanceSnapshotOutputWithContext(ctx context.Context) InstanceSnapshotOutput { + return o +} + +// The time Incus reported the snapshot was successfully created, +// in UTC. +func (o InstanceSnapshotOutput) CreatedAt() pulumi.IntOutput { + return o.ApplyT(func(v *InstanceSnapshot) pulumi.IntOutput { return v.CreatedAt }).(pulumi.IntOutput) +} + +// **Required** - The name of the instance to snapshot. +func (o InstanceSnapshotOutput) Instance() pulumi.StringOutput { + return o.ApplyT(func(v *InstanceSnapshot) pulumi.StringOutput { return v.Instance }).(pulumi.StringOutput) +} + +// **Required** - Name of the snapshot. +func (o InstanceSnapshotOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *InstanceSnapshot) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the snapshot will be stored. +func (o InstanceSnapshotOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *InstanceSnapshot) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o InstanceSnapshotOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InstanceSnapshot) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// *Optional* - Set to `true` to create a stateful snapshot, +// `false` for stateless. Stateful snapshots include runtime state. Defaults to +// `false`. +func (o InstanceSnapshotOutput) Stateful() pulumi.BoolOutput { + return o.ApplyT(func(v *InstanceSnapshot) pulumi.BoolOutput { return v.Stateful }).(pulumi.BoolOutput) +} + +type InstanceSnapshotArrayOutput struct{ *pulumi.OutputState } + +func (InstanceSnapshotArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InstanceSnapshot)(nil)).Elem() +} + +func (o InstanceSnapshotArrayOutput) ToInstanceSnapshotArrayOutput() InstanceSnapshotArrayOutput { + return o +} + +func (o InstanceSnapshotArrayOutput) ToInstanceSnapshotArrayOutputWithContext(ctx context.Context) InstanceSnapshotArrayOutput { + return o +} + +func (o InstanceSnapshotArrayOutput) Index(i pulumi.IntInput) InstanceSnapshotOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *InstanceSnapshot { + return vs[0].([]*InstanceSnapshot)[vs[1].(int)] + }).(InstanceSnapshotOutput) +} + +type InstanceSnapshotMapOutput struct{ *pulumi.OutputState } + +func (InstanceSnapshotMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InstanceSnapshot)(nil)).Elem() +} + +func (o InstanceSnapshotMapOutput) ToInstanceSnapshotMapOutput() InstanceSnapshotMapOutput { + return o +} + +func (o InstanceSnapshotMapOutput) ToInstanceSnapshotMapOutputWithContext(ctx context.Context) InstanceSnapshotMapOutput { + return o +} + +func (o InstanceSnapshotMapOutput) MapIndex(k pulumi.StringInput) InstanceSnapshotOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *InstanceSnapshot { + return vs[0].(map[string]*InstanceSnapshot)[vs[1].(string)] + }).(InstanceSnapshotOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*InstanceSnapshotInput)(nil)).Elem(), &InstanceSnapshot{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceSnapshotArrayInput)(nil)).Elem(), InstanceSnapshotArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceSnapshotMapInput)(nil)).Elem(), InstanceSnapshotMap{}) + pulumi.RegisterOutputType(InstanceSnapshotOutput{}) + pulumi.RegisterOutputType(InstanceSnapshotArrayOutput{}) + pulumi.RegisterOutputType(InstanceSnapshotMapOutput{}) +} diff --git a/sdk/go/incus/internal/pulumiUtilities.go b/sdk/go/incus/internal/pulumiUtilities.go new file mode 100644 index 0000000..7260221 --- /dev/null +++ b/sdk/go/incus/internal/pulumiUtilities.go @@ -0,0 +1,184 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package internal + +import ( + "fmt" + "os" + "reflect" + "regexp" + "strconv" + "strings" + + "github.com/blang/semver" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +import ( + "github.com/pulumi/pulumi/sdk/v3/go/pulumi/internals" +) + +type envParser func(v string) interface{} + +func ParseEnvBool(v string) interface{} { + b, err := strconv.ParseBool(v) + if err != nil { + return nil + } + return b +} + +func ParseEnvInt(v string) interface{} { + i, err := strconv.ParseInt(v, 0, 0) + if err != nil { + return nil + } + return int(i) +} + +func ParseEnvFloat(v string) interface{} { + f, err := strconv.ParseFloat(v, 64) + if err != nil { + return nil + } + return f +} + +func ParseEnvStringArray(v string) interface{} { + var result pulumi.StringArray + for _, item := range strings.Split(v, ";") { + result = append(result, pulumi.String(item)) + } + return result +} + +func GetEnvOrDefault(def interface{}, parser envParser, vars ...string) interface{} { + for _, v := range vars { + if value, ok := os.LookupEnv(v); ok { + if parser != nil { + return parser(value) + } + return value + } + } + return def +} + +// PkgVersion uses reflection to determine the version of the current package. +// If a version cannot be determined, v1 will be assumed. The second return +// value is always nil. +func PkgVersion() (semver.Version, error) { + // emptyVersion defaults to v0.0.0 + if !SdkVersion.Equals(semver.Version{}) { + return SdkVersion, nil + } + type sentinal struct{} + pkgPath := reflect.TypeOf(sentinal{}).PkgPath() + re := regexp.MustCompile("^.*/pulumi-incus/sdk(/v\\d+)?") + if match := re.FindStringSubmatch(pkgPath); match != nil { + vStr := match[1] + if len(vStr) == 0 { // If the version capture group was empty, default to v1. + return semver.Version{Major: 1}, nil + } + return semver.MustParse(fmt.Sprintf("%s.0.0", vStr[2:])), nil + } + return semver.Version{Major: 1}, nil +} + +// isZero is a null safe check for if a value is it's types zero value. +func IsZero(v interface{}) bool { + if v == nil { + return true + } + return reflect.ValueOf(v).IsZero() +} + +func CallPlain( + ctx *pulumi.Context, + tok string, + args pulumi.Input, + output pulumi.Output, + self pulumi.Resource, + property string, + resultPtr reflect.Value, + errorPtr *error, + opts ...pulumi.InvokeOption, +) { + res, err := callPlainInner(ctx, tok, args, output, self, opts...) + if err != nil { + *errorPtr = err + return + } + + v := reflect.ValueOf(res) + + // extract res.property field if asked to do so + if property != "" { + v = v.FieldByName("Res") + } + + // return by setting the result pointer; this style of returns shortens the generated code without generics + resultPtr.Elem().Set(v) +} + +func callPlainInner( + ctx *pulumi.Context, + tok string, + args pulumi.Input, + output pulumi.Output, + self pulumi.Resource, + opts ...pulumi.InvokeOption, +) (any, error) { + o, err := ctx.Call(tok, args, output, self, opts...) + if err != nil { + return nil, err + } + + outputData, err := internals.UnsafeAwaitOutput(ctx.Context(), o) + if err != nil { + return nil, err + } + + // Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency. + known := outputData.Known + value := outputData.Value + secret := outputData.Secret + + problem := "" + if !known { + problem = "an unknown value" + } else if secret { + problem = "a secret value" + } + + if problem != "" { + return nil, fmt.Errorf("Plain resource method %q incorrectly returned %s. "+ + "This is an error in the provider, please report this to the provider developer.", + tok, problem) + } + + return value, nil +} + +// PkgResourceDefaultOpts provides package level defaults to pulumi.OptionResource. +func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption { + defaults := []pulumi.ResourceOption{} + defaults = append(defaults, pulumi.PluginDownloadURL("https://git.kalinow.ski/api/packages/kiterun/generic/pulumi-incus/${VERSION}/")) + version := semver.MustParse("1.0.0-alpha.0+dev") + if !version.Equals(semver.Version{}) { + defaults = append(defaults, pulumi.Version(version.String())) + } + return append(defaults, opts...) +} + +// PkgInvokeDefaultOpts provides package level defaults to pulumi.OptionInvoke. +func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption { + defaults := []pulumi.InvokeOption{} + defaults = append(defaults, pulumi.PluginDownloadURL("https://git.kalinow.ski/api/packages/kiterun/generic/pulumi-incus/${VERSION}/")) + version := semver.MustParse("1.0.0-alpha.0+dev") + if !version.Equals(semver.Version{}) { + defaults = append(defaults, pulumi.Version(version.String())) + } + return append(defaults, opts...) +} diff --git a/sdk/go/incus/internal/pulumiVersion.go b/sdk/go/incus/internal/pulumiVersion.go new file mode 100644 index 0000000..d591687 --- /dev/null +++ b/sdk/go/incus/internal/pulumiVersion.go @@ -0,0 +1,11 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package internal + +import ( + "github.com/blang/semver" +) + +var SdkVersion semver.Version = semver.Version{} +var pluginDownloadURL string = "" diff --git a/sdk/go/incus/network.go b/sdk/go/incus/network.go new file mode 100644 index 0000000..d9455f6 --- /dev/null +++ b/sdk/go/incus/network.go @@ -0,0 +1,348 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type Network struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // [network config settings](https://linuxcontainers.org/incus/docs/main/networks/). + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the network. + Description pulumi.StringOutput `pulumi:"description"` + // Whether or not the network is managed. + Managed pulumi.BoolOutput `pulumi:"managed"` + // **Required** - Name of the network. This is usually the device the + // network will appear as to instances. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - Name of the project where the network will be created. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrOutput `pulumi:"target"` + // *Optional* - The type of network to create. Can be one of: bridge, + // macvlan, sriov, ovn, or physical. If no type is specified, a bridge network + // is created. + Type pulumi.StringOutput `pulumi:"type"` +} + +// NewNetwork registers a new resource with the given unique name, arguments, and options. +func NewNetwork(ctx *pulumi.Context, + name string, args *NetworkArgs, opts ...pulumi.ResourceOption) (*Network, error) { + if args == nil { + args = &NetworkArgs{} + } + + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Network + err := ctx.RegisterResource("incus:index/network:Network", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetwork gets an existing Network resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetNetwork(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkState, opts ...pulumi.ResourceOption) (*Network, error) { + var resource Network + err := ctx.ReadResource("incus:index/network:Network", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Network resources. +type networkState struct { + // *Optional* - Map of key/value pairs of + // [network config settings](https://linuxcontainers.org/incus/docs/main/networks/). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network. + Description *string `pulumi:"description"` + // Whether or not the network is managed. + Managed *bool `pulumi:"managed"` + // **Required** - Name of the network. This is usually the device the + // network will appear as to instances. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` + // *Optional* - The type of network to create. Can be one of: bridge, + // macvlan, sriov, ovn, or physical. If no type is specified, a bridge network + // is created. + Type *string `pulumi:"type"` +} + +type NetworkState struct { + // *Optional* - Map of key/value pairs of + // [network config settings](https://linuxcontainers.org/incus/docs/main/networks/). + Config pulumi.StringMapInput + // *Optional* - Description of the network. + Description pulumi.StringPtrInput + // Whether or not the network is managed. + Managed pulumi.BoolPtrInput + // **Required** - Name of the network. This is usually the device the + // network will appear as to instances. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput + // *Optional* - The type of network to create. Can be one of: bridge, + // macvlan, sriov, ovn, or physical. If no type is specified, a bridge network + // is created. + Type pulumi.StringPtrInput +} + +func (NetworkState) ElementType() reflect.Type { + return reflect.TypeOf((*networkState)(nil)).Elem() +} + +type networkArgs struct { + // *Optional* - Map of key/value pairs of + // [network config settings](https://linuxcontainers.org/incus/docs/main/networks/). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network. + Description *string `pulumi:"description"` + // **Required** - Name of the network. This is usually the device the + // network will appear as to instances. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` + // *Optional* - The type of network to create. Can be one of: bridge, + // macvlan, sriov, ovn, or physical. If no type is specified, a bridge network + // is created. + Type *string `pulumi:"type"` +} + +// The set of arguments for constructing a Network resource. +type NetworkArgs struct { + // *Optional* - Map of key/value pairs of + // [network config settings](https://linuxcontainers.org/incus/docs/main/networks/). + Config pulumi.StringMapInput + // *Optional* - Description of the network. + Description pulumi.StringPtrInput + // **Required** - Name of the network. This is usually the device the + // network will appear as to instances. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput + // *Optional* - The type of network to create. Can be one of: bridge, + // macvlan, sriov, ovn, or physical. If no type is specified, a bridge network + // is created. + Type pulumi.StringPtrInput +} + +func (NetworkArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkArgs)(nil)).Elem() +} + +type NetworkInput interface { + pulumi.Input + + ToNetworkOutput() NetworkOutput + ToNetworkOutputWithContext(ctx context.Context) NetworkOutput +} + +func (*Network) ElementType() reflect.Type { + return reflect.TypeOf((**Network)(nil)).Elem() +} + +func (i *Network) ToNetworkOutput() NetworkOutput { + return i.ToNetworkOutputWithContext(context.Background()) +} + +func (i *Network) ToNetworkOutputWithContext(ctx context.Context) NetworkOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkOutput) +} + +// NetworkArrayInput is an input type that accepts NetworkArray and NetworkArrayOutput values. +// You can construct a concrete instance of `NetworkArrayInput` via: +// +// NetworkArray{ NetworkArgs{...} } +type NetworkArrayInput interface { + pulumi.Input + + ToNetworkArrayOutput() NetworkArrayOutput + ToNetworkArrayOutputWithContext(context.Context) NetworkArrayOutput +} + +type NetworkArray []NetworkInput + +func (NetworkArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Network)(nil)).Elem() +} + +func (i NetworkArray) ToNetworkArrayOutput() NetworkArrayOutput { + return i.ToNetworkArrayOutputWithContext(context.Background()) +} + +func (i NetworkArray) ToNetworkArrayOutputWithContext(ctx context.Context) NetworkArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkArrayOutput) +} + +// NetworkMapInput is an input type that accepts NetworkMap and NetworkMapOutput values. +// You can construct a concrete instance of `NetworkMapInput` via: +// +// NetworkMap{ "key": NetworkArgs{...} } +type NetworkMapInput interface { + pulumi.Input + + ToNetworkMapOutput() NetworkMapOutput + ToNetworkMapOutputWithContext(context.Context) NetworkMapOutput +} + +type NetworkMap map[string]NetworkInput + +func (NetworkMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Network)(nil)).Elem() +} + +func (i NetworkMap) ToNetworkMapOutput() NetworkMapOutput { + return i.ToNetworkMapOutputWithContext(context.Background()) +} + +func (i NetworkMap) ToNetworkMapOutputWithContext(ctx context.Context) NetworkMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkMapOutput) +} + +type NetworkOutput struct{ *pulumi.OutputState } + +func (NetworkOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Network)(nil)).Elem() +} + +func (o NetworkOutput) ToNetworkOutput() NetworkOutput { + return o +} + +func (o NetworkOutput) ToNetworkOutputWithContext(ctx context.Context) NetworkOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// [network config settings](https://linuxcontainers.org/incus/docs/main/networks/). +func (o NetworkOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *Network) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the network. +func (o NetworkOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// Whether or not the network is managed. +func (o NetworkOutput) Managed() pulumi.BoolOutput { + return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.Managed }).(pulumi.BoolOutput) +} + +// **Required** - Name of the network. This is usually the device the +// network will appear as to instances. +func (o NetworkOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the network will be created. +func (o NetworkOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o NetworkOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// *Optional* - Specify a target node in a cluster. +func (o NetworkOutput) Target() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.Target }).(pulumi.StringPtrOutput) +} + +// *Optional* - The type of network to create. Can be one of: bridge, +// macvlan, sriov, ovn, or physical. If no type is specified, a bridge network +// is created. +func (o NetworkOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput) +} + +type NetworkArrayOutput struct{ *pulumi.OutputState } + +func (NetworkArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Network)(nil)).Elem() +} + +func (o NetworkArrayOutput) ToNetworkArrayOutput() NetworkArrayOutput { + return o +} + +func (o NetworkArrayOutput) ToNetworkArrayOutputWithContext(ctx context.Context) NetworkArrayOutput { + return o +} + +func (o NetworkArrayOutput) Index(i pulumi.IntInput) NetworkOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Network { + return vs[0].([]*Network)[vs[1].(int)] + }).(NetworkOutput) +} + +type NetworkMapOutput struct{ *pulumi.OutputState } + +func (NetworkMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Network)(nil)).Elem() +} + +func (o NetworkMapOutput) ToNetworkMapOutput() NetworkMapOutput { + return o +} + +func (o NetworkMapOutput) ToNetworkMapOutputWithContext(ctx context.Context) NetworkMapOutput { + return o +} + +func (o NetworkMapOutput) MapIndex(k pulumi.StringInput) NetworkOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Network { + return vs[0].(map[string]*Network)[vs[1].(string)] + }).(NetworkOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkInput)(nil)).Elem(), &Network{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkArrayInput)(nil)).Elem(), NetworkArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkMapInput)(nil)).Elem(), NetworkMap{}) + pulumi.RegisterOutputType(NetworkOutput{}) + pulumi.RegisterOutputType(NetworkArrayOutput{}) + pulumi.RegisterOutputType(NetworkMapOutput{}) +} diff --git a/sdk/go/incus/networkAcl.go b/sdk/go/incus/networkAcl.go new file mode 100644 index 0000000..dd0aea5 --- /dev/null +++ b/sdk/go/incus/networkAcl.go @@ -0,0 +1,331 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type NetworkAcl struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // network ACL config settings. + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the network ACL rule. + Description pulumi.StringOutput `pulumi:"description"` + // *Optional* - List of network ACL rules for egress traffic. See reference below. + Egresses NetworkAclEgressArrayOutput `pulumi:"egresses"` + // *Optional* - List of network ACL rules for ingress traffic. See reference below. + // + // The network ACL rule supports: + Ingresses NetworkAclIngressArrayOutput `pulumi:"ingresses"` + // **Required** - Name of the network ACL. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - Name of the project where the network ACL will be created. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` +} + +// NewNetworkAcl registers a new resource with the given unique name, arguments, and options. +func NewNetworkAcl(ctx *pulumi.Context, + name string, args *NetworkAclArgs, opts ...pulumi.ResourceOption) (*NetworkAcl, error) { + if args == nil { + args = &NetworkAclArgs{} + } + + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource NetworkAcl + err := ctx.RegisterResource("incus:index/networkAcl:NetworkAcl", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetworkAcl gets an existing NetworkAcl resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetNetworkAcl(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkAclState, opts ...pulumi.ResourceOption) (*NetworkAcl, error) { + var resource NetworkAcl + err := ctx.ReadResource("incus:index/networkAcl:NetworkAcl", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering NetworkAcl resources. +type networkAclState struct { + // *Optional* - Map of key/value pairs of + // network ACL config settings. + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network ACL rule. + Description *string `pulumi:"description"` + // *Optional* - List of network ACL rules for egress traffic. See reference below. + Egresses []NetworkAclEgress `pulumi:"egresses"` + // *Optional* - List of network ACL rules for ingress traffic. See reference below. + // + // The network ACL rule supports: + Ingresses []NetworkAclIngress `pulumi:"ingresses"` + // **Required** - Name of the network ACL. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network ACL will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +type NetworkAclState struct { + // *Optional* - Map of key/value pairs of + // network ACL config settings. + Config pulumi.StringMapInput + // *Optional* - Description of the network ACL rule. + Description pulumi.StringPtrInput + // *Optional* - List of network ACL rules for egress traffic. See reference below. + Egresses NetworkAclEgressArrayInput + // *Optional* - List of network ACL rules for ingress traffic. See reference below. + // + // The network ACL rule supports: + Ingresses NetworkAclIngressArrayInput + // **Required** - Name of the network ACL. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network ACL will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (NetworkAclState) ElementType() reflect.Type { + return reflect.TypeOf((*networkAclState)(nil)).Elem() +} + +type networkAclArgs struct { + // *Optional* - Map of key/value pairs of + // network ACL config settings. + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network ACL rule. + Description *string `pulumi:"description"` + // *Optional* - List of network ACL rules for egress traffic. See reference below. + Egresses []NetworkAclEgress `pulumi:"egresses"` + // *Optional* - List of network ACL rules for ingress traffic. See reference below. + // + // The network ACL rule supports: + Ingresses []NetworkAclIngress `pulumi:"ingresses"` + // **Required** - Name of the network ACL. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network ACL will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// The set of arguments for constructing a NetworkAcl resource. +type NetworkAclArgs struct { + // *Optional* - Map of key/value pairs of + // network ACL config settings. + Config pulumi.StringMapInput + // *Optional* - Description of the network ACL rule. + Description pulumi.StringPtrInput + // *Optional* - List of network ACL rules for egress traffic. See reference below. + Egresses NetworkAclEgressArrayInput + // *Optional* - List of network ACL rules for ingress traffic. See reference below. + // + // The network ACL rule supports: + Ingresses NetworkAclIngressArrayInput + // **Required** - Name of the network ACL. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network ACL will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (NetworkAclArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkAclArgs)(nil)).Elem() +} + +type NetworkAclInput interface { + pulumi.Input + + ToNetworkAclOutput() NetworkAclOutput + ToNetworkAclOutputWithContext(ctx context.Context) NetworkAclOutput +} + +func (*NetworkAcl) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkAcl)(nil)).Elem() +} + +func (i *NetworkAcl) ToNetworkAclOutput() NetworkAclOutput { + return i.ToNetworkAclOutputWithContext(context.Background()) +} + +func (i *NetworkAcl) ToNetworkAclOutputWithContext(ctx context.Context) NetworkAclOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkAclOutput) +} + +// NetworkAclArrayInput is an input type that accepts NetworkAclArray and NetworkAclArrayOutput values. +// You can construct a concrete instance of `NetworkAclArrayInput` via: +// +// NetworkAclArray{ NetworkAclArgs{...} } +type NetworkAclArrayInput interface { + pulumi.Input + + ToNetworkAclArrayOutput() NetworkAclArrayOutput + ToNetworkAclArrayOutputWithContext(context.Context) NetworkAclArrayOutput +} + +type NetworkAclArray []NetworkAclInput + +func (NetworkAclArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkAcl)(nil)).Elem() +} + +func (i NetworkAclArray) ToNetworkAclArrayOutput() NetworkAclArrayOutput { + return i.ToNetworkAclArrayOutputWithContext(context.Background()) +} + +func (i NetworkAclArray) ToNetworkAclArrayOutputWithContext(ctx context.Context) NetworkAclArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkAclArrayOutput) +} + +// NetworkAclMapInput is an input type that accepts NetworkAclMap and NetworkAclMapOutput values. +// You can construct a concrete instance of `NetworkAclMapInput` via: +// +// NetworkAclMap{ "key": NetworkAclArgs{...} } +type NetworkAclMapInput interface { + pulumi.Input + + ToNetworkAclMapOutput() NetworkAclMapOutput + ToNetworkAclMapOutputWithContext(context.Context) NetworkAclMapOutput +} + +type NetworkAclMap map[string]NetworkAclInput + +func (NetworkAclMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkAcl)(nil)).Elem() +} + +func (i NetworkAclMap) ToNetworkAclMapOutput() NetworkAclMapOutput { + return i.ToNetworkAclMapOutputWithContext(context.Background()) +} + +func (i NetworkAclMap) ToNetworkAclMapOutputWithContext(ctx context.Context) NetworkAclMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkAclMapOutput) +} + +type NetworkAclOutput struct{ *pulumi.OutputState } + +func (NetworkAclOutput) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkAcl)(nil)).Elem() +} + +func (o NetworkAclOutput) ToNetworkAclOutput() NetworkAclOutput { + return o +} + +func (o NetworkAclOutput) ToNetworkAclOutputWithContext(ctx context.Context) NetworkAclOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// network ACL config settings. +func (o NetworkAclOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *NetworkAcl) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the network ACL rule. +func (o NetworkAclOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkAcl) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// *Optional* - List of network ACL rules for egress traffic. See reference below. +func (o NetworkAclOutput) Egresses() NetworkAclEgressArrayOutput { + return o.ApplyT(func(v *NetworkAcl) NetworkAclEgressArrayOutput { return v.Egresses }).(NetworkAclEgressArrayOutput) +} + +// *Optional* - List of network ACL rules for ingress traffic. See reference below. +// +// The network ACL rule supports: +func (o NetworkAclOutput) Ingresses() NetworkAclIngressArrayOutput { + return o.ApplyT(func(v *NetworkAcl) NetworkAclIngressArrayOutput { return v.Ingresses }).(NetworkAclIngressArrayOutput) +} + +// **Required** - Name of the network ACL. +func (o NetworkAclOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkAcl) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the network ACL will be created. +func (o NetworkAclOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkAcl) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o NetworkAclOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkAcl) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +type NetworkAclArrayOutput struct{ *pulumi.OutputState } + +func (NetworkAclArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkAcl)(nil)).Elem() +} + +func (o NetworkAclArrayOutput) ToNetworkAclArrayOutput() NetworkAclArrayOutput { + return o +} + +func (o NetworkAclArrayOutput) ToNetworkAclArrayOutputWithContext(ctx context.Context) NetworkAclArrayOutput { + return o +} + +func (o NetworkAclArrayOutput) Index(i pulumi.IntInput) NetworkAclOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *NetworkAcl { + return vs[0].([]*NetworkAcl)[vs[1].(int)] + }).(NetworkAclOutput) +} + +type NetworkAclMapOutput struct{ *pulumi.OutputState } + +func (NetworkAclMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkAcl)(nil)).Elem() +} + +func (o NetworkAclMapOutput) ToNetworkAclMapOutput() NetworkAclMapOutput { + return o +} + +func (o NetworkAclMapOutput) ToNetworkAclMapOutputWithContext(ctx context.Context) NetworkAclMapOutput { + return o +} + +func (o NetworkAclMapOutput) MapIndex(k pulumi.StringInput) NetworkAclOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *NetworkAcl { + return vs[0].(map[string]*NetworkAcl)[vs[1].(string)] + }).(NetworkAclOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkAclInput)(nil)).Elem(), &NetworkAcl{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkAclArrayInput)(nil)).Elem(), NetworkAclArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkAclMapInput)(nil)).Elem(), NetworkAclMap{}) + pulumi.RegisterOutputType(NetworkAclOutput{}) + pulumi.RegisterOutputType(NetworkAclArrayOutput{}) + pulumi.RegisterOutputType(NetworkAclMapOutput{}) +} diff --git a/sdk/go/incus/networkForward.go b/sdk/go/incus/networkForward.go new file mode 100644 index 0000000..8186eb5 --- /dev/null +++ b/sdk/go/incus/networkForward.go @@ -0,0 +1,335 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type NetworkForward struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // network forward config settings. + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of port(s) + Description pulumi.StringOutput `pulumi:"description"` + // **Required** - IP address to listen on. + ListenAddress pulumi.StringOutput `pulumi:"listenAddress"` + // **Required** - Name of the network. + Network pulumi.StringOutput `pulumi:"network"` + // *Optional* - List of port specifications. See reference below. + // + // The network forward port supports: + Ports NetworkForwardPortArrayOutput `pulumi:"ports"` + // *Optional* - Name of the project where the network forward will be created. + Project pulumi.StringPtrOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` +} + +// NewNetworkForward registers a new resource with the given unique name, arguments, and options. +func NewNetworkForward(ctx *pulumi.Context, + name string, args *NetworkForwardArgs, opts ...pulumi.ResourceOption) (*NetworkForward, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ListenAddress == nil { + return nil, errors.New("invalid value for required argument 'ListenAddress'") + } + if args.Network == nil { + return nil, errors.New("invalid value for required argument 'Network'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource NetworkForward + err := ctx.RegisterResource("incus:index/networkForward:NetworkForward", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetworkForward gets an existing NetworkForward resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetNetworkForward(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkForwardState, opts ...pulumi.ResourceOption) (*NetworkForward, error) { + var resource NetworkForward + err := ctx.ReadResource("incus:index/networkForward:NetworkForward", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering NetworkForward resources. +type networkForwardState struct { + // *Optional* - Map of key/value pairs of + // network forward config settings. + Config map[string]string `pulumi:"config"` + // *Optional* - Description of port(s) + Description *string `pulumi:"description"` + // **Required** - IP address to listen on. + ListenAddress *string `pulumi:"listenAddress"` + // **Required** - Name of the network. + Network *string `pulumi:"network"` + // *Optional* - List of port specifications. See reference below. + // + // The network forward port supports: + Ports []NetworkForwardPort `pulumi:"ports"` + // *Optional* - Name of the project where the network forward will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +type NetworkForwardState struct { + // *Optional* - Map of key/value pairs of + // network forward config settings. + Config pulumi.StringMapInput + // *Optional* - Description of port(s) + Description pulumi.StringPtrInput + // **Required** - IP address to listen on. + ListenAddress pulumi.StringPtrInput + // **Required** - Name of the network. + Network pulumi.StringPtrInput + // *Optional* - List of port specifications. See reference below. + // + // The network forward port supports: + Ports NetworkForwardPortArrayInput + // *Optional* - Name of the project where the network forward will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (NetworkForwardState) ElementType() reflect.Type { + return reflect.TypeOf((*networkForwardState)(nil)).Elem() +} + +type networkForwardArgs struct { + // *Optional* - Map of key/value pairs of + // network forward config settings. + Config map[string]string `pulumi:"config"` + // *Optional* - Description of port(s) + Description *string `pulumi:"description"` + // **Required** - IP address to listen on. + ListenAddress string `pulumi:"listenAddress"` + // **Required** - Name of the network. + Network string `pulumi:"network"` + // *Optional* - List of port specifications. See reference below. + // + // The network forward port supports: + Ports []NetworkForwardPort `pulumi:"ports"` + // *Optional* - Name of the project where the network forward will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// The set of arguments for constructing a NetworkForward resource. +type NetworkForwardArgs struct { + // *Optional* - Map of key/value pairs of + // network forward config settings. + Config pulumi.StringMapInput + // *Optional* - Description of port(s) + Description pulumi.StringPtrInput + // **Required** - IP address to listen on. + ListenAddress pulumi.StringInput + // **Required** - Name of the network. + Network pulumi.StringInput + // *Optional* - List of port specifications. See reference below. + // + // The network forward port supports: + Ports NetworkForwardPortArrayInput + // *Optional* - Name of the project where the network forward will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (NetworkForwardArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkForwardArgs)(nil)).Elem() +} + +type NetworkForwardInput interface { + pulumi.Input + + ToNetworkForwardOutput() NetworkForwardOutput + ToNetworkForwardOutputWithContext(ctx context.Context) NetworkForwardOutput +} + +func (*NetworkForward) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkForward)(nil)).Elem() +} + +func (i *NetworkForward) ToNetworkForwardOutput() NetworkForwardOutput { + return i.ToNetworkForwardOutputWithContext(context.Background()) +} + +func (i *NetworkForward) ToNetworkForwardOutputWithContext(ctx context.Context) NetworkForwardOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkForwardOutput) +} + +// NetworkForwardArrayInput is an input type that accepts NetworkForwardArray and NetworkForwardArrayOutput values. +// You can construct a concrete instance of `NetworkForwardArrayInput` via: +// +// NetworkForwardArray{ NetworkForwardArgs{...} } +type NetworkForwardArrayInput interface { + pulumi.Input + + ToNetworkForwardArrayOutput() NetworkForwardArrayOutput + ToNetworkForwardArrayOutputWithContext(context.Context) NetworkForwardArrayOutput +} + +type NetworkForwardArray []NetworkForwardInput + +func (NetworkForwardArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkForward)(nil)).Elem() +} + +func (i NetworkForwardArray) ToNetworkForwardArrayOutput() NetworkForwardArrayOutput { + return i.ToNetworkForwardArrayOutputWithContext(context.Background()) +} + +func (i NetworkForwardArray) ToNetworkForwardArrayOutputWithContext(ctx context.Context) NetworkForwardArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkForwardArrayOutput) +} + +// NetworkForwardMapInput is an input type that accepts NetworkForwardMap and NetworkForwardMapOutput values. +// You can construct a concrete instance of `NetworkForwardMapInput` via: +// +// NetworkForwardMap{ "key": NetworkForwardArgs{...} } +type NetworkForwardMapInput interface { + pulumi.Input + + ToNetworkForwardMapOutput() NetworkForwardMapOutput + ToNetworkForwardMapOutputWithContext(context.Context) NetworkForwardMapOutput +} + +type NetworkForwardMap map[string]NetworkForwardInput + +func (NetworkForwardMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkForward)(nil)).Elem() +} + +func (i NetworkForwardMap) ToNetworkForwardMapOutput() NetworkForwardMapOutput { + return i.ToNetworkForwardMapOutputWithContext(context.Background()) +} + +func (i NetworkForwardMap) ToNetworkForwardMapOutputWithContext(ctx context.Context) NetworkForwardMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkForwardMapOutput) +} + +type NetworkForwardOutput struct{ *pulumi.OutputState } + +func (NetworkForwardOutput) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkForward)(nil)).Elem() +} + +func (o NetworkForwardOutput) ToNetworkForwardOutput() NetworkForwardOutput { + return o +} + +func (o NetworkForwardOutput) ToNetworkForwardOutputWithContext(ctx context.Context) NetworkForwardOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// network forward config settings. +func (o NetworkForwardOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *NetworkForward) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of port(s) +func (o NetworkForwardOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkForward) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// **Required** - IP address to listen on. +func (o NetworkForwardOutput) ListenAddress() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkForward) pulumi.StringOutput { return v.ListenAddress }).(pulumi.StringOutput) +} + +// **Required** - Name of the network. +func (o NetworkForwardOutput) Network() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkForward) pulumi.StringOutput { return v.Network }).(pulumi.StringOutput) +} + +// *Optional* - List of port specifications. See reference below. +// +// The network forward port supports: +func (o NetworkForwardOutput) Ports() NetworkForwardPortArrayOutput { + return o.ApplyT(func(v *NetworkForward) NetworkForwardPortArrayOutput { return v.Ports }).(NetworkForwardPortArrayOutput) +} + +// *Optional* - Name of the project where the network forward will be created. +func (o NetworkForwardOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkForward) pulumi.StringPtrOutput { return v.Project }).(pulumi.StringPtrOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o NetworkForwardOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkForward) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +type NetworkForwardArrayOutput struct{ *pulumi.OutputState } + +func (NetworkForwardArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkForward)(nil)).Elem() +} + +func (o NetworkForwardArrayOutput) ToNetworkForwardArrayOutput() NetworkForwardArrayOutput { + return o +} + +func (o NetworkForwardArrayOutput) ToNetworkForwardArrayOutputWithContext(ctx context.Context) NetworkForwardArrayOutput { + return o +} + +func (o NetworkForwardArrayOutput) Index(i pulumi.IntInput) NetworkForwardOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *NetworkForward { + return vs[0].([]*NetworkForward)[vs[1].(int)] + }).(NetworkForwardOutput) +} + +type NetworkForwardMapOutput struct{ *pulumi.OutputState } + +func (NetworkForwardMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkForward)(nil)).Elem() +} + +func (o NetworkForwardMapOutput) ToNetworkForwardMapOutput() NetworkForwardMapOutput { + return o +} + +func (o NetworkForwardMapOutput) ToNetworkForwardMapOutputWithContext(ctx context.Context) NetworkForwardMapOutput { + return o +} + +func (o NetworkForwardMapOutput) MapIndex(k pulumi.StringInput) NetworkForwardOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *NetworkForward { + return vs[0].(map[string]*NetworkForward)[vs[1].(string)] + }).(NetworkForwardOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkForwardInput)(nil)).Elem(), &NetworkForward{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkForwardArrayInput)(nil)).Elem(), NetworkForwardArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkForwardMapInput)(nil)).Elem(), NetworkForwardMap{}) + pulumi.RegisterOutputType(NetworkForwardOutput{}) + pulumi.RegisterOutputType(NetworkForwardArrayOutput{}) + pulumi.RegisterOutputType(NetworkForwardMapOutput{}) +} diff --git a/sdk/go/incus/networkIntegration.go b/sdk/go/incus/networkIntegration.go new file mode 100644 index 0000000..bd22c86 --- /dev/null +++ b/sdk/go/incus/networkIntegration.go @@ -0,0 +1,387 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## # NetworkIntegration +// +// Manage integrations between the local Incus deployment and remote networks hosted on Incus or other platforms. Currently available only for [OVN networks](https://linuxcontainers.org/incus/docs/main/reference/network_ovn/#network-ovn). +// +// ## Basic Example +// +// ```go +// package main +// +// import ( +// +// "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := incus.NewNetworkIntegration(ctx, "this", &incus.NetworkIntegrationArgs{ +// Name: pulumi.String("ovn-region"), +// Type: pulumi.String("ovn"), +// Config: pulumi.StringMap{ +// "ovn.northbound_connection": pulumi.String("tcp:[192.0.2.12]:6645,tcp:[192.0.3.13]:6645,tcp:[192.0.3.14]:6645"), +// "ovn.southbound_connection": pulumi.String("tcp:[192.0.2.12]:6646,tcp:[192.0.3.13]:6646,tcp:[192.0.3.14]:6646"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Peer Example +// +// ```go +// package main +// +// import ( +// +// "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _default, err := incus.NewNetwork(ctx, "default", &incus.NetworkArgs{ +// Name: pulumi.String("default"), +// Type: pulumi.String("ovn"), +// Config: pulumi.StringMap{ +// "ipv4.address": pulumi.String("192.168.2.0/24"), +// "ipv4.nat": pulumi.String("true"), +// }, +// }) +// if err != nil { +// return err +// } +// this, err := incus.NewNetworkIntegration(ctx, "this", &incus.NetworkIntegrationArgs{ +// Name: pulumi.String("ovn-region"), +// Type: pulumi.String("ovn"), +// Config: pulumi.StringMap{ +// "ovn.northbound_connection": pulumi.String("tcp:[192.0.2.12]:6645,tcp:[192.0.3.13]:6645,tcp:[192.0.3.14]:6645"), +// "ovn.southbound_connection": pulumi.String("tcp:[192.0.2.12]:6646,tcp:[192.0.3.13]:6646,tcp:[192.0.3.14]:6646"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = incus.NewNetworkPeer(ctx, "this", &incus.NetworkPeerArgs{ +// Name: pulumi.String("ovn-peer"), +// Network: _default.Name, +// TargetIntegration: this.Name, +// Type: pulumi.String("remote"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +type NetworkIntegration struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of [network integration config settings](https://linuxcontainers.org/incus/docs/main/howto/network_integrations/) + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the network integration. + Description pulumi.StringOutput `pulumi:"description"` + // **Required** - Name of the network integration. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - Name of the project where the network will be created. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // **Required** - The type of the network integration. Currently, only supports `ovn` type. + Type pulumi.StringOutput `pulumi:"type"` +} + +// NewNetworkIntegration registers a new resource with the given unique name, arguments, and options. +func NewNetworkIntegration(ctx *pulumi.Context, + name string, args *NetworkIntegrationArgs, opts ...pulumi.ResourceOption) (*NetworkIntegration, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Type == nil { + return nil, errors.New("invalid value for required argument 'Type'") + } + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource NetworkIntegration + err := ctx.RegisterResource("incus:index/networkIntegration:NetworkIntegration", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetworkIntegration gets an existing NetworkIntegration resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetNetworkIntegration(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkIntegrationState, opts ...pulumi.ResourceOption) (*NetworkIntegration, error) { + var resource NetworkIntegration + err := ctx.ReadResource("incus:index/networkIntegration:NetworkIntegration", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering NetworkIntegration resources. +type networkIntegrationState struct { + // *Optional* - Map of key/value pairs of [network integration config settings](https://linuxcontainers.org/incus/docs/main/howto/network_integrations/) + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network integration. + Description *string `pulumi:"description"` + // **Required** - Name of the network integration. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // **Required** - The type of the network integration. Currently, only supports `ovn` type. + Type *string `pulumi:"type"` +} + +type NetworkIntegrationState struct { + // *Optional* - Map of key/value pairs of [network integration config settings](https://linuxcontainers.org/incus/docs/main/howto/network_integrations/) + Config pulumi.StringMapInput + // *Optional* - Description of the network integration. + Description pulumi.StringPtrInput + // **Required** - Name of the network integration. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // **Required** - The type of the network integration. Currently, only supports `ovn` type. + Type pulumi.StringPtrInput +} + +func (NetworkIntegrationState) ElementType() reflect.Type { + return reflect.TypeOf((*networkIntegrationState)(nil)).Elem() +} + +type networkIntegrationArgs struct { + // *Optional* - Map of key/value pairs of [network integration config settings](https://linuxcontainers.org/incus/docs/main/howto/network_integrations/) + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network integration. + Description *string `pulumi:"description"` + // **Required** - Name of the network integration. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // **Required** - The type of the network integration. Currently, only supports `ovn` type. + Type string `pulumi:"type"` +} + +// The set of arguments for constructing a NetworkIntegration resource. +type NetworkIntegrationArgs struct { + // *Optional* - Map of key/value pairs of [network integration config settings](https://linuxcontainers.org/incus/docs/main/howto/network_integrations/) + Config pulumi.StringMapInput + // *Optional* - Description of the network integration. + Description pulumi.StringPtrInput + // **Required** - Name of the network integration. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // **Required** - The type of the network integration. Currently, only supports `ovn` type. + Type pulumi.StringInput +} + +func (NetworkIntegrationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkIntegrationArgs)(nil)).Elem() +} + +type NetworkIntegrationInput interface { + pulumi.Input + + ToNetworkIntegrationOutput() NetworkIntegrationOutput + ToNetworkIntegrationOutputWithContext(ctx context.Context) NetworkIntegrationOutput +} + +func (*NetworkIntegration) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkIntegration)(nil)).Elem() +} + +func (i *NetworkIntegration) ToNetworkIntegrationOutput() NetworkIntegrationOutput { + return i.ToNetworkIntegrationOutputWithContext(context.Background()) +} + +func (i *NetworkIntegration) ToNetworkIntegrationOutputWithContext(ctx context.Context) NetworkIntegrationOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkIntegrationOutput) +} + +// NetworkIntegrationArrayInput is an input type that accepts NetworkIntegrationArray and NetworkIntegrationArrayOutput values. +// You can construct a concrete instance of `NetworkIntegrationArrayInput` via: +// +// NetworkIntegrationArray{ NetworkIntegrationArgs{...} } +type NetworkIntegrationArrayInput interface { + pulumi.Input + + ToNetworkIntegrationArrayOutput() NetworkIntegrationArrayOutput + ToNetworkIntegrationArrayOutputWithContext(context.Context) NetworkIntegrationArrayOutput +} + +type NetworkIntegrationArray []NetworkIntegrationInput + +func (NetworkIntegrationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkIntegration)(nil)).Elem() +} + +func (i NetworkIntegrationArray) ToNetworkIntegrationArrayOutput() NetworkIntegrationArrayOutput { + return i.ToNetworkIntegrationArrayOutputWithContext(context.Background()) +} + +func (i NetworkIntegrationArray) ToNetworkIntegrationArrayOutputWithContext(ctx context.Context) NetworkIntegrationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkIntegrationArrayOutput) +} + +// NetworkIntegrationMapInput is an input type that accepts NetworkIntegrationMap and NetworkIntegrationMapOutput values. +// You can construct a concrete instance of `NetworkIntegrationMapInput` via: +// +// NetworkIntegrationMap{ "key": NetworkIntegrationArgs{...} } +type NetworkIntegrationMapInput interface { + pulumi.Input + + ToNetworkIntegrationMapOutput() NetworkIntegrationMapOutput + ToNetworkIntegrationMapOutputWithContext(context.Context) NetworkIntegrationMapOutput +} + +type NetworkIntegrationMap map[string]NetworkIntegrationInput + +func (NetworkIntegrationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkIntegration)(nil)).Elem() +} + +func (i NetworkIntegrationMap) ToNetworkIntegrationMapOutput() NetworkIntegrationMapOutput { + return i.ToNetworkIntegrationMapOutputWithContext(context.Background()) +} + +func (i NetworkIntegrationMap) ToNetworkIntegrationMapOutputWithContext(ctx context.Context) NetworkIntegrationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkIntegrationMapOutput) +} + +type NetworkIntegrationOutput struct{ *pulumi.OutputState } + +func (NetworkIntegrationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkIntegration)(nil)).Elem() +} + +func (o NetworkIntegrationOutput) ToNetworkIntegrationOutput() NetworkIntegrationOutput { + return o +} + +func (o NetworkIntegrationOutput) ToNetworkIntegrationOutputWithContext(ctx context.Context) NetworkIntegrationOutput { + return o +} + +// *Optional* - Map of key/value pairs of [network integration config settings](https://linuxcontainers.org/incus/docs/main/howto/network_integrations/) +func (o NetworkIntegrationOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *NetworkIntegration) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the network integration. +func (o NetworkIntegrationOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkIntegration) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// **Required** - Name of the network integration. +func (o NetworkIntegrationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkIntegration) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the network will be created. +func (o NetworkIntegrationOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkIntegration) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o NetworkIntegrationOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkIntegration) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// **Required** - The type of the network integration. Currently, only supports `ovn` type. +func (o NetworkIntegrationOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkIntegration) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput) +} + +type NetworkIntegrationArrayOutput struct{ *pulumi.OutputState } + +func (NetworkIntegrationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkIntegration)(nil)).Elem() +} + +func (o NetworkIntegrationArrayOutput) ToNetworkIntegrationArrayOutput() NetworkIntegrationArrayOutput { + return o +} + +func (o NetworkIntegrationArrayOutput) ToNetworkIntegrationArrayOutputWithContext(ctx context.Context) NetworkIntegrationArrayOutput { + return o +} + +func (o NetworkIntegrationArrayOutput) Index(i pulumi.IntInput) NetworkIntegrationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *NetworkIntegration { + return vs[0].([]*NetworkIntegration)[vs[1].(int)] + }).(NetworkIntegrationOutput) +} + +type NetworkIntegrationMapOutput struct{ *pulumi.OutputState } + +func (NetworkIntegrationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkIntegration)(nil)).Elem() +} + +func (o NetworkIntegrationMapOutput) ToNetworkIntegrationMapOutput() NetworkIntegrationMapOutput { + return o +} + +func (o NetworkIntegrationMapOutput) ToNetworkIntegrationMapOutputWithContext(ctx context.Context) NetworkIntegrationMapOutput { + return o +} + +func (o NetworkIntegrationMapOutput) MapIndex(k pulumi.StringInput) NetworkIntegrationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *NetworkIntegration { + return vs[0].(map[string]*NetworkIntegration)[vs[1].(string)] + }).(NetworkIntegrationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkIntegrationInput)(nil)).Elem(), &NetworkIntegration{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkIntegrationArrayInput)(nil)).Elem(), NetworkIntegrationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkIntegrationMapInput)(nil)).Elem(), NetworkIntegrationMap{}) + pulumi.RegisterOutputType(NetworkIntegrationOutput{}) + pulumi.RegisterOutputType(NetworkIntegrationArrayOutput{}) + pulumi.RegisterOutputType(NetworkIntegrationMapOutput{}) +} diff --git a/sdk/go/incus/networkLoadBalancer.go b/sdk/go/incus/networkLoadBalancer.go new file mode 100644 index 0000000..91a3666 --- /dev/null +++ b/sdk/go/incus/networkLoadBalancer.go @@ -0,0 +1,290 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type NetworkLoadBalancer struct { + pulumi.CustomResourceState + + // Network load balancer backend + Backends NetworkLoadBalancerBackendArrayOutput `pulumi:"backends"` + Config pulumi.StringMapOutput `pulumi:"config"` + Description pulumi.StringOutput `pulumi:"description"` + ListenAddress pulumi.StringOutput `pulumi:"listenAddress"` + Network pulumi.StringOutput `pulumi:"network"` + // Network load balancer port + Ports NetworkLoadBalancerPortArrayOutput `pulumi:"ports"` + Project pulumi.StringPtrOutput `pulumi:"project"` + Remote pulumi.StringPtrOutput `pulumi:"remote"` +} + +// NewNetworkLoadBalancer registers a new resource with the given unique name, arguments, and options. +func NewNetworkLoadBalancer(ctx *pulumi.Context, + name string, args *NetworkLoadBalancerArgs, opts ...pulumi.ResourceOption) (*NetworkLoadBalancer, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ListenAddress == nil { + return nil, errors.New("invalid value for required argument 'ListenAddress'") + } + if args.Network == nil { + return nil, errors.New("invalid value for required argument 'Network'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource NetworkLoadBalancer + err := ctx.RegisterResource("incus:index/networkLoadBalancer:NetworkLoadBalancer", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetworkLoadBalancer gets an existing NetworkLoadBalancer resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetNetworkLoadBalancer(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkLoadBalancerState, opts ...pulumi.ResourceOption) (*NetworkLoadBalancer, error) { + var resource NetworkLoadBalancer + err := ctx.ReadResource("incus:index/networkLoadBalancer:NetworkLoadBalancer", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering NetworkLoadBalancer resources. +type networkLoadBalancerState struct { + // Network load balancer backend + Backends []NetworkLoadBalancerBackend `pulumi:"backends"` + Config map[string]string `pulumi:"config"` + Description *string `pulumi:"description"` + ListenAddress *string `pulumi:"listenAddress"` + Network *string `pulumi:"network"` + // Network load balancer port + Ports []NetworkLoadBalancerPort `pulumi:"ports"` + Project *string `pulumi:"project"` + Remote *string `pulumi:"remote"` +} + +type NetworkLoadBalancerState struct { + // Network load balancer backend + Backends NetworkLoadBalancerBackendArrayInput + Config pulumi.StringMapInput + Description pulumi.StringPtrInput + ListenAddress pulumi.StringPtrInput + Network pulumi.StringPtrInput + // Network load balancer port + Ports NetworkLoadBalancerPortArrayInput + Project pulumi.StringPtrInput + Remote pulumi.StringPtrInput +} + +func (NetworkLoadBalancerState) ElementType() reflect.Type { + return reflect.TypeOf((*networkLoadBalancerState)(nil)).Elem() +} + +type networkLoadBalancerArgs struct { + // Network load balancer backend + Backends []NetworkLoadBalancerBackend `pulumi:"backends"` + Config map[string]string `pulumi:"config"` + Description *string `pulumi:"description"` + ListenAddress string `pulumi:"listenAddress"` + Network string `pulumi:"network"` + // Network load balancer port + Ports []NetworkLoadBalancerPort `pulumi:"ports"` + Project *string `pulumi:"project"` + Remote *string `pulumi:"remote"` +} + +// The set of arguments for constructing a NetworkLoadBalancer resource. +type NetworkLoadBalancerArgs struct { + // Network load balancer backend + Backends NetworkLoadBalancerBackendArrayInput + Config pulumi.StringMapInput + Description pulumi.StringPtrInput + ListenAddress pulumi.StringInput + Network pulumi.StringInput + // Network load balancer port + Ports NetworkLoadBalancerPortArrayInput + Project pulumi.StringPtrInput + Remote pulumi.StringPtrInput +} + +func (NetworkLoadBalancerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkLoadBalancerArgs)(nil)).Elem() +} + +type NetworkLoadBalancerInput interface { + pulumi.Input + + ToNetworkLoadBalancerOutput() NetworkLoadBalancerOutput + ToNetworkLoadBalancerOutputWithContext(ctx context.Context) NetworkLoadBalancerOutput +} + +func (*NetworkLoadBalancer) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkLoadBalancer)(nil)).Elem() +} + +func (i *NetworkLoadBalancer) ToNetworkLoadBalancerOutput() NetworkLoadBalancerOutput { + return i.ToNetworkLoadBalancerOutputWithContext(context.Background()) +} + +func (i *NetworkLoadBalancer) ToNetworkLoadBalancerOutputWithContext(ctx context.Context) NetworkLoadBalancerOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkLoadBalancerOutput) +} + +// NetworkLoadBalancerArrayInput is an input type that accepts NetworkLoadBalancerArray and NetworkLoadBalancerArrayOutput values. +// You can construct a concrete instance of `NetworkLoadBalancerArrayInput` via: +// +// NetworkLoadBalancerArray{ NetworkLoadBalancerArgs{...} } +type NetworkLoadBalancerArrayInput interface { + pulumi.Input + + ToNetworkLoadBalancerArrayOutput() NetworkLoadBalancerArrayOutput + ToNetworkLoadBalancerArrayOutputWithContext(context.Context) NetworkLoadBalancerArrayOutput +} + +type NetworkLoadBalancerArray []NetworkLoadBalancerInput + +func (NetworkLoadBalancerArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkLoadBalancer)(nil)).Elem() +} + +func (i NetworkLoadBalancerArray) ToNetworkLoadBalancerArrayOutput() NetworkLoadBalancerArrayOutput { + return i.ToNetworkLoadBalancerArrayOutputWithContext(context.Background()) +} + +func (i NetworkLoadBalancerArray) ToNetworkLoadBalancerArrayOutputWithContext(ctx context.Context) NetworkLoadBalancerArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkLoadBalancerArrayOutput) +} + +// NetworkLoadBalancerMapInput is an input type that accepts NetworkLoadBalancerMap and NetworkLoadBalancerMapOutput values. +// You can construct a concrete instance of `NetworkLoadBalancerMapInput` via: +// +// NetworkLoadBalancerMap{ "key": NetworkLoadBalancerArgs{...} } +type NetworkLoadBalancerMapInput interface { + pulumi.Input + + ToNetworkLoadBalancerMapOutput() NetworkLoadBalancerMapOutput + ToNetworkLoadBalancerMapOutputWithContext(context.Context) NetworkLoadBalancerMapOutput +} + +type NetworkLoadBalancerMap map[string]NetworkLoadBalancerInput + +func (NetworkLoadBalancerMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkLoadBalancer)(nil)).Elem() +} + +func (i NetworkLoadBalancerMap) ToNetworkLoadBalancerMapOutput() NetworkLoadBalancerMapOutput { + return i.ToNetworkLoadBalancerMapOutputWithContext(context.Background()) +} + +func (i NetworkLoadBalancerMap) ToNetworkLoadBalancerMapOutputWithContext(ctx context.Context) NetworkLoadBalancerMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkLoadBalancerMapOutput) +} + +type NetworkLoadBalancerOutput struct{ *pulumi.OutputState } + +func (NetworkLoadBalancerOutput) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkLoadBalancer)(nil)).Elem() +} + +func (o NetworkLoadBalancerOutput) ToNetworkLoadBalancerOutput() NetworkLoadBalancerOutput { + return o +} + +func (o NetworkLoadBalancerOutput) ToNetworkLoadBalancerOutputWithContext(ctx context.Context) NetworkLoadBalancerOutput { + return o +} + +// Network load balancer backend +func (o NetworkLoadBalancerOutput) Backends() NetworkLoadBalancerBackendArrayOutput { + return o.ApplyT(func(v *NetworkLoadBalancer) NetworkLoadBalancerBackendArrayOutput { return v.Backends }).(NetworkLoadBalancerBackendArrayOutput) +} + +func (o NetworkLoadBalancerOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *NetworkLoadBalancer) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +func (o NetworkLoadBalancerOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkLoadBalancer) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +func (o NetworkLoadBalancerOutput) ListenAddress() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkLoadBalancer) pulumi.StringOutput { return v.ListenAddress }).(pulumi.StringOutput) +} + +func (o NetworkLoadBalancerOutput) Network() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkLoadBalancer) pulumi.StringOutput { return v.Network }).(pulumi.StringOutput) +} + +// Network load balancer port +func (o NetworkLoadBalancerOutput) Ports() NetworkLoadBalancerPortArrayOutput { + return o.ApplyT(func(v *NetworkLoadBalancer) NetworkLoadBalancerPortArrayOutput { return v.Ports }).(NetworkLoadBalancerPortArrayOutput) +} + +func (o NetworkLoadBalancerOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkLoadBalancer) pulumi.StringPtrOutput { return v.Project }).(pulumi.StringPtrOutput) +} + +func (o NetworkLoadBalancerOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkLoadBalancer) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +type NetworkLoadBalancerArrayOutput struct{ *pulumi.OutputState } + +func (NetworkLoadBalancerArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkLoadBalancer)(nil)).Elem() +} + +func (o NetworkLoadBalancerArrayOutput) ToNetworkLoadBalancerArrayOutput() NetworkLoadBalancerArrayOutput { + return o +} + +func (o NetworkLoadBalancerArrayOutput) ToNetworkLoadBalancerArrayOutputWithContext(ctx context.Context) NetworkLoadBalancerArrayOutput { + return o +} + +func (o NetworkLoadBalancerArrayOutput) Index(i pulumi.IntInput) NetworkLoadBalancerOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *NetworkLoadBalancer { + return vs[0].([]*NetworkLoadBalancer)[vs[1].(int)] + }).(NetworkLoadBalancerOutput) +} + +type NetworkLoadBalancerMapOutput struct{ *pulumi.OutputState } + +func (NetworkLoadBalancerMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkLoadBalancer)(nil)).Elem() +} + +func (o NetworkLoadBalancerMapOutput) ToNetworkLoadBalancerMapOutput() NetworkLoadBalancerMapOutput { + return o +} + +func (o NetworkLoadBalancerMapOutput) ToNetworkLoadBalancerMapOutputWithContext(ctx context.Context) NetworkLoadBalancerMapOutput { + return o +} + +func (o NetworkLoadBalancerMapOutput) MapIndex(k pulumi.StringInput) NetworkLoadBalancerOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *NetworkLoadBalancer { + return vs[0].(map[string]*NetworkLoadBalancer)[vs[1].(string)] + }).(NetworkLoadBalancerOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkLoadBalancerInput)(nil)).Elem(), &NetworkLoadBalancer{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkLoadBalancerArrayInput)(nil)).Elem(), NetworkLoadBalancerArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkLoadBalancerMapInput)(nil)).Elem(), NetworkLoadBalancerMap{}) + pulumi.RegisterOutputType(NetworkLoadBalancerOutput{}) + pulumi.RegisterOutputType(NetworkLoadBalancerArrayOutput{}) + pulumi.RegisterOutputType(NetworkLoadBalancerMapOutput{}) +} diff --git a/sdk/go/incus/networkPeer.go b/sdk/go/incus/networkPeer.go new file mode 100644 index 0000000..15d0e71 --- /dev/null +++ b/sdk/go/incus/networkPeer.go @@ -0,0 +1,427 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## # NetworkPeer +// +// Incus allows creating peer routing relationships between two OVN networks. Using this method, traffic between the two +// networks can go directly from one OVN network to the other and thus stays within the OVN subsystem, rather than transiting +// through the uplink network. +// +// > The peer resource is exclusively compatible with OVN (Open Virtual Network). +// +// For more information, please refer to [How to create peer routing relationships](https://linuxcontainers.org/incus/docs/main/howto/network_ovn_peers/) +// in the official Incus documentation. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// lan0, err := incus.NewNetwork(ctx, "lan0", &incus.NetworkArgs{ +// Name: pulumi.String("lan0"), +// Type: pulumi.String("ovn"), +// Config: pulumi.StringMap{}, +// }) +// if err != nil { +// return err +// } +// lan1, err := incus.NewNetwork(ctx, "lan1", &incus.NetworkArgs{ +// Name: pulumi.String("lan1"), +// Type: pulumi.String("ovn"), +// Config: pulumi.StringMap{}, +// }) +// if err != nil { +// return err +// } +// _, err = incus.NewNetworkPeer(ctx, "lan0_lan1", &incus.NetworkPeerArgs{ +// Name: pulumi.String("lab0-lan1"), +// Description: pulumi.String("A meaningful description"), +// Network: lan0.Name, +// Project: pulumi.String("default"), +// TargetNetwork: lan1.Name, +// TargetProject: pulumi.String("default"), +// }) +// if err != nil { +// return err +// } +// _, err = incus.NewNetworkPeer(ctx, "lan1_lan0", &incus.NetworkPeerArgs{ +// Name: pulumi.String("lab1-lan0"), +// Description: pulumi.String("A meaningful description"), +// Network: lan1.Name, +// Project: pulumi.String("default"), +// TargetNetwork: lan0.Name, +// TargetProject: pulumi.String("default"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +type NetworkPeer struct { + pulumi.CustomResourceState + + // *Optional* - Configuration options as key/value pairs (only user.* custom keys supported) + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the network peering + Description pulumi.StringOutput `pulumi:"description"` + // **required** - Name of the network peering on the local network + Name pulumi.StringOutput `pulumi:"name"` + // **Required** - Name of the local network. + Network pulumi.StringPtrOutput `pulumi:"network"` + // *Optional* - Name of the project where the network is located. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + Status pulumi.StringOutput `pulumi:"status"` + TargetIntegration pulumi.StringOutput `pulumi:"targetIntegration"` + // **required** - Which network to create a peering with (required at create time for local peers) + TargetNetwork pulumi.StringOutput `pulumi:"targetNetwork"` + // *Optional* - Which project the target network exists in (required at create time for local peers) + TargetProject pulumi.StringOutput `pulumi:"targetProject"` + // *Optional* - Type of network peering + Type pulumi.StringOutput `pulumi:"type"` +} + +// NewNetworkPeer registers a new resource with the given unique name, arguments, and options. +func NewNetworkPeer(ctx *pulumi.Context, + name string, args *NetworkPeerArgs, opts ...pulumi.ResourceOption) (*NetworkPeer, error) { + if args == nil { + args = &NetworkPeerArgs{} + } + + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource NetworkPeer + err := ctx.RegisterResource("incus:index/networkPeer:NetworkPeer", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetworkPeer gets an existing NetworkPeer resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetNetworkPeer(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkPeerState, opts ...pulumi.ResourceOption) (*NetworkPeer, error) { + var resource NetworkPeer + err := ctx.ReadResource("incus:index/networkPeer:NetworkPeer", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering NetworkPeer resources. +type networkPeerState struct { + // *Optional* - Configuration options as key/value pairs (only user.* custom keys supported) + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network peering + Description *string `pulumi:"description"` + // **required** - Name of the network peering on the local network + Name *string `pulumi:"name"` + // **Required** - Name of the local network. + Network *string `pulumi:"network"` + // *Optional* - Name of the project where the network is located. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + Status *string `pulumi:"status"` + TargetIntegration *string `pulumi:"targetIntegration"` + // **required** - Which network to create a peering with (required at create time for local peers) + TargetNetwork *string `pulumi:"targetNetwork"` + // *Optional* - Which project the target network exists in (required at create time for local peers) + TargetProject *string `pulumi:"targetProject"` + // *Optional* - Type of network peering + Type *string `pulumi:"type"` +} + +type NetworkPeerState struct { + // *Optional* - Configuration options as key/value pairs (only user.* custom keys supported) + Config pulumi.StringMapInput + // *Optional* - Description of the network peering + Description pulumi.StringPtrInput + // **required** - Name of the network peering on the local network + Name pulumi.StringPtrInput + // **Required** - Name of the local network. + Network pulumi.StringPtrInput + // *Optional* - Name of the project where the network is located. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + Status pulumi.StringPtrInput + TargetIntegration pulumi.StringPtrInput + // **required** - Which network to create a peering with (required at create time for local peers) + TargetNetwork pulumi.StringPtrInput + // *Optional* - Which project the target network exists in (required at create time for local peers) + TargetProject pulumi.StringPtrInput + // *Optional* - Type of network peering + Type pulumi.StringPtrInput +} + +func (NetworkPeerState) ElementType() reflect.Type { + return reflect.TypeOf((*networkPeerState)(nil)).Elem() +} + +type networkPeerArgs struct { + // *Optional* - Configuration options as key/value pairs (only user.* custom keys supported) + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network peering + Description *string `pulumi:"description"` + // **required** - Name of the network peering on the local network + Name *string `pulumi:"name"` + // **Required** - Name of the local network. + Network *string `pulumi:"network"` + // *Optional* - Name of the project where the network is located. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + TargetIntegration *string `pulumi:"targetIntegration"` + // **required** - Which network to create a peering with (required at create time for local peers) + TargetNetwork *string `pulumi:"targetNetwork"` + // *Optional* - Which project the target network exists in (required at create time for local peers) + TargetProject *string `pulumi:"targetProject"` + // *Optional* - Type of network peering + Type *string `pulumi:"type"` +} + +// The set of arguments for constructing a NetworkPeer resource. +type NetworkPeerArgs struct { + // *Optional* - Configuration options as key/value pairs (only user.* custom keys supported) + Config pulumi.StringMapInput + // *Optional* - Description of the network peering + Description pulumi.StringPtrInput + // **required** - Name of the network peering on the local network + Name pulumi.StringPtrInput + // **Required** - Name of the local network. + Network pulumi.StringPtrInput + // *Optional* - Name of the project where the network is located. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + TargetIntegration pulumi.StringPtrInput + // **required** - Which network to create a peering with (required at create time for local peers) + TargetNetwork pulumi.StringPtrInput + // *Optional* - Which project the target network exists in (required at create time for local peers) + TargetProject pulumi.StringPtrInput + // *Optional* - Type of network peering + Type pulumi.StringPtrInput +} + +func (NetworkPeerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkPeerArgs)(nil)).Elem() +} + +type NetworkPeerInput interface { + pulumi.Input + + ToNetworkPeerOutput() NetworkPeerOutput + ToNetworkPeerOutputWithContext(ctx context.Context) NetworkPeerOutput +} + +func (*NetworkPeer) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkPeer)(nil)).Elem() +} + +func (i *NetworkPeer) ToNetworkPeerOutput() NetworkPeerOutput { + return i.ToNetworkPeerOutputWithContext(context.Background()) +} + +func (i *NetworkPeer) ToNetworkPeerOutputWithContext(ctx context.Context) NetworkPeerOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkPeerOutput) +} + +// NetworkPeerArrayInput is an input type that accepts NetworkPeerArray and NetworkPeerArrayOutput values. +// You can construct a concrete instance of `NetworkPeerArrayInput` via: +// +// NetworkPeerArray{ NetworkPeerArgs{...} } +type NetworkPeerArrayInput interface { + pulumi.Input + + ToNetworkPeerArrayOutput() NetworkPeerArrayOutput + ToNetworkPeerArrayOutputWithContext(context.Context) NetworkPeerArrayOutput +} + +type NetworkPeerArray []NetworkPeerInput + +func (NetworkPeerArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkPeer)(nil)).Elem() +} + +func (i NetworkPeerArray) ToNetworkPeerArrayOutput() NetworkPeerArrayOutput { + return i.ToNetworkPeerArrayOutputWithContext(context.Background()) +} + +func (i NetworkPeerArray) ToNetworkPeerArrayOutputWithContext(ctx context.Context) NetworkPeerArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkPeerArrayOutput) +} + +// NetworkPeerMapInput is an input type that accepts NetworkPeerMap and NetworkPeerMapOutput values. +// You can construct a concrete instance of `NetworkPeerMapInput` via: +// +// NetworkPeerMap{ "key": NetworkPeerArgs{...} } +type NetworkPeerMapInput interface { + pulumi.Input + + ToNetworkPeerMapOutput() NetworkPeerMapOutput + ToNetworkPeerMapOutputWithContext(context.Context) NetworkPeerMapOutput +} + +type NetworkPeerMap map[string]NetworkPeerInput + +func (NetworkPeerMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkPeer)(nil)).Elem() +} + +func (i NetworkPeerMap) ToNetworkPeerMapOutput() NetworkPeerMapOutput { + return i.ToNetworkPeerMapOutputWithContext(context.Background()) +} + +func (i NetworkPeerMap) ToNetworkPeerMapOutputWithContext(ctx context.Context) NetworkPeerMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkPeerMapOutput) +} + +type NetworkPeerOutput struct{ *pulumi.OutputState } + +func (NetworkPeerOutput) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkPeer)(nil)).Elem() +} + +func (o NetworkPeerOutput) ToNetworkPeerOutput() NetworkPeerOutput { + return o +} + +func (o NetworkPeerOutput) ToNetworkPeerOutputWithContext(ctx context.Context) NetworkPeerOutput { + return o +} + +// *Optional* - Configuration options as key/value pairs (only user.* custom keys supported) +func (o NetworkPeerOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the network peering +func (o NetworkPeerOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// **required** - Name of the network peering on the local network +func (o NetworkPeerOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// **Required** - Name of the local network. +func (o NetworkPeerOutput) Network() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringPtrOutput { return v.Network }).(pulumi.StringPtrOutput) +} + +// *Optional* - Name of the project where the network is located. +func (o NetworkPeerOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o NetworkPeerOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +func (o NetworkPeerOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput) +} + +func (o NetworkPeerOutput) TargetIntegration() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringOutput { return v.TargetIntegration }).(pulumi.StringOutput) +} + +// **required** - Which network to create a peering with (required at create time for local peers) +func (o NetworkPeerOutput) TargetNetwork() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringOutput { return v.TargetNetwork }).(pulumi.StringOutput) +} + +// *Optional* - Which project the target network exists in (required at create time for local peers) +func (o NetworkPeerOutput) TargetProject() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringOutput { return v.TargetProject }).(pulumi.StringOutput) +} + +// *Optional* - Type of network peering +func (o NetworkPeerOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkPeer) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput) +} + +type NetworkPeerArrayOutput struct{ *pulumi.OutputState } + +func (NetworkPeerArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkPeer)(nil)).Elem() +} + +func (o NetworkPeerArrayOutput) ToNetworkPeerArrayOutput() NetworkPeerArrayOutput { + return o +} + +func (o NetworkPeerArrayOutput) ToNetworkPeerArrayOutputWithContext(ctx context.Context) NetworkPeerArrayOutput { + return o +} + +func (o NetworkPeerArrayOutput) Index(i pulumi.IntInput) NetworkPeerOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *NetworkPeer { + return vs[0].([]*NetworkPeer)[vs[1].(int)] + }).(NetworkPeerOutput) +} + +type NetworkPeerMapOutput struct{ *pulumi.OutputState } + +func (NetworkPeerMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkPeer)(nil)).Elem() +} + +func (o NetworkPeerMapOutput) ToNetworkPeerMapOutput() NetworkPeerMapOutput { + return o +} + +func (o NetworkPeerMapOutput) ToNetworkPeerMapOutputWithContext(ctx context.Context) NetworkPeerMapOutput { + return o +} + +func (o NetworkPeerMapOutput) MapIndex(k pulumi.StringInput) NetworkPeerOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *NetworkPeer { + return vs[0].(map[string]*NetworkPeer)[vs[1].(string)] + }).(NetworkPeerOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkPeerInput)(nil)).Elem(), &NetworkPeer{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkPeerArrayInput)(nil)).Elem(), NetworkPeerArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkPeerMapInput)(nil)).Elem(), NetworkPeerMap{}) + pulumi.RegisterOutputType(NetworkPeerOutput{}) + pulumi.RegisterOutputType(NetworkPeerArrayOutput{}) + pulumi.RegisterOutputType(NetworkPeerMapOutput{}) +} diff --git a/sdk/go/incus/networkZone.go b/sdk/go/incus/networkZone.go new file mode 100644 index 0000000..841f2ec --- /dev/null +++ b/sdk/go/incus/networkZone.go @@ -0,0 +1,289 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type NetworkZone struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the network zone. + Description pulumi.StringOutput `pulumi:"description"` + // **Required** - Name of the network zone. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - Name of the project where the network zone will be created. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` +} + +// NewNetworkZone registers a new resource with the given unique name, arguments, and options. +func NewNetworkZone(ctx *pulumi.Context, + name string, args *NetworkZoneArgs, opts ...pulumi.ResourceOption) (*NetworkZone, error) { + if args == nil { + args = &NetworkZoneArgs{} + } + + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource NetworkZone + err := ctx.RegisterResource("incus:index/networkZone:NetworkZone", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetworkZone gets an existing NetworkZone resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetNetworkZone(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkZoneState, opts ...pulumi.ResourceOption) (*NetworkZone, error) { + var resource NetworkZone + err := ctx.ReadResource("incus:index/networkZone:NetworkZone", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering NetworkZone resources. +type networkZoneState struct { + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network zone. + Description *string `pulumi:"description"` + // **Required** - Name of the network zone. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network zone will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +type NetworkZoneState struct { + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config pulumi.StringMapInput + // *Optional* - Description of the network zone. + Description pulumi.StringPtrInput + // **Required** - Name of the network zone. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network zone will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (NetworkZoneState) ElementType() reflect.Type { + return reflect.TypeOf((*networkZoneState)(nil)).Elem() +} + +type networkZoneArgs struct { + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network zone. + Description *string `pulumi:"description"` + // **Required** - Name of the network zone. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network zone will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// The set of arguments for constructing a NetworkZone resource. +type NetworkZoneArgs struct { + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config pulumi.StringMapInput + // *Optional* - Description of the network zone. + Description pulumi.StringPtrInput + // **Required** - Name of the network zone. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network zone will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (NetworkZoneArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkZoneArgs)(nil)).Elem() +} + +type NetworkZoneInput interface { + pulumi.Input + + ToNetworkZoneOutput() NetworkZoneOutput + ToNetworkZoneOutputWithContext(ctx context.Context) NetworkZoneOutput +} + +func (*NetworkZone) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkZone)(nil)).Elem() +} + +func (i *NetworkZone) ToNetworkZoneOutput() NetworkZoneOutput { + return i.ToNetworkZoneOutputWithContext(context.Background()) +} + +func (i *NetworkZone) ToNetworkZoneOutputWithContext(ctx context.Context) NetworkZoneOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkZoneOutput) +} + +// NetworkZoneArrayInput is an input type that accepts NetworkZoneArray and NetworkZoneArrayOutput values. +// You can construct a concrete instance of `NetworkZoneArrayInput` via: +// +// NetworkZoneArray{ NetworkZoneArgs{...} } +type NetworkZoneArrayInput interface { + pulumi.Input + + ToNetworkZoneArrayOutput() NetworkZoneArrayOutput + ToNetworkZoneArrayOutputWithContext(context.Context) NetworkZoneArrayOutput +} + +type NetworkZoneArray []NetworkZoneInput + +func (NetworkZoneArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkZone)(nil)).Elem() +} + +func (i NetworkZoneArray) ToNetworkZoneArrayOutput() NetworkZoneArrayOutput { + return i.ToNetworkZoneArrayOutputWithContext(context.Background()) +} + +func (i NetworkZoneArray) ToNetworkZoneArrayOutputWithContext(ctx context.Context) NetworkZoneArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkZoneArrayOutput) +} + +// NetworkZoneMapInput is an input type that accepts NetworkZoneMap and NetworkZoneMapOutput values. +// You can construct a concrete instance of `NetworkZoneMapInput` via: +// +// NetworkZoneMap{ "key": NetworkZoneArgs{...} } +type NetworkZoneMapInput interface { + pulumi.Input + + ToNetworkZoneMapOutput() NetworkZoneMapOutput + ToNetworkZoneMapOutputWithContext(context.Context) NetworkZoneMapOutput +} + +type NetworkZoneMap map[string]NetworkZoneInput + +func (NetworkZoneMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkZone)(nil)).Elem() +} + +func (i NetworkZoneMap) ToNetworkZoneMapOutput() NetworkZoneMapOutput { + return i.ToNetworkZoneMapOutputWithContext(context.Background()) +} + +func (i NetworkZoneMap) ToNetworkZoneMapOutputWithContext(ctx context.Context) NetworkZoneMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkZoneMapOutput) +} + +type NetworkZoneOutput struct{ *pulumi.OutputState } + +func (NetworkZoneOutput) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkZone)(nil)).Elem() +} + +func (o NetworkZoneOutput) ToNetworkZoneOutput() NetworkZoneOutput { + return o +} + +func (o NetworkZoneOutput) ToNetworkZoneOutputWithContext(ctx context.Context) NetworkZoneOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). +func (o NetworkZoneOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *NetworkZone) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the network zone. +func (o NetworkZoneOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkZone) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// **Required** - Name of the network zone. +func (o NetworkZoneOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkZone) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the network zone will be created. +func (o NetworkZoneOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkZone) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o NetworkZoneOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkZone) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +type NetworkZoneArrayOutput struct{ *pulumi.OutputState } + +func (NetworkZoneArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkZone)(nil)).Elem() +} + +func (o NetworkZoneArrayOutput) ToNetworkZoneArrayOutput() NetworkZoneArrayOutput { + return o +} + +func (o NetworkZoneArrayOutput) ToNetworkZoneArrayOutputWithContext(ctx context.Context) NetworkZoneArrayOutput { + return o +} + +func (o NetworkZoneArrayOutput) Index(i pulumi.IntInput) NetworkZoneOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *NetworkZone { + return vs[0].([]*NetworkZone)[vs[1].(int)] + }).(NetworkZoneOutput) +} + +type NetworkZoneMapOutput struct{ *pulumi.OutputState } + +func (NetworkZoneMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkZone)(nil)).Elem() +} + +func (o NetworkZoneMapOutput) ToNetworkZoneMapOutput() NetworkZoneMapOutput { + return o +} + +func (o NetworkZoneMapOutput) ToNetworkZoneMapOutputWithContext(ctx context.Context) NetworkZoneMapOutput { + return o +} + +func (o NetworkZoneMapOutput) MapIndex(k pulumi.StringInput) NetworkZoneOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *NetworkZone { + return vs[0].(map[string]*NetworkZone)[vs[1].(string)] + }).(NetworkZoneOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkZoneInput)(nil)).Elem(), &NetworkZone{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkZoneArrayInput)(nil)).Elem(), NetworkZoneArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkZoneMapInput)(nil)).Elem(), NetworkZoneMap{}) + pulumi.RegisterOutputType(NetworkZoneOutput{}) + pulumi.RegisterOutputType(NetworkZoneArrayOutput{}) + pulumi.RegisterOutputType(NetworkZoneMapOutput{}) +} diff --git a/sdk/go/incus/networkZoneRecord.go b/sdk/go/incus/networkZoneRecord.go new file mode 100644 index 0000000..34bcf58 --- /dev/null +++ b/sdk/go/incus/networkZoneRecord.go @@ -0,0 +1,323 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type NetworkZoneRecord struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the network zone. + Description pulumi.StringOutput `pulumi:"description"` + // *Optional* - Entry in network zone record - see below. + Entries NetworkZoneRecordEntryArrayOutput `pulumi:"entries"` + // **Required** - Name of the network zone record. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - Name of the project where the network zone record will be created. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // **Required** - Name of the zone to add the entries of this record. + Zone pulumi.StringOutput `pulumi:"zone"` +} + +// NewNetworkZoneRecord registers a new resource with the given unique name, arguments, and options. +func NewNetworkZoneRecord(ctx *pulumi.Context, + name string, args *NetworkZoneRecordArgs, opts ...pulumi.ResourceOption) (*NetworkZoneRecord, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Zone == nil { + return nil, errors.New("invalid value for required argument 'Zone'") + } + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource NetworkZoneRecord + err := ctx.RegisterResource("incus:index/networkZoneRecord:NetworkZoneRecord", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetworkZoneRecord gets an existing NetworkZoneRecord resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetNetworkZoneRecord(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkZoneRecordState, opts ...pulumi.ResourceOption) (*NetworkZoneRecord, error) { + var resource NetworkZoneRecord + err := ctx.ReadResource("incus:index/networkZoneRecord:NetworkZoneRecord", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering NetworkZoneRecord resources. +type networkZoneRecordState struct { + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network zone. + Description *string `pulumi:"description"` + // *Optional* - Entry in network zone record - see below. + Entries []NetworkZoneRecordEntry `pulumi:"entries"` + // **Required** - Name of the network zone record. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network zone record will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // **Required** - Name of the zone to add the entries of this record. + Zone *string `pulumi:"zone"` +} + +type NetworkZoneRecordState struct { + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config pulumi.StringMapInput + // *Optional* - Description of the network zone. + Description pulumi.StringPtrInput + // *Optional* - Entry in network zone record - see below. + Entries NetworkZoneRecordEntryArrayInput + // **Required** - Name of the network zone record. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network zone record will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // **Required** - Name of the zone to add the entries of this record. + Zone pulumi.StringPtrInput +} + +func (NetworkZoneRecordState) ElementType() reflect.Type { + return reflect.TypeOf((*networkZoneRecordState)(nil)).Elem() +} + +type networkZoneRecordArgs struct { + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the network zone. + Description *string `pulumi:"description"` + // *Optional* - Entry in network zone record - see below. + Entries []NetworkZoneRecordEntry `pulumi:"entries"` + // **Required** - Name of the network zone record. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the network zone record will be created. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // **Required** - Name of the zone to add the entries of this record. + Zone string `pulumi:"zone"` +} + +// The set of arguments for constructing a NetworkZoneRecord resource. +type NetworkZoneRecordArgs struct { + // *Optional* - Map of key/value pairs of + // [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). + Config pulumi.StringMapInput + // *Optional* - Description of the network zone. + Description pulumi.StringPtrInput + // *Optional* - Entry in network zone record - see below. + Entries NetworkZoneRecordEntryArrayInput + // **Required** - Name of the network zone record. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the network zone record will be created. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // **Required** - Name of the zone to add the entries of this record. + Zone pulumi.StringInput +} + +func (NetworkZoneRecordArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkZoneRecordArgs)(nil)).Elem() +} + +type NetworkZoneRecordInput interface { + pulumi.Input + + ToNetworkZoneRecordOutput() NetworkZoneRecordOutput + ToNetworkZoneRecordOutputWithContext(ctx context.Context) NetworkZoneRecordOutput +} + +func (*NetworkZoneRecord) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkZoneRecord)(nil)).Elem() +} + +func (i *NetworkZoneRecord) ToNetworkZoneRecordOutput() NetworkZoneRecordOutput { + return i.ToNetworkZoneRecordOutputWithContext(context.Background()) +} + +func (i *NetworkZoneRecord) ToNetworkZoneRecordOutputWithContext(ctx context.Context) NetworkZoneRecordOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkZoneRecordOutput) +} + +// NetworkZoneRecordArrayInput is an input type that accepts NetworkZoneRecordArray and NetworkZoneRecordArrayOutput values. +// You can construct a concrete instance of `NetworkZoneRecordArrayInput` via: +// +// NetworkZoneRecordArray{ NetworkZoneRecordArgs{...} } +type NetworkZoneRecordArrayInput interface { + pulumi.Input + + ToNetworkZoneRecordArrayOutput() NetworkZoneRecordArrayOutput + ToNetworkZoneRecordArrayOutputWithContext(context.Context) NetworkZoneRecordArrayOutput +} + +type NetworkZoneRecordArray []NetworkZoneRecordInput + +func (NetworkZoneRecordArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkZoneRecord)(nil)).Elem() +} + +func (i NetworkZoneRecordArray) ToNetworkZoneRecordArrayOutput() NetworkZoneRecordArrayOutput { + return i.ToNetworkZoneRecordArrayOutputWithContext(context.Background()) +} + +func (i NetworkZoneRecordArray) ToNetworkZoneRecordArrayOutputWithContext(ctx context.Context) NetworkZoneRecordArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkZoneRecordArrayOutput) +} + +// NetworkZoneRecordMapInput is an input type that accepts NetworkZoneRecordMap and NetworkZoneRecordMapOutput values. +// You can construct a concrete instance of `NetworkZoneRecordMapInput` via: +// +// NetworkZoneRecordMap{ "key": NetworkZoneRecordArgs{...} } +type NetworkZoneRecordMapInput interface { + pulumi.Input + + ToNetworkZoneRecordMapOutput() NetworkZoneRecordMapOutput + ToNetworkZoneRecordMapOutputWithContext(context.Context) NetworkZoneRecordMapOutput +} + +type NetworkZoneRecordMap map[string]NetworkZoneRecordInput + +func (NetworkZoneRecordMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkZoneRecord)(nil)).Elem() +} + +func (i NetworkZoneRecordMap) ToNetworkZoneRecordMapOutput() NetworkZoneRecordMapOutput { + return i.ToNetworkZoneRecordMapOutputWithContext(context.Background()) +} + +func (i NetworkZoneRecordMap) ToNetworkZoneRecordMapOutputWithContext(ctx context.Context) NetworkZoneRecordMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkZoneRecordMapOutput) +} + +type NetworkZoneRecordOutput struct{ *pulumi.OutputState } + +func (NetworkZoneRecordOutput) ElementType() reflect.Type { + return reflect.TypeOf((**NetworkZoneRecord)(nil)).Elem() +} + +func (o NetworkZoneRecordOutput) ToNetworkZoneRecordOutput() NetworkZoneRecordOutput { + return o +} + +func (o NetworkZoneRecordOutput) ToNetworkZoneRecordOutputWithContext(ctx context.Context) NetworkZoneRecordOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// [network zoneConfig settings](https://linuxcontainers.org/incus/docs/main/howto/network_zones/#configuration-options). +func (o NetworkZoneRecordOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *NetworkZoneRecord) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the network zone. +func (o NetworkZoneRecordOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkZoneRecord) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// *Optional* - Entry in network zone record - see below. +func (o NetworkZoneRecordOutput) Entries() NetworkZoneRecordEntryArrayOutput { + return o.ApplyT(func(v *NetworkZoneRecord) NetworkZoneRecordEntryArrayOutput { return v.Entries }).(NetworkZoneRecordEntryArrayOutput) +} + +// **Required** - Name of the network zone record. +func (o NetworkZoneRecordOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkZoneRecord) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the network zone record will be created. +func (o NetworkZoneRecordOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkZoneRecord) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o NetworkZoneRecordOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *NetworkZoneRecord) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// **Required** - Name of the zone to add the entries of this record. +func (o NetworkZoneRecordOutput) Zone() pulumi.StringOutput { + return o.ApplyT(func(v *NetworkZoneRecord) pulumi.StringOutput { return v.Zone }).(pulumi.StringOutput) +} + +type NetworkZoneRecordArrayOutput struct{ *pulumi.OutputState } + +func (NetworkZoneRecordArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*NetworkZoneRecord)(nil)).Elem() +} + +func (o NetworkZoneRecordArrayOutput) ToNetworkZoneRecordArrayOutput() NetworkZoneRecordArrayOutput { + return o +} + +func (o NetworkZoneRecordArrayOutput) ToNetworkZoneRecordArrayOutputWithContext(ctx context.Context) NetworkZoneRecordArrayOutput { + return o +} + +func (o NetworkZoneRecordArrayOutput) Index(i pulumi.IntInput) NetworkZoneRecordOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *NetworkZoneRecord { + return vs[0].([]*NetworkZoneRecord)[vs[1].(int)] + }).(NetworkZoneRecordOutput) +} + +type NetworkZoneRecordMapOutput struct{ *pulumi.OutputState } + +func (NetworkZoneRecordMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*NetworkZoneRecord)(nil)).Elem() +} + +func (o NetworkZoneRecordMapOutput) ToNetworkZoneRecordMapOutput() NetworkZoneRecordMapOutput { + return o +} + +func (o NetworkZoneRecordMapOutput) ToNetworkZoneRecordMapOutputWithContext(ctx context.Context) NetworkZoneRecordMapOutput { + return o +} + +func (o NetworkZoneRecordMapOutput) MapIndex(k pulumi.StringInput) NetworkZoneRecordOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *NetworkZoneRecord { + return vs[0].(map[string]*NetworkZoneRecord)[vs[1].(string)] + }).(NetworkZoneRecordOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkZoneRecordInput)(nil)).Elem(), &NetworkZoneRecord{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkZoneRecordArrayInput)(nil)).Elem(), NetworkZoneRecordArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkZoneRecordMapInput)(nil)).Elem(), NetworkZoneRecordMap{}) + pulumi.RegisterOutputType(NetworkZoneRecordOutput{}) + pulumi.RegisterOutputType(NetworkZoneRecordArrayOutput{}) + pulumi.RegisterOutputType(NetworkZoneRecordMapOutput{}) +} diff --git a/sdk/go/incus/profile.go b/sdk/go/incus/profile.go new file mode 100644 index 0000000..c618dab --- /dev/null +++ b/sdk/go/incus/profile.go @@ -0,0 +1,304 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type Profile struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the profile. + Description pulumi.StringOutput `pulumi:"description"` + // *Optional* - Device definition. See reference below. + Devices ProfileDeviceArrayOutput `pulumi:"devices"` + // **Required** - Name of the profile. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - Name of the project where the profile will be stored. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` +} + +// NewProfile registers a new resource with the given unique name, arguments, and options. +func NewProfile(ctx *pulumi.Context, + name string, args *ProfileArgs, opts ...pulumi.ResourceOption) (*Profile, error) { + if args == nil { + args = &ProfileArgs{} + } + + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Profile + err := ctx.RegisterResource("incus:index/profile:Profile", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetProfile gets an existing Profile resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetProfile(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ProfileState, opts ...pulumi.ResourceOption) (*Profile, error) { + var resource Profile + err := ctx.ReadResource("incus:index/profile:Profile", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Profile resources. +type profileState struct { + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the profile. + Description *string `pulumi:"description"` + // *Optional* - Device definition. See reference below. + Devices []ProfileDevice `pulumi:"devices"` + // **Required** - Name of the profile. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the profile will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +type ProfileState struct { + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config pulumi.StringMapInput + // *Optional* - Description of the profile. + Description pulumi.StringPtrInput + // *Optional* - Device definition. See reference below. + Devices ProfileDeviceArrayInput + // **Required** - Name of the profile. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the profile will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (ProfileState) ElementType() reflect.Type { + return reflect.TypeOf((*profileState)(nil)).Elem() +} + +type profileArgs struct { + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the profile. + Description *string `pulumi:"description"` + // *Optional* - Device definition. See reference below. + Devices []ProfileDevice `pulumi:"devices"` + // **Required** - Name of the profile. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the profile will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// The set of arguments for constructing a Profile resource. +type ProfileArgs struct { + // *Optional* - Map of key/value pairs of + // [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). + Config pulumi.StringMapInput + // *Optional* - Description of the profile. + Description pulumi.StringPtrInput + // *Optional* - Device definition. See reference below. + Devices ProfileDeviceArrayInput + // **Required** - Name of the profile. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the profile will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (ProfileArgs) ElementType() reflect.Type { + return reflect.TypeOf((*profileArgs)(nil)).Elem() +} + +type ProfileInput interface { + pulumi.Input + + ToProfileOutput() ProfileOutput + ToProfileOutputWithContext(ctx context.Context) ProfileOutput +} + +func (*Profile) ElementType() reflect.Type { + return reflect.TypeOf((**Profile)(nil)).Elem() +} + +func (i *Profile) ToProfileOutput() ProfileOutput { + return i.ToProfileOutputWithContext(context.Background()) +} + +func (i *Profile) ToProfileOutputWithContext(ctx context.Context) ProfileOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProfileOutput) +} + +// ProfileArrayInput is an input type that accepts ProfileArray and ProfileArrayOutput values. +// You can construct a concrete instance of `ProfileArrayInput` via: +// +// ProfileArray{ ProfileArgs{...} } +type ProfileArrayInput interface { + pulumi.Input + + ToProfileArrayOutput() ProfileArrayOutput + ToProfileArrayOutputWithContext(context.Context) ProfileArrayOutput +} + +type ProfileArray []ProfileInput + +func (ProfileArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Profile)(nil)).Elem() +} + +func (i ProfileArray) ToProfileArrayOutput() ProfileArrayOutput { + return i.ToProfileArrayOutputWithContext(context.Background()) +} + +func (i ProfileArray) ToProfileArrayOutputWithContext(ctx context.Context) ProfileArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProfileArrayOutput) +} + +// ProfileMapInput is an input type that accepts ProfileMap and ProfileMapOutput values. +// You can construct a concrete instance of `ProfileMapInput` via: +// +// ProfileMap{ "key": ProfileArgs{...} } +type ProfileMapInput interface { + pulumi.Input + + ToProfileMapOutput() ProfileMapOutput + ToProfileMapOutputWithContext(context.Context) ProfileMapOutput +} + +type ProfileMap map[string]ProfileInput + +func (ProfileMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Profile)(nil)).Elem() +} + +func (i ProfileMap) ToProfileMapOutput() ProfileMapOutput { + return i.ToProfileMapOutputWithContext(context.Background()) +} + +func (i ProfileMap) ToProfileMapOutputWithContext(ctx context.Context) ProfileMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProfileMapOutput) +} + +type ProfileOutput struct{ *pulumi.OutputState } + +func (ProfileOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Profile)(nil)).Elem() +} + +func (o ProfileOutput) ToProfileOutput() ProfileOutput { + return o +} + +func (o ProfileOutput) ToProfileOutputWithContext(ctx context.Context) ProfileOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// [instance config settings](https://linuxcontainers.org/incus/docs/main/reference/instance_options/). +func (o ProfileOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *Profile) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the profile. +func (o ProfileOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *Profile) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// *Optional* - Device definition. See reference below. +func (o ProfileOutput) Devices() ProfileDeviceArrayOutput { + return o.ApplyT(func(v *Profile) ProfileDeviceArrayOutput { return v.Devices }).(ProfileDeviceArrayOutput) +} + +// **Required** - Name of the profile. +func (o ProfileOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Profile) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the profile will be stored. +func (o ProfileOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *Profile) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o ProfileOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Profile) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +type ProfileArrayOutput struct{ *pulumi.OutputState } + +func (ProfileArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Profile)(nil)).Elem() +} + +func (o ProfileArrayOutput) ToProfileArrayOutput() ProfileArrayOutput { + return o +} + +func (o ProfileArrayOutput) ToProfileArrayOutputWithContext(ctx context.Context) ProfileArrayOutput { + return o +} + +func (o ProfileArrayOutput) Index(i pulumi.IntInput) ProfileOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Profile { + return vs[0].([]*Profile)[vs[1].(int)] + }).(ProfileOutput) +} + +type ProfileMapOutput struct{ *pulumi.OutputState } + +func (ProfileMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Profile)(nil)).Elem() +} + +func (o ProfileMapOutput) ToProfileMapOutput() ProfileMapOutput { + return o +} + +func (o ProfileMapOutput) ToProfileMapOutputWithContext(ctx context.Context) ProfileMapOutput { + return o +} + +func (o ProfileMapOutput) MapIndex(k pulumi.StringInput) ProfileOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Profile { + return vs[0].(map[string]*Profile)[vs[1].(string)] + }).(ProfileOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ProfileInput)(nil)).Elem(), &Profile{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProfileArrayInput)(nil)).Elem(), ProfileArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProfileMapInput)(nil)).Elem(), ProfileMap{}) + pulumi.RegisterOutputType(ProfileOutput{}) + pulumi.RegisterOutputType(ProfileArrayOutput{}) + pulumi.RegisterOutputType(ProfileMapOutput{}) +} diff --git a/sdk/go/incus/project.go b/sdk/go/incus/project.go new file mode 100644 index 0000000..619b97d --- /dev/null +++ b/sdk/go/incus/project.go @@ -0,0 +1,265 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type Project struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of [project config settings](https://linuxcontainers.org/incus/docs/main/reference/projects/). + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the project. + Description pulumi.StringOutput `pulumi:"description"` + // **Required** - Name of the project. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` +} + +// NewProject registers a new resource with the given unique name, arguments, and options. +func NewProject(ctx *pulumi.Context, + name string, args *ProjectArgs, opts ...pulumi.ResourceOption) (*Project, error) { + if args == nil { + args = &ProjectArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Project + err := ctx.RegisterResource("incus:index/project:Project", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetProject gets an existing Project resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetProject(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ProjectState, opts ...pulumi.ResourceOption) (*Project, error) { + var resource Project + err := ctx.ReadResource("incus:index/project:Project", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Project resources. +type projectState struct { + // *Optional* - Map of key/value pairs of [project config settings](https://linuxcontainers.org/incus/docs/main/reference/projects/). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the project. + Description *string `pulumi:"description"` + // **Required** - Name of the project. + Name *string `pulumi:"name"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +type ProjectState struct { + // *Optional* - Map of key/value pairs of [project config settings](https://linuxcontainers.org/incus/docs/main/reference/projects/). + Config pulumi.StringMapInput + // *Optional* - Description of the project. + Description pulumi.StringPtrInput + // **Required** - Name of the project. + Name pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (ProjectState) ElementType() reflect.Type { + return reflect.TypeOf((*projectState)(nil)).Elem() +} + +type projectArgs struct { + // *Optional* - Map of key/value pairs of [project config settings](https://linuxcontainers.org/incus/docs/main/reference/projects/). + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the project. + Description *string `pulumi:"description"` + // **Required** - Name of the project. + Name *string `pulumi:"name"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// The set of arguments for constructing a Project resource. +type ProjectArgs struct { + // *Optional* - Map of key/value pairs of [project config settings](https://linuxcontainers.org/incus/docs/main/reference/projects/). + Config pulumi.StringMapInput + // *Optional* - Description of the project. + Description pulumi.StringPtrInput + // **Required** - Name of the project. + Name pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput +} + +func (ProjectArgs) ElementType() reflect.Type { + return reflect.TypeOf((*projectArgs)(nil)).Elem() +} + +type ProjectInput interface { + pulumi.Input + + ToProjectOutput() ProjectOutput + ToProjectOutputWithContext(ctx context.Context) ProjectOutput +} + +func (*Project) ElementType() reflect.Type { + return reflect.TypeOf((**Project)(nil)).Elem() +} + +func (i *Project) ToProjectOutput() ProjectOutput { + return i.ToProjectOutputWithContext(context.Background()) +} + +func (i *Project) ToProjectOutputWithContext(ctx context.Context) ProjectOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProjectOutput) +} + +// ProjectArrayInput is an input type that accepts ProjectArray and ProjectArrayOutput values. +// You can construct a concrete instance of `ProjectArrayInput` via: +// +// ProjectArray{ ProjectArgs{...} } +type ProjectArrayInput interface { + pulumi.Input + + ToProjectArrayOutput() ProjectArrayOutput + ToProjectArrayOutputWithContext(context.Context) ProjectArrayOutput +} + +type ProjectArray []ProjectInput + +func (ProjectArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Project)(nil)).Elem() +} + +func (i ProjectArray) ToProjectArrayOutput() ProjectArrayOutput { + return i.ToProjectArrayOutputWithContext(context.Background()) +} + +func (i ProjectArray) ToProjectArrayOutputWithContext(ctx context.Context) ProjectArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProjectArrayOutput) +} + +// ProjectMapInput is an input type that accepts ProjectMap and ProjectMapOutput values. +// You can construct a concrete instance of `ProjectMapInput` via: +// +// ProjectMap{ "key": ProjectArgs{...} } +type ProjectMapInput interface { + pulumi.Input + + ToProjectMapOutput() ProjectMapOutput + ToProjectMapOutputWithContext(context.Context) ProjectMapOutput +} + +type ProjectMap map[string]ProjectInput + +func (ProjectMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Project)(nil)).Elem() +} + +func (i ProjectMap) ToProjectMapOutput() ProjectMapOutput { + return i.ToProjectMapOutputWithContext(context.Background()) +} + +func (i ProjectMap) ToProjectMapOutputWithContext(ctx context.Context) ProjectMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProjectMapOutput) +} + +type ProjectOutput struct{ *pulumi.OutputState } + +func (ProjectOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Project)(nil)).Elem() +} + +func (o ProjectOutput) ToProjectOutput() ProjectOutput { + return o +} + +func (o ProjectOutput) ToProjectOutputWithContext(ctx context.Context) ProjectOutput { + return o +} + +// *Optional* - Map of key/value pairs of [project config settings](https://linuxcontainers.org/incus/docs/main/reference/projects/). +func (o ProjectOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *Project) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the project. +func (o ProjectOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *Project) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// **Required** - Name of the project. +func (o ProjectOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Project) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o ProjectOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Project) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +type ProjectArrayOutput struct{ *pulumi.OutputState } + +func (ProjectArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Project)(nil)).Elem() +} + +func (o ProjectArrayOutput) ToProjectArrayOutput() ProjectArrayOutput { + return o +} + +func (o ProjectArrayOutput) ToProjectArrayOutputWithContext(ctx context.Context) ProjectArrayOutput { + return o +} + +func (o ProjectArrayOutput) Index(i pulumi.IntInput) ProjectOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Project { + return vs[0].([]*Project)[vs[1].(int)] + }).(ProjectOutput) +} + +type ProjectMapOutput struct{ *pulumi.OutputState } + +func (ProjectMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Project)(nil)).Elem() +} + +func (o ProjectMapOutput) ToProjectMapOutput() ProjectMapOutput { + return o +} + +func (o ProjectMapOutput) ToProjectMapOutputWithContext(ctx context.Context) ProjectMapOutput { + return o +} + +func (o ProjectMapOutput) MapIndex(k pulumi.StringInput) ProjectOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Project { + return vs[0].(map[string]*Project)[vs[1].(string)] + }).(ProjectOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ProjectInput)(nil)).Elem(), &Project{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProjectArrayInput)(nil)).Elem(), ProjectArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProjectMapInput)(nil)).Elem(), ProjectMap{}) + pulumi.RegisterOutputType(ProjectOutput{}) + pulumi.RegisterOutputType(ProjectArrayOutput{}) + pulumi.RegisterOutputType(ProjectMapOutput{}) +} diff --git a/sdk/go/incus/provider.go b/sdk/go/incus/provider.go new file mode 100644 index 0000000..0b8b504 --- /dev/null +++ b/sdk/go/incus/provider.go @@ -0,0 +1,124 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The provider type for the incus package. By default, resources use package-wide configuration +// settings, however an explicit `Provider` instance may be created and passed during resource +// construction to achieve fine-grained programmatic control over provider settings. See the +// [documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information. +type Provider struct { + pulumi.ProviderResourceState + + // The directory to look for existing Incus configuration. (default = $HOME/.config/incus) + ConfigDir pulumi.StringPtrOutput `pulumi:"configDir"` + // The project where project-scoped resources will be created. Can be overridden in individual resources. (default = + // default) + Project pulumi.StringPtrOutput `pulumi:"project"` +} + +// NewProvider registers a new resource with the given unique name, arguments, and options. +func NewProvider(ctx *pulumi.Context, + name string, args *ProviderArgs, opts ...pulumi.ResourceOption) (*Provider, error) { + if args == nil { + args = &ProviderArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Provider + err := ctx.RegisterResource("pulumi:providers:incus", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +type providerArgs struct { + // Accept the server certificate. + AcceptRemoteCertificate *bool `pulumi:"acceptRemoteCertificate"` + // The directory to look for existing Incus configuration. (default = $HOME/.config/incus) + ConfigDir *string `pulumi:"configDir"` + // Automatically generate the Incus client certificates if they don't exist. + GenerateClientCertificates *bool `pulumi:"generateClientCertificates"` + // The project where project-scoped resources will be created. Can be overridden in individual resources. (default = + // default) + Project *string `pulumi:"project"` + // Incus Remote + Remotes []ProviderRemote `pulumi:"remotes"` +} + +// The set of arguments for constructing a Provider resource. +type ProviderArgs struct { + // Accept the server certificate. + AcceptRemoteCertificate pulumi.BoolPtrInput + // The directory to look for existing Incus configuration. (default = $HOME/.config/incus) + ConfigDir pulumi.StringPtrInput + // Automatically generate the Incus client certificates if they don't exist. + GenerateClientCertificates pulumi.BoolPtrInput + // The project where project-scoped resources will be created. Can be overridden in individual resources. (default = + // default) + Project pulumi.StringPtrInput + // Incus Remote + Remotes ProviderRemoteArrayInput +} + +func (ProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*providerArgs)(nil)).Elem() +} + +type ProviderInput interface { + pulumi.Input + + ToProviderOutput() ProviderOutput + ToProviderOutputWithContext(ctx context.Context) ProviderOutput +} + +func (*Provider) ElementType() reflect.Type { + return reflect.TypeOf((**Provider)(nil)).Elem() +} + +func (i *Provider) ToProviderOutput() ProviderOutput { + return i.ToProviderOutputWithContext(context.Background()) +} + +func (i *Provider) ToProviderOutputWithContext(ctx context.Context) ProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderOutput) +} + +type ProviderOutput struct{ *pulumi.OutputState } + +func (ProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Provider)(nil)).Elem() +} + +func (o ProviderOutput) ToProviderOutput() ProviderOutput { + return o +} + +func (o ProviderOutput) ToProviderOutputWithContext(ctx context.Context) ProviderOutput { + return o +} + +// The directory to look for existing Incus configuration. (default = $HOME/.config/incus) +func (o ProviderOutput) ConfigDir() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.ConfigDir }).(pulumi.StringPtrOutput) +} + +// The project where project-scoped resources will be created. Can be overridden in individual resources. (default = +// default) +func (o ProviderOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.Project }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ProviderInput)(nil)).Elem(), &Provider{}) + pulumi.RegisterOutputType(ProviderOutput{}) +} diff --git a/sdk/go/incus/pulumi-plugin.json b/sdk/go/incus/pulumi-plugin.json new file mode 100644 index 0000000..3ef747d --- /dev/null +++ b/sdk/go/incus/pulumi-plugin.json @@ -0,0 +1,6 @@ +{ + "resource": true, + "name": "incus", + "version": "1.0.0-alpha.0+dev", + "server": "https://git.kalinow.ski/api/packages/kiterun/generic/pulumi-incus/${VERSION}/" +} diff --git a/sdk/go/incus/pulumiTypes.go b/sdk/go/incus/pulumiTypes.go new file mode 100644 index 0000000..dad49b5 --- /dev/null +++ b/sdk/go/incus/pulumiTypes.go @@ -0,0 +1,2603 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type ImageSourceFile struct { + // **Required** - Either the path of an [unified image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-unified) + // or the rootfs tarball of a [split image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-split), depending on + // `metadataPath` being provided or not. + DataPath string `pulumi:"dataPath"` + // *Optional* - Path to the metadata tarball of a [split image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-split). + MetadataPath *string `pulumi:"metadataPath"` +} + +// ImageSourceFileInput is an input type that accepts ImageSourceFileArgs and ImageSourceFileOutput values. +// You can construct a concrete instance of `ImageSourceFileInput` via: +// +// ImageSourceFileArgs{...} +type ImageSourceFileInput interface { + pulumi.Input + + ToImageSourceFileOutput() ImageSourceFileOutput + ToImageSourceFileOutputWithContext(context.Context) ImageSourceFileOutput +} + +type ImageSourceFileArgs struct { + // **Required** - Either the path of an [unified image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-unified) + // or the rootfs tarball of a [split image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-split), depending on + // `metadataPath` being provided or not. + DataPath pulumi.StringInput `pulumi:"dataPath"` + // *Optional* - Path to the metadata tarball of a [split image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-split). + MetadataPath pulumi.StringPtrInput `pulumi:"metadataPath"` +} + +func (ImageSourceFileArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ImageSourceFile)(nil)).Elem() +} + +func (i ImageSourceFileArgs) ToImageSourceFileOutput() ImageSourceFileOutput { + return i.ToImageSourceFileOutputWithContext(context.Background()) +} + +func (i ImageSourceFileArgs) ToImageSourceFileOutputWithContext(ctx context.Context) ImageSourceFileOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageSourceFileOutput) +} + +func (i ImageSourceFileArgs) ToImageSourceFilePtrOutput() ImageSourceFilePtrOutput { + return i.ToImageSourceFilePtrOutputWithContext(context.Background()) +} + +func (i ImageSourceFileArgs) ToImageSourceFilePtrOutputWithContext(ctx context.Context) ImageSourceFilePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageSourceFileOutput).ToImageSourceFilePtrOutputWithContext(ctx) +} + +// ImageSourceFilePtrInput is an input type that accepts ImageSourceFileArgs, ImageSourceFilePtr and ImageSourceFilePtrOutput values. +// You can construct a concrete instance of `ImageSourceFilePtrInput` via: +// +// ImageSourceFileArgs{...} +// +// or: +// +// nil +type ImageSourceFilePtrInput interface { + pulumi.Input + + ToImageSourceFilePtrOutput() ImageSourceFilePtrOutput + ToImageSourceFilePtrOutputWithContext(context.Context) ImageSourceFilePtrOutput +} + +type imageSourceFilePtrType ImageSourceFileArgs + +func ImageSourceFilePtr(v *ImageSourceFileArgs) ImageSourceFilePtrInput { + return (*imageSourceFilePtrType)(v) +} + +func (*imageSourceFilePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ImageSourceFile)(nil)).Elem() +} + +func (i *imageSourceFilePtrType) ToImageSourceFilePtrOutput() ImageSourceFilePtrOutput { + return i.ToImageSourceFilePtrOutputWithContext(context.Background()) +} + +func (i *imageSourceFilePtrType) ToImageSourceFilePtrOutputWithContext(ctx context.Context) ImageSourceFilePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageSourceFilePtrOutput) +} + +type ImageSourceFileOutput struct{ *pulumi.OutputState } + +func (ImageSourceFileOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ImageSourceFile)(nil)).Elem() +} + +func (o ImageSourceFileOutput) ToImageSourceFileOutput() ImageSourceFileOutput { + return o +} + +func (o ImageSourceFileOutput) ToImageSourceFileOutputWithContext(ctx context.Context) ImageSourceFileOutput { + return o +} + +func (o ImageSourceFileOutput) ToImageSourceFilePtrOutput() ImageSourceFilePtrOutput { + return o.ToImageSourceFilePtrOutputWithContext(context.Background()) +} + +func (o ImageSourceFileOutput) ToImageSourceFilePtrOutputWithContext(ctx context.Context) ImageSourceFilePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ImageSourceFile) *ImageSourceFile { + return &v + }).(ImageSourceFilePtrOutput) +} + +// **Required** - Either the path of an [unified image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-unified) +// or the rootfs tarball of a [split image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-split), depending on +// `metadataPath` being provided or not. +func (o ImageSourceFileOutput) DataPath() pulumi.StringOutput { + return o.ApplyT(func(v ImageSourceFile) string { return v.DataPath }).(pulumi.StringOutput) +} + +// *Optional* - Path to the metadata tarball of a [split image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-split). +func (o ImageSourceFileOutput) MetadataPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v ImageSourceFile) *string { return v.MetadataPath }).(pulumi.StringPtrOutput) +} + +type ImageSourceFilePtrOutput struct{ *pulumi.OutputState } + +func (ImageSourceFilePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ImageSourceFile)(nil)).Elem() +} + +func (o ImageSourceFilePtrOutput) ToImageSourceFilePtrOutput() ImageSourceFilePtrOutput { + return o +} + +func (o ImageSourceFilePtrOutput) ToImageSourceFilePtrOutputWithContext(ctx context.Context) ImageSourceFilePtrOutput { + return o +} + +func (o ImageSourceFilePtrOutput) Elem() ImageSourceFileOutput { + return o.ApplyT(func(v *ImageSourceFile) ImageSourceFile { + if v != nil { + return *v + } + var ret ImageSourceFile + return ret + }).(ImageSourceFileOutput) +} + +// **Required** - Either the path of an [unified image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-unified) +// or the rootfs tarball of a [split image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-split), depending on +// `metadataPath` being provided or not. +func (o ImageSourceFilePtrOutput) DataPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ImageSourceFile) *string { + if v == nil { + return nil + } + return &v.DataPath + }).(pulumi.StringPtrOutput) +} + +// *Optional* - Path to the metadata tarball of a [split image](https://linuxcontainers.org/incus/docs/main/reference/image_format/#image-format-split). +func (o ImageSourceFilePtrOutput) MetadataPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ImageSourceFile) *string { + if v == nil { + return nil + } + return v.MetadataPath + }).(pulumi.StringPtrOutput) +} + +type ImageSourceImage struct { + // *Optional* - The image architecture (e.g. x86_64, aarch64). See [Architectures](https://linuxcontainers.org/incus/docs/main/architectures/) for all possible values. + Architecture *string `pulumi:"architecture"` + // *Optional* - Whether to copy the aliases of the image from + // the remote. Valid values are `true` and `false`. + CopyAliases *bool `pulumi:"copyAliases"` + // **Required** - Name of the image. + Name string `pulumi:"name"` + // **Required** - The remote where the image will be pulled from. + Remote string `pulumi:"remote"` + // *Optional* - Type of image to cache. Must be one of `container` or + // `virtual-machine`. Defaults to `container`. + Type *string `pulumi:"type"` +} + +// ImageSourceImageInput is an input type that accepts ImageSourceImageArgs and ImageSourceImageOutput values. +// You can construct a concrete instance of `ImageSourceImageInput` via: +// +// ImageSourceImageArgs{...} +type ImageSourceImageInput interface { + pulumi.Input + + ToImageSourceImageOutput() ImageSourceImageOutput + ToImageSourceImageOutputWithContext(context.Context) ImageSourceImageOutput +} + +type ImageSourceImageArgs struct { + // *Optional* - The image architecture (e.g. x86_64, aarch64). See [Architectures](https://linuxcontainers.org/incus/docs/main/architectures/) for all possible values. + Architecture pulumi.StringPtrInput `pulumi:"architecture"` + // *Optional* - Whether to copy the aliases of the image from + // the remote. Valid values are `true` and `false`. + CopyAliases pulumi.BoolPtrInput `pulumi:"copyAliases"` + // **Required** - Name of the image. + Name pulumi.StringInput `pulumi:"name"` + // **Required** - The remote where the image will be pulled from. + Remote pulumi.StringInput `pulumi:"remote"` + // *Optional* - Type of image to cache. Must be one of `container` or + // `virtual-machine`. Defaults to `container`. + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (ImageSourceImageArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ImageSourceImage)(nil)).Elem() +} + +func (i ImageSourceImageArgs) ToImageSourceImageOutput() ImageSourceImageOutput { + return i.ToImageSourceImageOutputWithContext(context.Background()) +} + +func (i ImageSourceImageArgs) ToImageSourceImageOutputWithContext(ctx context.Context) ImageSourceImageOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageSourceImageOutput) +} + +func (i ImageSourceImageArgs) ToImageSourceImagePtrOutput() ImageSourceImagePtrOutput { + return i.ToImageSourceImagePtrOutputWithContext(context.Background()) +} + +func (i ImageSourceImageArgs) ToImageSourceImagePtrOutputWithContext(ctx context.Context) ImageSourceImagePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageSourceImageOutput).ToImageSourceImagePtrOutputWithContext(ctx) +} + +// ImageSourceImagePtrInput is an input type that accepts ImageSourceImageArgs, ImageSourceImagePtr and ImageSourceImagePtrOutput values. +// You can construct a concrete instance of `ImageSourceImagePtrInput` via: +// +// ImageSourceImageArgs{...} +// +// or: +// +// nil +type ImageSourceImagePtrInput interface { + pulumi.Input + + ToImageSourceImagePtrOutput() ImageSourceImagePtrOutput + ToImageSourceImagePtrOutputWithContext(context.Context) ImageSourceImagePtrOutput +} + +type imageSourceImagePtrType ImageSourceImageArgs + +func ImageSourceImagePtr(v *ImageSourceImageArgs) ImageSourceImagePtrInput { + return (*imageSourceImagePtrType)(v) +} + +func (*imageSourceImagePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ImageSourceImage)(nil)).Elem() +} + +func (i *imageSourceImagePtrType) ToImageSourceImagePtrOutput() ImageSourceImagePtrOutput { + return i.ToImageSourceImagePtrOutputWithContext(context.Background()) +} + +func (i *imageSourceImagePtrType) ToImageSourceImagePtrOutputWithContext(ctx context.Context) ImageSourceImagePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageSourceImagePtrOutput) +} + +type ImageSourceImageOutput struct{ *pulumi.OutputState } + +func (ImageSourceImageOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ImageSourceImage)(nil)).Elem() +} + +func (o ImageSourceImageOutput) ToImageSourceImageOutput() ImageSourceImageOutput { + return o +} + +func (o ImageSourceImageOutput) ToImageSourceImageOutputWithContext(ctx context.Context) ImageSourceImageOutput { + return o +} + +func (o ImageSourceImageOutput) ToImageSourceImagePtrOutput() ImageSourceImagePtrOutput { + return o.ToImageSourceImagePtrOutputWithContext(context.Background()) +} + +func (o ImageSourceImageOutput) ToImageSourceImagePtrOutputWithContext(ctx context.Context) ImageSourceImagePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ImageSourceImage) *ImageSourceImage { + return &v + }).(ImageSourceImagePtrOutput) +} + +// *Optional* - The image architecture (e.g. x86_64, aarch64). See [Architectures](https://linuxcontainers.org/incus/docs/main/architectures/) for all possible values. +func (o ImageSourceImageOutput) Architecture() pulumi.StringPtrOutput { + return o.ApplyT(func(v ImageSourceImage) *string { return v.Architecture }).(pulumi.StringPtrOutput) +} + +// *Optional* - Whether to copy the aliases of the image from +// the remote. Valid values are `true` and `false`. +func (o ImageSourceImageOutput) CopyAliases() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ImageSourceImage) *bool { return v.CopyAliases }).(pulumi.BoolPtrOutput) +} + +// **Required** - Name of the image. +func (o ImageSourceImageOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ImageSourceImage) string { return v.Name }).(pulumi.StringOutput) +} + +// **Required** - The remote where the image will be pulled from. +func (o ImageSourceImageOutput) Remote() pulumi.StringOutput { + return o.ApplyT(func(v ImageSourceImage) string { return v.Remote }).(pulumi.StringOutput) +} + +// *Optional* - Type of image to cache. Must be one of `container` or +// `virtual-machine`. Defaults to `container`. +func (o ImageSourceImageOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v ImageSourceImage) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type ImageSourceImagePtrOutput struct{ *pulumi.OutputState } + +func (ImageSourceImagePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ImageSourceImage)(nil)).Elem() +} + +func (o ImageSourceImagePtrOutput) ToImageSourceImagePtrOutput() ImageSourceImagePtrOutput { + return o +} + +func (o ImageSourceImagePtrOutput) ToImageSourceImagePtrOutputWithContext(ctx context.Context) ImageSourceImagePtrOutput { + return o +} + +func (o ImageSourceImagePtrOutput) Elem() ImageSourceImageOutput { + return o.ApplyT(func(v *ImageSourceImage) ImageSourceImage { + if v != nil { + return *v + } + var ret ImageSourceImage + return ret + }).(ImageSourceImageOutput) +} + +// *Optional* - The image architecture (e.g. x86_64, aarch64). See [Architectures](https://linuxcontainers.org/incus/docs/main/architectures/) for all possible values. +func (o ImageSourceImagePtrOutput) Architecture() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ImageSourceImage) *string { + if v == nil { + return nil + } + return v.Architecture + }).(pulumi.StringPtrOutput) +} + +// *Optional* - Whether to copy the aliases of the image from +// the remote. Valid values are `true` and `false`. +func (o ImageSourceImagePtrOutput) CopyAliases() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ImageSourceImage) *bool { + if v == nil { + return nil + } + return v.CopyAliases + }).(pulumi.BoolPtrOutput) +} + +// **Required** - Name of the image. +func (o ImageSourceImagePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ImageSourceImage) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// **Required** - The remote where the image will be pulled from. +func (o ImageSourceImagePtrOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ImageSourceImage) *string { + if v == nil { + return nil + } + return &v.Remote + }).(pulumi.StringPtrOutput) +} + +// *Optional* - Type of image to cache. Must be one of `container` or +// `virtual-machine`. Defaults to `container`. +func (o ImageSourceImagePtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ImageSourceImage) *string { + if v == nil { + return nil + } + return v.Type + }).(pulumi.StringPtrOutput) +} + +type ImageSourceInstance struct { + // **Required** - Name of the source instance. + Name string `pulumi:"name"` + // *Optional* - Name of the snapshot of the source instance + Snapshot *string `pulumi:"snapshot"` +} + +// ImageSourceInstanceInput is an input type that accepts ImageSourceInstanceArgs and ImageSourceInstanceOutput values. +// You can construct a concrete instance of `ImageSourceInstanceInput` via: +// +// ImageSourceInstanceArgs{...} +type ImageSourceInstanceInput interface { + pulumi.Input + + ToImageSourceInstanceOutput() ImageSourceInstanceOutput + ToImageSourceInstanceOutputWithContext(context.Context) ImageSourceInstanceOutput +} + +type ImageSourceInstanceArgs struct { + // **Required** - Name of the source instance. + Name pulumi.StringInput `pulumi:"name"` + // *Optional* - Name of the snapshot of the source instance + Snapshot pulumi.StringPtrInput `pulumi:"snapshot"` +} + +func (ImageSourceInstanceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ImageSourceInstance)(nil)).Elem() +} + +func (i ImageSourceInstanceArgs) ToImageSourceInstanceOutput() ImageSourceInstanceOutput { + return i.ToImageSourceInstanceOutputWithContext(context.Background()) +} + +func (i ImageSourceInstanceArgs) ToImageSourceInstanceOutputWithContext(ctx context.Context) ImageSourceInstanceOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageSourceInstanceOutput) +} + +func (i ImageSourceInstanceArgs) ToImageSourceInstancePtrOutput() ImageSourceInstancePtrOutput { + return i.ToImageSourceInstancePtrOutputWithContext(context.Background()) +} + +func (i ImageSourceInstanceArgs) ToImageSourceInstancePtrOutputWithContext(ctx context.Context) ImageSourceInstancePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageSourceInstanceOutput).ToImageSourceInstancePtrOutputWithContext(ctx) +} + +// ImageSourceInstancePtrInput is an input type that accepts ImageSourceInstanceArgs, ImageSourceInstancePtr and ImageSourceInstancePtrOutput values. +// You can construct a concrete instance of `ImageSourceInstancePtrInput` via: +// +// ImageSourceInstanceArgs{...} +// +// or: +// +// nil +type ImageSourceInstancePtrInput interface { + pulumi.Input + + ToImageSourceInstancePtrOutput() ImageSourceInstancePtrOutput + ToImageSourceInstancePtrOutputWithContext(context.Context) ImageSourceInstancePtrOutput +} + +type imageSourceInstancePtrType ImageSourceInstanceArgs + +func ImageSourceInstancePtr(v *ImageSourceInstanceArgs) ImageSourceInstancePtrInput { + return (*imageSourceInstancePtrType)(v) +} + +func (*imageSourceInstancePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ImageSourceInstance)(nil)).Elem() +} + +func (i *imageSourceInstancePtrType) ToImageSourceInstancePtrOutput() ImageSourceInstancePtrOutput { + return i.ToImageSourceInstancePtrOutputWithContext(context.Background()) +} + +func (i *imageSourceInstancePtrType) ToImageSourceInstancePtrOutputWithContext(ctx context.Context) ImageSourceInstancePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageSourceInstancePtrOutput) +} + +type ImageSourceInstanceOutput struct{ *pulumi.OutputState } + +func (ImageSourceInstanceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ImageSourceInstance)(nil)).Elem() +} + +func (o ImageSourceInstanceOutput) ToImageSourceInstanceOutput() ImageSourceInstanceOutput { + return o +} + +func (o ImageSourceInstanceOutput) ToImageSourceInstanceOutputWithContext(ctx context.Context) ImageSourceInstanceOutput { + return o +} + +func (o ImageSourceInstanceOutput) ToImageSourceInstancePtrOutput() ImageSourceInstancePtrOutput { + return o.ToImageSourceInstancePtrOutputWithContext(context.Background()) +} + +func (o ImageSourceInstanceOutput) ToImageSourceInstancePtrOutputWithContext(ctx context.Context) ImageSourceInstancePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ImageSourceInstance) *ImageSourceInstance { + return &v + }).(ImageSourceInstancePtrOutput) +} + +// **Required** - Name of the source instance. +func (o ImageSourceInstanceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ImageSourceInstance) string { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - Name of the snapshot of the source instance +func (o ImageSourceInstanceOutput) Snapshot() pulumi.StringPtrOutput { + return o.ApplyT(func(v ImageSourceInstance) *string { return v.Snapshot }).(pulumi.StringPtrOutput) +} + +type ImageSourceInstancePtrOutput struct{ *pulumi.OutputState } + +func (ImageSourceInstancePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ImageSourceInstance)(nil)).Elem() +} + +func (o ImageSourceInstancePtrOutput) ToImageSourceInstancePtrOutput() ImageSourceInstancePtrOutput { + return o +} + +func (o ImageSourceInstancePtrOutput) ToImageSourceInstancePtrOutputWithContext(ctx context.Context) ImageSourceInstancePtrOutput { + return o +} + +func (o ImageSourceInstancePtrOutput) Elem() ImageSourceInstanceOutput { + return o.ApplyT(func(v *ImageSourceInstance) ImageSourceInstance { + if v != nil { + return *v + } + var ret ImageSourceInstance + return ret + }).(ImageSourceInstanceOutput) +} + +// **Required** - Name of the source instance. +func (o ImageSourceInstancePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ImageSourceInstance) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// *Optional* - Name of the snapshot of the source instance +func (o ImageSourceInstancePtrOutput) Snapshot() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ImageSourceInstance) *string { + if v == nil { + return nil + } + return v.Snapshot + }).(pulumi.StringPtrOutput) +} + +type InstanceDevice struct { + // **Required** - Name of the device. + Name string `pulumi:"name"` + // **Required** - Map of key/value pairs of + // [device properties](https://linuxcontainers.org/incus/docs/main/reference/devices/). + Properties map[string]string `pulumi:"properties"` + // **Required** - Type of the device Must be one of none, disk, nic, + // unix-char, unix-block, usb, gpu, infiniband, proxy, unix-hotplug, tpm, pci. + Type string `pulumi:"type"` +} + +// InstanceDeviceInput is an input type that accepts InstanceDeviceArgs and InstanceDeviceOutput values. +// You can construct a concrete instance of `InstanceDeviceInput` via: +// +// InstanceDeviceArgs{...} +type InstanceDeviceInput interface { + pulumi.Input + + ToInstanceDeviceOutput() InstanceDeviceOutput + ToInstanceDeviceOutputWithContext(context.Context) InstanceDeviceOutput +} + +type InstanceDeviceArgs struct { + // **Required** - Name of the device. + Name pulumi.StringInput `pulumi:"name"` + // **Required** - Map of key/value pairs of + // [device properties](https://linuxcontainers.org/incus/docs/main/reference/devices/). + Properties pulumi.StringMapInput `pulumi:"properties"` + // **Required** - Type of the device Must be one of none, disk, nic, + // unix-char, unix-block, usb, gpu, infiniband, proxy, unix-hotplug, tpm, pci. + Type pulumi.StringInput `pulumi:"type"` +} + +func (InstanceDeviceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceDevice)(nil)).Elem() +} + +func (i InstanceDeviceArgs) ToInstanceDeviceOutput() InstanceDeviceOutput { + return i.ToInstanceDeviceOutputWithContext(context.Background()) +} + +func (i InstanceDeviceArgs) ToInstanceDeviceOutputWithContext(ctx context.Context) InstanceDeviceOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceDeviceOutput) +} + +// InstanceDeviceArrayInput is an input type that accepts InstanceDeviceArray and InstanceDeviceArrayOutput values. +// You can construct a concrete instance of `InstanceDeviceArrayInput` via: +// +// InstanceDeviceArray{ InstanceDeviceArgs{...} } +type InstanceDeviceArrayInput interface { + pulumi.Input + + ToInstanceDeviceArrayOutput() InstanceDeviceArrayOutput + ToInstanceDeviceArrayOutputWithContext(context.Context) InstanceDeviceArrayOutput +} + +type InstanceDeviceArray []InstanceDeviceInput + +func (InstanceDeviceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]InstanceDevice)(nil)).Elem() +} + +func (i InstanceDeviceArray) ToInstanceDeviceArrayOutput() InstanceDeviceArrayOutput { + return i.ToInstanceDeviceArrayOutputWithContext(context.Background()) +} + +func (i InstanceDeviceArray) ToInstanceDeviceArrayOutputWithContext(ctx context.Context) InstanceDeviceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceDeviceArrayOutput) +} + +type InstanceDeviceOutput struct{ *pulumi.OutputState } + +func (InstanceDeviceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceDevice)(nil)).Elem() +} + +func (o InstanceDeviceOutput) ToInstanceDeviceOutput() InstanceDeviceOutput { + return o +} + +func (o InstanceDeviceOutput) ToInstanceDeviceOutputWithContext(ctx context.Context) InstanceDeviceOutput { + return o +} + +// **Required** - Name of the device. +func (o InstanceDeviceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v InstanceDevice) string { return v.Name }).(pulumi.StringOutput) +} + +// **Required** - Map of key/value pairs of +// [device properties](https://linuxcontainers.org/incus/docs/main/reference/devices/). +func (o InstanceDeviceOutput) Properties() pulumi.StringMapOutput { + return o.ApplyT(func(v InstanceDevice) map[string]string { return v.Properties }).(pulumi.StringMapOutput) +} + +// **Required** - Type of the device Must be one of none, disk, nic, +// unix-char, unix-block, usb, gpu, infiniband, proxy, unix-hotplug, tpm, pci. +func (o InstanceDeviceOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v InstanceDevice) string { return v.Type }).(pulumi.StringOutput) +} + +type InstanceDeviceArrayOutput struct{ *pulumi.OutputState } + +func (InstanceDeviceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]InstanceDevice)(nil)).Elem() +} + +func (o InstanceDeviceArrayOutput) ToInstanceDeviceArrayOutput() InstanceDeviceArrayOutput { + return o +} + +func (o InstanceDeviceArrayOutput) ToInstanceDeviceArrayOutputWithContext(ctx context.Context) InstanceDeviceArrayOutput { + return o +} + +func (o InstanceDeviceArrayOutput) Index(i pulumi.IntInput) InstanceDeviceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) InstanceDevice { + return vs[0].([]InstanceDevice)[vs[1].(int)] + }).(InstanceDeviceOutput) +} + +type InstanceFile struct { + Append *bool `pulumi:"append"` + // **Required** unless sourcePath is used* - The *contents* of the file. + // Use the `file()` function to read in the content of a file from disk. + Content *string `pulumi:"content"` + // *Optional* - Whether to create the directories leading + // to the target if they do not exist. + CreateDirectories *bool `pulumi:"createDirectories"` + // *Optional* - The GID of the file. Must be an unquoted integer. + Gid *int `pulumi:"gid"` + // *Optional* - The octal permissions of the file, must be quoted. Defaults to `0755`. + Mode *string `pulumi:"mode"` + // **Required** unless content is used* - The source path to a file to + // copy to the instance. + SourcePath *string `pulumi:"sourcePath"` + // **Required** - The absolute path of the file on the instance, + // including the filename. + TargetPath string `pulumi:"targetPath"` + // *Optional* - The UID of the file. Must be an unquoted integer. + Uid *int `pulumi:"uid"` +} + +// InstanceFileInput is an input type that accepts InstanceFileArgs and InstanceFileOutput values. +// You can construct a concrete instance of `InstanceFileInput` via: +// +// InstanceFileArgs{...} +type InstanceFileInput interface { + pulumi.Input + + ToInstanceFileOutput() InstanceFileOutput + ToInstanceFileOutputWithContext(context.Context) InstanceFileOutput +} + +type InstanceFileArgs struct { + Append pulumi.BoolPtrInput `pulumi:"append"` + // **Required** unless sourcePath is used* - The *contents* of the file. + // Use the `file()` function to read in the content of a file from disk. + Content pulumi.StringPtrInput `pulumi:"content"` + // *Optional* - Whether to create the directories leading + // to the target if they do not exist. + CreateDirectories pulumi.BoolPtrInput `pulumi:"createDirectories"` + // *Optional* - The GID of the file. Must be an unquoted integer. + Gid pulumi.IntPtrInput `pulumi:"gid"` + // *Optional* - The octal permissions of the file, must be quoted. Defaults to `0755`. + Mode pulumi.StringPtrInput `pulumi:"mode"` + // **Required** unless content is used* - The source path to a file to + // copy to the instance. + SourcePath pulumi.StringPtrInput `pulumi:"sourcePath"` + // **Required** - The absolute path of the file on the instance, + // including the filename. + TargetPath pulumi.StringInput `pulumi:"targetPath"` + // *Optional* - The UID of the file. Must be an unquoted integer. + Uid pulumi.IntPtrInput `pulumi:"uid"` +} + +func (InstanceFileArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceFile)(nil)).Elem() +} + +func (i InstanceFileArgs) ToInstanceFileOutput() InstanceFileOutput { + return i.ToInstanceFileOutputWithContext(context.Background()) +} + +func (i InstanceFileArgs) ToInstanceFileOutputWithContext(ctx context.Context) InstanceFileOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceFileOutput) +} + +// InstanceFileArrayInput is an input type that accepts InstanceFileArray and InstanceFileArrayOutput values. +// You can construct a concrete instance of `InstanceFileArrayInput` via: +// +// InstanceFileArray{ InstanceFileArgs{...} } +type InstanceFileArrayInput interface { + pulumi.Input + + ToInstanceFileArrayOutput() InstanceFileArrayOutput + ToInstanceFileArrayOutputWithContext(context.Context) InstanceFileArrayOutput +} + +type InstanceFileArray []InstanceFileInput + +func (InstanceFileArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]InstanceFile)(nil)).Elem() +} + +func (i InstanceFileArray) ToInstanceFileArrayOutput() InstanceFileArrayOutput { + return i.ToInstanceFileArrayOutputWithContext(context.Background()) +} + +func (i InstanceFileArray) ToInstanceFileArrayOutputWithContext(ctx context.Context) InstanceFileArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceFileArrayOutput) +} + +type InstanceFileOutput struct{ *pulumi.OutputState } + +func (InstanceFileOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceFile)(nil)).Elem() +} + +func (o InstanceFileOutput) ToInstanceFileOutput() InstanceFileOutput { + return o +} + +func (o InstanceFileOutput) ToInstanceFileOutputWithContext(ctx context.Context) InstanceFileOutput { + return o +} + +func (o InstanceFileOutput) Append() pulumi.BoolPtrOutput { + return o.ApplyT(func(v InstanceFile) *bool { return v.Append }).(pulumi.BoolPtrOutput) +} + +// **Required** unless sourcePath is used* - The *contents* of the file. +// Use the `file()` function to read in the content of a file from disk. +func (o InstanceFileOutput) Content() pulumi.StringPtrOutput { + return o.ApplyT(func(v InstanceFile) *string { return v.Content }).(pulumi.StringPtrOutput) +} + +// *Optional* - Whether to create the directories leading +// to the target if they do not exist. +func (o InstanceFileOutput) CreateDirectories() pulumi.BoolPtrOutput { + return o.ApplyT(func(v InstanceFile) *bool { return v.CreateDirectories }).(pulumi.BoolPtrOutput) +} + +// *Optional* - The GID of the file. Must be an unquoted integer. +func (o InstanceFileOutput) Gid() pulumi.IntPtrOutput { + return o.ApplyT(func(v InstanceFile) *int { return v.Gid }).(pulumi.IntPtrOutput) +} + +// *Optional* - The octal permissions of the file, must be quoted. Defaults to `0755`. +func (o InstanceFileOutput) Mode() pulumi.StringPtrOutput { + return o.ApplyT(func(v InstanceFile) *string { return v.Mode }).(pulumi.StringPtrOutput) +} + +// **Required** unless content is used* - The source path to a file to +// copy to the instance. +func (o InstanceFileOutput) SourcePath() pulumi.StringPtrOutput { + return o.ApplyT(func(v InstanceFile) *string { return v.SourcePath }).(pulumi.StringPtrOutput) +} + +// **Required** - The absolute path of the file on the instance, +// including the filename. +func (o InstanceFileOutput) TargetPath() pulumi.StringOutput { + return o.ApplyT(func(v InstanceFile) string { return v.TargetPath }).(pulumi.StringOutput) +} + +// *Optional* - The UID of the file. Must be an unquoted integer. +func (o InstanceFileOutput) Uid() pulumi.IntPtrOutput { + return o.ApplyT(func(v InstanceFile) *int { return v.Uid }).(pulumi.IntPtrOutput) +} + +type InstanceFileArrayOutput struct{ *pulumi.OutputState } + +func (InstanceFileArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]InstanceFile)(nil)).Elem() +} + +func (o InstanceFileArrayOutput) ToInstanceFileArrayOutput() InstanceFileArrayOutput { + return o +} + +func (o InstanceFileArrayOutput) ToInstanceFileArrayOutputWithContext(ctx context.Context) InstanceFileArrayOutput { + return o +} + +func (o InstanceFileArrayOutput) Index(i pulumi.IntInput) InstanceFileOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) InstanceFile { + return vs[0].([]InstanceFile)[vs[1].(int)] + }).(InstanceFileOutput) +} + +type InstanceSourceInstance struct { + // **Required** - Name of the source instance. + Name string `pulumi:"name"` + // **Required** - Name of the project in which the source instance exists. + Project string `pulumi:"project"` + // *Optional* - Name of the snapshot of the source instance + Snapshot *string `pulumi:"snapshot"` +} + +// InstanceSourceInstanceInput is an input type that accepts InstanceSourceInstanceArgs and InstanceSourceInstanceOutput values. +// You can construct a concrete instance of `InstanceSourceInstanceInput` via: +// +// InstanceSourceInstanceArgs{...} +type InstanceSourceInstanceInput interface { + pulumi.Input + + ToInstanceSourceInstanceOutput() InstanceSourceInstanceOutput + ToInstanceSourceInstanceOutputWithContext(context.Context) InstanceSourceInstanceOutput +} + +type InstanceSourceInstanceArgs struct { + // **Required** - Name of the source instance. + Name pulumi.StringInput `pulumi:"name"` + // **Required** - Name of the project in which the source instance exists. + Project pulumi.StringInput `pulumi:"project"` + // *Optional* - Name of the snapshot of the source instance + Snapshot pulumi.StringPtrInput `pulumi:"snapshot"` +} + +func (InstanceSourceInstanceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceSourceInstance)(nil)).Elem() +} + +func (i InstanceSourceInstanceArgs) ToInstanceSourceInstanceOutput() InstanceSourceInstanceOutput { + return i.ToInstanceSourceInstanceOutputWithContext(context.Background()) +} + +func (i InstanceSourceInstanceArgs) ToInstanceSourceInstanceOutputWithContext(ctx context.Context) InstanceSourceInstanceOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceSourceInstanceOutput) +} + +func (i InstanceSourceInstanceArgs) ToInstanceSourceInstancePtrOutput() InstanceSourceInstancePtrOutput { + return i.ToInstanceSourceInstancePtrOutputWithContext(context.Background()) +} + +func (i InstanceSourceInstanceArgs) ToInstanceSourceInstancePtrOutputWithContext(ctx context.Context) InstanceSourceInstancePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceSourceInstanceOutput).ToInstanceSourceInstancePtrOutputWithContext(ctx) +} + +// InstanceSourceInstancePtrInput is an input type that accepts InstanceSourceInstanceArgs, InstanceSourceInstancePtr and InstanceSourceInstancePtrOutput values. +// You can construct a concrete instance of `InstanceSourceInstancePtrInput` via: +// +// InstanceSourceInstanceArgs{...} +// +// or: +// +// nil +type InstanceSourceInstancePtrInput interface { + pulumi.Input + + ToInstanceSourceInstancePtrOutput() InstanceSourceInstancePtrOutput + ToInstanceSourceInstancePtrOutputWithContext(context.Context) InstanceSourceInstancePtrOutput +} + +type instanceSourceInstancePtrType InstanceSourceInstanceArgs + +func InstanceSourceInstancePtr(v *InstanceSourceInstanceArgs) InstanceSourceInstancePtrInput { + return (*instanceSourceInstancePtrType)(v) +} + +func (*instanceSourceInstancePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InstanceSourceInstance)(nil)).Elem() +} + +func (i *instanceSourceInstancePtrType) ToInstanceSourceInstancePtrOutput() InstanceSourceInstancePtrOutput { + return i.ToInstanceSourceInstancePtrOutputWithContext(context.Background()) +} + +func (i *instanceSourceInstancePtrType) ToInstanceSourceInstancePtrOutputWithContext(ctx context.Context) InstanceSourceInstancePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceSourceInstancePtrOutput) +} + +type InstanceSourceInstanceOutput struct{ *pulumi.OutputState } + +func (InstanceSourceInstanceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceSourceInstance)(nil)).Elem() +} + +func (o InstanceSourceInstanceOutput) ToInstanceSourceInstanceOutput() InstanceSourceInstanceOutput { + return o +} + +func (o InstanceSourceInstanceOutput) ToInstanceSourceInstanceOutputWithContext(ctx context.Context) InstanceSourceInstanceOutput { + return o +} + +func (o InstanceSourceInstanceOutput) ToInstanceSourceInstancePtrOutput() InstanceSourceInstancePtrOutput { + return o.ToInstanceSourceInstancePtrOutputWithContext(context.Background()) +} + +func (o InstanceSourceInstanceOutput) ToInstanceSourceInstancePtrOutputWithContext(ctx context.Context) InstanceSourceInstancePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InstanceSourceInstance) *InstanceSourceInstance { + return &v + }).(InstanceSourceInstancePtrOutput) +} + +// **Required** - Name of the source instance. +func (o InstanceSourceInstanceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v InstanceSourceInstance) string { return v.Name }).(pulumi.StringOutput) +} + +// **Required** - Name of the project in which the source instance exists. +func (o InstanceSourceInstanceOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v InstanceSourceInstance) string { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - Name of the snapshot of the source instance +func (o InstanceSourceInstanceOutput) Snapshot() pulumi.StringPtrOutput { + return o.ApplyT(func(v InstanceSourceInstance) *string { return v.Snapshot }).(pulumi.StringPtrOutput) +} + +type InstanceSourceInstancePtrOutput struct{ *pulumi.OutputState } + +func (InstanceSourceInstancePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InstanceSourceInstance)(nil)).Elem() +} + +func (o InstanceSourceInstancePtrOutput) ToInstanceSourceInstancePtrOutput() InstanceSourceInstancePtrOutput { + return o +} + +func (o InstanceSourceInstancePtrOutput) ToInstanceSourceInstancePtrOutputWithContext(ctx context.Context) InstanceSourceInstancePtrOutput { + return o +} + +func (o InstanceSourceInstancePtrOutput) Elem() InstanceSourceInstanceOutput { + return o.ApplyT(func(v *InstanceSourceInstance) InstanceSourceInstance { + if v != nil { + return *v + } + var ret InstanceSourceInstance + return ret + }).(InstanceSourceInstanceOutput) +} + +// **Required** - Name of the source instance. +func (o InstanceSourceInstancePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InstanceSourceInstance) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// **Required** - Name of the project in which the source instance exists. +func (o InstanceSourceInstancePtrOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InstanceSourceInstance) *string { + if v == nil { + return nil + } + return &v.Project + }).(pulumi.StringPtrOutput) +} + +// *Optional* - Name of the snapshot of the source instance +func (o InstanceSourceInstancePtrOutput) Snapshot() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InstanceSourceInstance) *string { + if v == nil { + return nil + } + return v.Snapshot + }).(pulumi.StringPtrOutput) +} + +type InstanceWaitFor struct { + // *Optional* - Delay time that should be waited for when type is `delay`, e.g. `30s`. + Delay *string `pulumi:"delay"` + // *Optional* - Network interface that should be waited for when type is `ipv4` or `ipv6`. + Nic *string `pulumi:"nic"` + // **Required** - Type for what should be waited for. Can be `agent`, `delay`, `ipv4`, `ipv6` or `ready`. + Type string `pulumi:"type"` +} + +// InstanceWaitForInput is an input type that accepts InstanceWaitForArgs and InstanceWaitForOutput values. +// You can construct a concrete instance of `InstanceWaitForInput` via: +// +// InstanceWaitForArgs{...} +type InstanceWaitForInput interface { + pulumi.Input + + ToInstanceWaitForOutput() InstanceWaitForOutput + ToInstanceWaitForOutputWithContext(context.Context) InstanceWaitForOutput +} + +type InstanceWaitForArgs struct { + // *Optional* - Delay time that should be waited for when type is `delay`, e.g. `30s`. + Delay pulumi.StringPtrInput `pulumi:"delay"` + // *Optional* - Network interface that should be waited for when type is `ipv4` or `ipv6`. + Nic pulumi.StringPtrInput `pulumi:"nic"` + // **Required** - Type for what should be waited for. Can be `agent`, `delay`, `ipv4`, `ipv6` or `ready`. + Type pulumi.StringInput `pulumi:"type"` +} + +func (InstanceWaitForArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceWaitFor)(nil)).Elem() +} + +func (i InstanceWaitForArgs) ToInstanceWaitForOutput() InstanceWaitForOutput { + return i.ToInstanceWaitForOutputWithContext(context.Background()) +} + +func (i InstanceWaitForArgs) ToInstanceWaitForOutputWithContext(ctx context.Context) InstanceWaitForOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceWaitForOutput) +} + +// InstanceWaitForArrayInput is an input type that accepts InstanceWaitForArray and InstanceWaitForArrayOutput values. +// You can construct a concrete instance of `InstanceWaitForArrayInput` via: +// +// InstanceWaitForArray{ InstanceWaitForArgs{...} } +type InstanceWaitForArrayInput interface { + pulumi.Input + + ToInstanceWaitForArrayOutput() InstanceWaitForArrayOutput + ToInstanceWaitForArrayOutputWithContext(context.Context) InstanceWaitForArrayOutput +} + +type InstanceWaitForArray []InstanceWaitForInput + +func (InstanceWaitForArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]InstanceWaitFor)(nil)).Elem() +} + +func (i InstanceWaitForArray) ToInstanceWaitForArrayOutput() InstanceWaitForArrayOutput { + return i.ToInstanceWaitForArrayOutputWithContext(context.Background()) +} + +func (i InstanceWaitForArray) ToInstanceWaitForArrayOutputWithContext(ctx context.Context) InstanceWaitForArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceWaitForArrayOutput) +} + +type InstanceWaitForOutput struct{ *pulumi.OutputState } + +func (InstanceWaitForOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InstanceWaitFor)(nil)).Elem() +} + +func (o InstanceWaitForOutput) ToInstanceWaitForOutput() InstanceWaitForOutput { + return o +} + +func (o InstanceWaitForOutput) ToInstanceWaitForOutputWithContext(ctx context.Context) InstanceWaitForOutput { + return o +} + +// *Optional* - Delay time that should be waited for when type is `delay`, e.g. `30s`. +func (o InstanceWaitForOutput) Delay() pulumi.StringPtrOutput { + return o.ApplyT(func(v InstanceWaitFor) *string { return v.Delay }).(pulumi.StringPtrOutput) +} + +// *Optional* - Network interface that should be waited for when type is `ipv4` or `ipv6`. +func (o InstanceWaitForOutput) Nic() pulumi.StringPtrOutput { + return o.ApplyT(func(v InstanceWaitFor) *string { return v.Nic }).(pulumi.StringPtrOutput) +} + +// **Required** - Type for what should be waited for. Can be `agent`, `delay`, `ipv4`, `ipv6` or `ready`. +func (o InstanceWaitForOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v InstanceWaitFor) string { return v.Type }).(pulumi.StringOutput) +} + +type InstanceWaitForArrayOutput struct{ *pulumi.OutputState } + +func (InstanceWaitForArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]InstanceWaitFor)(nil)).Elem() +} + +func (o InstanceWaitForArrayOutput) ToInstanceWaitForArrayOutput() InstanceWaitForArrayOutput { + return o +} + +func (o InstanceWaitForArrayOutput) ToInstanceWaitForArrayOutputWithContext(ctx context.Context) InstanceWaitForArrayOutput { + return o +} + +func (o InstanceWaitForArrayOutput) Index(i pulumi.IntInput) InstanceWaitForOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) InstanceWaitFor { + return vs[0].([]InstanceWaitFor)[vs[1].(int)] + }).(InstanceWaitForOutput) +} + +type NetworkAclEgress struct { + // **Required** - Action to take for matching traffic , must be one of allow, allow-stateless, drop, reject + Action string `pulumi:"action"` + // *Optional* - Description of the network ACL rule. + Description *string `pulumi:"description"` + // *Optional* - Comma-separated list of CIDR or IP ranges, destination subject name selectors (for egress rules), or empty for any + Destination *string `pulumi:"destination"` + // *Optional* - If protocol is `udp` or tcp, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any + DestinationPort *string `pulumi:"destinationPort"` + // *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP code number, or empty for any + IcmpCode *string `pulumi:"icmpCode"` + // *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP type number, or empty for any + IcmpType *string `pulumi:"icmpType"` + // *Optional* - If protocol is `udp` or `tcp`, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any + Protocol *string `pulumi:"protocol"` + // *Optional* - Comma-separated list of CIDR or IP ranges, source subject name selectors (for ingress rules), or empty for any + Source *string `pulumi:"source"` + // *Optional* - State of the rule (enabled, disabled or logged), defaulting to enabled if not specified + State string `pulumi:"state"` +} + +// NetworkAclEgressInput is an input type that accepts NetworkAclEgressArgs and NetworkAclEgressOutput values. +// You can construct a concrete instance of `NetworkAclEgressInput` via: +// +// NetworkAclEgressArgs{...} +type NetworkAclEgressInput interface { + pulumi.Input + + ToNetworkAclEgressOutput() NetworkAclEgressOutput + ToNetworkAclEgressOutputWithContext(context.Context) NetworkAclEgressOutput +} + +type NetworkAclEgressArgs struct { + // **Required** - Action to take for matching traffic , must be one of allow, allow-stateless, drop, reject + Action pulumi.StringInput `pulumi:"action"` + // *Optional* - Description of the network ACL rule. + Description pulumi.StringPtrInput `pulumi:"description"` + // *Optional* - Comma-separated list of CIDR or IP ranges, destination subject name selectors (for egress rules), or empty for any + Destination pulumi.StringPtrInput `pulumi:"destination"` + // *Optional* - If protocol is `udp` or tcp, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any + DestinationPort pulumi.StringPtrInput `pulumi:"destinationPort"` + // *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP code number, or empty for any + IcmpCode pulumi.StringPtrInput `pulumi:"icmpCode"` + // *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP type number, or empty for any + IcmpType pulumi.StringPtrInput `pulumi:"icmpType"` + // *Optional* - If protocol is `udp` or `tcp`, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any + Protocol pulumi.StringPtrInput `pulumi:"protocol"` + // *Optional* - Comma-separated list of CIDR or IP ranges, source subject name selectors (for ingress rules), or empty for any + Source pulumi.StringPtrInput `pulumi:"source"` + // *Optional* - State of the rule (enabled, disabled or logged), defaulting to enabled if not specified + State pulumi.StringInput `pulumi:"state"` +} + +func (NetworkAclEgressArgs) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkAclEgress)(nil)).Elem() +} + +func (i NetworkAclEgressArgs) ToNetworkAclEgressOutput() NetworkAclEgressOutput { + return i.ToNetworkAclEgressOutputWithContext(context.Background()) +} + +func (i NetworkAclEgressArgs) ToNetworkAclEgressOutputWithContext(ctx context.Context) NetworkAclEgressOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkAclEgressOutput) +} + +// NetworkAclEgressArrayInput is an input type that accepts NetworkAclEgressArray and NetworkAclEgressArrayOutput values. +// You can construct a concrete instance of `NetworkAclEgressArrayInput` via: +// +// NetworkAclEgressArray{ NetworkAclEgressArgs{...} } +type NetworkAclEgressArrayInput interface { + pulumi.Input + + ToNetworkAclEgressArrayOutput() NetworkAclEgressArrayOutput + ToNetworkAclEgressArrayOutputWithContext(context.Context) NetworkAclEgressArrayOutput +} + +type NetworkAclEgressArray []NetworkAclEgressInput + +func (NetworkAclEgressArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkAclEgress)(nil)).Elem() +} + +func (i NetworkAclEgressArray) ToNetworkAclEgressArrayOutput() NetworkAclEgressArrayOutput { + return i.ToNetworkAclEgressArrayOutputWithContext(context.Background()) +} + +func (i NetworkAclEgressArray) ToNetworkAclEgressArrayOutputWithContext(ctx context.Context) NetworkAclEgressArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkAclEgressArrayOutput) +} + +type NetworkAclEgressOutput struct{ *pulumi.OutputState } + +func (NetworkAclEgressOutput) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkAclEgress)(nil)).Elem() +} + +func (o NetworkAclEgressOutput) ToNetworkAclEgressOutput() NetworkAclEgressOutput { + return o +} + +func (o NetworkAclEgressOutput) ToNetworkAclEgressOutputWithContext(ctx context.Context) NetworkAclEgressOutput { + return o +} + +// **Required** - Action to take for matching traffic , must be one of allow, allow-stateless, drop, reject +func (o NetworkAclEgressOutput) Action() pulumi.StringOutput { + return o.ApplyT(func(v NetworkAclEgress) string { return v.Action }).(pulumi.StringOutput) +} + +// *Optional* - Description of the network ACL rule. +func (o NetworkAclEgressOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclEgress) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// *Optional* - Comma-separated list of CIDR or IP ranges, destination subject name selectors (for egress rules), or empty for any +func (o NetworkAclEgressOutput) Destination() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclEgress) *string { return v.Destination }).(pulumi.StringPtrOutput) +} + +// *Optional* - If protocol is `udp` or tcp, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any +func (o NetworkAclEgressOutput) DestinationPort() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclEgress) *string { return v.DestinationPort }).(pulumi.StringPtrOutput) +} + +// *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP code number, or empty for any +func (o NetworkAclEgressOutput) IcmpCode() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclEgress) *string { return v.IcmpCode }).(pulumi.StringPtrOutput) +} + +// *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP type number, or empty for any +func (o NetworkAclEgressOutput) IcmpType() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclEgress) *string { return v.IcmpType }).(pulumi.StringPtrOutput) +} + +// *Optional* - If protocol is `udp` or `tcp`, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any +func (o NetworkAclEgressOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclEgress) *string { return v.Protocol }).(pulumi.StringPtrOutput) +} + +// *Optional* - Comma-separated list of CIDR or IP ranges, source subject name selectors (for ingress rules), or empty for any +func (o NetworkAclEgressOutput) Source() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclEgress) *string { return v.Source }).(pulumi.StringPtrOutput) +} + +// *Optional* - State of the rule (enabled, disabled or logged), defaulting to enabled if not specified +func (o NetworkAclEgressOutput) State() pulumi.StringOutput { + return o.ApplyT(func(v NetworkAclEgress) string { return v.State }).(pulumi.StringOutput) +} + +type NetworkAclEgressArrayOutput struct{ *pulumi.OutputState } + +func (NetworkAclEgressArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkAclEgress)(nil)).Elem() +} + +func (o NetworkAclEgressArrayOutput) ToNetworkAclEgressArrayOutput() NetworkAclEgressArrayOutput { + return o +} + +func (o NetworkAclEgressArrayOutput) ToNetworkAclEgressArrayOutputWithContext(ctx context.Context) NetworkAclEgressArrayOutput { + return o +} + +func (o NetworkAclEgressArrayOutput) Index(i pulumi.IntInput) NetworkAclEgressOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) NetworkAclEgress { + return vs[0].([]NetworkAclEgress)[vs[1].(int)] + }).(NetworkAclEgressOutput) +} + +type NetworkAclIngress struct { + // **Required** - Action to take for matching traffic , must be one of allow, allow-stateless, drop, reject + Action string `pulumi:"action"` + // *Optional* - Description of the network ACL rule. + Description *string `pulumi:"description"` + // *Optional* - Comma-separated list of CIDR or IP ranges, destination subject name selectors (for egress rules), or empty for any + Destination *string `pulumi:"destination"` + // *Optional* - If protocol is `udp` or tcp, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any + DestinationPort *string `pulumi:"destinationPort"` + // *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP code number, or empty for any + IcmpCode *string `pulumi:"icmpCode"` + // *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP type number, or empty for any + IcmpType *string `pulumi:"icmpType"` + // *Optional* - If protocol is `udp` or `tcp`, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any + Protocol *string `pulumi:"protocol"` + // *Optional* - Comma-separated list of CIDR or IP ranges, source subject name selectors (for ingress rules), or empty for any + Source *string `pulumi:"source"` + // *Optional* - State of the rule (enabled, disabled or logged), defaulting to enabled if not specified + State string `pulumi:"state"` +} + +// NetworkAclIngressInput is an input type that accepts NetworkAclIngressArgs and NetworkAclIngressOutput values. +// You can construct a concrete instance of `NetworkAclIngressInput` via: +// +// NetworkAclIngressArgs{...} +type NetworkAclIngressInput interface { + pulumi.Input + + ToNetworkAclIngressOutput() NetworkAclIngressOutput + ToNetworkAclIngressOutputWithContext(context.Context) NetworkAclIngressOutput +} + +type NetworkAclIngressArgs struct { + // **Required** - Action to take for matching traffic , must be one of allow, allow-stateless, drop, reject + Action pulumi.StringInput `pulumi:"action"` + // *Optional* - Description of the network ACL rule. + Description pulumi.StringPtrInput `pulumi:"description"` + // *Optional* - Comma-separated list of CIDR or IP ranges, destination subject name selectors (for egress rules), or empty for any + Destination pulumi.StringPtrInput `pulumi:"destination"` + // *Optional* - If protocol is `udp` or tcp, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any + DestinationPort pulumi.StringPtrInput `pulumi:"destinationPort"` + // *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP code number, or empty for any + IcmpCode pulumi.StringPtrInput `pulumi:"icmpCode"` + // *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP type number, or empty for any + IcmpType pulumi.StringPtrInput `pulumi:"icmpType"` + // *Optional* - If protocol is `udp` or `tcp`, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any + Protocol pulumi.StringPtrInput `pulumi:"protocol"` + // *Optional* - Comma-separated list of CIDR or IP ranges, source subject name selectors (for ingress rules), or empty for any + Source pulumi.StringPtrInput `pulumi:"source"` + // *Optional* - State of the rule (enabled, disabled or logged), defaulting to enabled if not specified + State pulumi.StringInput `pulumi:"state"` +} + +func (NetworkAclIngressArgs) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkAclIngress)(nil)).Elem() +} + +func (i NetworkAclIngressArgs) ToNetworkAclIngressOutput() NetworkAclIngressOutput { + return i.ToNetworkAclIngressOutputWithContext(context.Background()) +} + +func (i NetworkAclIngressArgs) ToNetworkAclIngressOutputWithContext(ctx context.Context) NetworkAclIngressOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkAclIngressOutput) +} + +// NetworkAclIngressArrayInput is an input type that accepts NetworkAclIngressArray and NetworkAclIngressArrayOutput values. +// You can construct a concrete instance of `NetworkAclIngressArrayInput` via: +// +// NetworkAclIngressArray{ NetworkAclIngressArgs{...} } +type NetworkAclIngressArrayInput interface { + pulumi.Input + + ToNetworkAclIngressArrayOutput() NetworkAclIngressArrayOutput + ToNetworkAclIngressArrayOutputWithContext(context.Context) NetworkAclIngressArrayOutput +} + +type NetworkAclIngressArray []NetworkAclIngressInput + +func (NetworkAclIngressArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkAclIngress)(nil)).Elem() +} + +func (i NetworkAclIngressArray) ToNetworkAclIngressArrayOutput() NetworkAclIngressArrayOutput { + return i.ToNetworkAclIngressArrayOutputWithContext(context.Background()) +} + +func (i NetworkAclIngressArray) ToNetworkAclIngressArrayOutputWithContext(ctx context.Context) NetworkAclIngressArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkAclIngressArrayOutput) +} + +type NetworkAclIngressOutput struct{ *pulumi.OutputState } + +func (NetworkAclIngressOutput) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkAclIngress)(nil)).Elem() +} + +func (o NetworkAclIngressOutput) ToNetworkAclIngressOutput() NetworkAclIngressOutput { + return o +} + +func (o NetworkAclIngressOutput) ToNetworkAclIngressOutputWithContext(ctx context.Context) NetworkAclIngressOutput { + return o +} + +// **Required** - Action to take for matching traffic , must be one of allow, allow-stateless, drop, reject +func (o NetworkAclIngressOutput) Action() pulumi.StringOutput { + return o.ApplyT(func(v NetworkAclIngress) string { return v.Action }).(pulumi.StringOutput) +} + +// *Optional* - Description of the network ACL rule. +func (o NetworkAclIngressOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclIngress) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// *Optional* - Comma-separated list of CIDR or IP ranges, destination subject name selectors (for egress rules), or empty for any +func (o NetworkAclIngressOutput) Destination() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclIngress) *string { return v.Destination }).(pulumi.StringPtrOutput) +} + +// *Optional* - If protocol is `udp` or tcp, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any +func (o NetworkAclIngressOutput) DestinationPort() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclIngress) *string { return v.DestinationPort }).(pulumi.StringPtrOutput) +} + +// *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP code number, or empty for any +func (o NetworkAclIngressOutput) IcmpCode() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclIngress) *string { return v.IcmpCode }).(pulumi.StringPtrOutput) +} + +// *Optional* - If protocol is `icmp4` or `icmp6`, then ICMP type number, or empty for any +func (o NetworkAclIngressOutput) IcmpType() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclIngress) *string { return v.IcmpType }).(pulumi.StringPtrOutput) +} + +// *Optional* - If protocol is `udp` or `tcp`, then a comma-separated list of ports or port ranges (start-end inclusive), or empty for any +func (o NetworkAclIngressOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclIngress) *string { return v.Protocol }).(pulumi.StringPtrOutput) +} + +// *Optional* - Comma-separated list of CIDR or IP ranges, source subject name selectors (for ingress rules), or empty for any +func (o NetworkAclIngressOutput) Source() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkAclIngress) *string { return v.Source }).(pulumi.StringPtrOutput) +} + +// *Optional* - State of the rule (enabled, disabled or logged), defaulting to enabled if not specified +func (o NetworkAclIngressOutput) State() pulumi.StringOutput { + return o.ApplyT(func(v NetworkAclIngress) string { return v.State }).(pulumi.StringOutput) +} + +type NetworkAclIngressArrayOutput struct{ *pulumi.OutputState } + +func (NetworkAclIngressArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkAclIngress)(nil)).Elem() +} + +func (o NetworkAclIngressArrayOutput) ToNetworkAclIngressArrayOutput() NetworkAclIngressArrayOutput { + return o +} + +func (o NetworkAclIngressArrayOutput) ToNetworkAclIngressArrayOutputWithContext(ctx context.Context) NetworkAclIngressArrayOutput { + return o +} + +func (o NetworkAclIngressArrayOutput) Index(i pulumi.IntInput) NetworkAclIngressOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) NetworkAclIngress { + return vs[0].([]NetworkAclIngress)[vs[1].(int)] + }).(NetworkAclIngressOutput) +} + +type NetworkForwardPort struct { + // *Optional* - Description of port(s) + Description *string `pulumi:"description"` + // **Required** - Listen port(s) (e.g. `80,90-100`) + ListenPort string `pulumi:"listenPort"` + // **Required** - Protocol for the port(s) (`tcp` or `udp`). If not set then `tcp` will be used. + Protocol *string `pulumi:"protocol"` + // **Required** - IP address to forward to + TargetAddress string `pulumi:"targetAddress"` + // *Optional* - T arget port(s) (e.g. `70,80-90` or `90`), same as listenPort if empty + TargetPort string `pulumi:"targetPort"` +} + +// NetworkForwardPortInput is an input type that accepts NetworkForwardPortArgs and NetworkForwardPortOutput values. +// You can construct a concrete instance of `NetworkForwardPortInput` via: +// +// NetworkForwardPortArgs{...} +type NetworkForwardPortInput interface { + pulumi.Input + + ToNetworkForwardPortOutput() NetworkForwardPortOutput + ToNetworkForwardPortOutputWithContext(context.Context) NetworkForwardPortOutput +} + +type NetworkForwardPortArgs struct { + // *Optional* - Description of port(s) + Description pulumi.StringPtrInput `pulumi:"description"` + // **Required** - Listen port(s) (e.g. `80,90-100`) + ListenPort pulumi.StringInput `pulumi:"listenPort"` + // **Required** - Protocol for the port(s) (`tcp` or `udp`). If not set then `tcp` will be used. + Protocol pulumi.StringPtrInput `pulumi:"protocol"` + // **Required** - IP address to forward to + TargetAddress pulumi.StringInput `pulumi:"targetAddress"` + // *Optional* - T arget port(s) (e.g. `70,80-90` or `90`), same as listenPort if empty + TargetPort pulumi.StringInput `pulumi:"targetPort"` +} + +func (NetworkForwardPortArgs) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkForwardPort)(nil)).Elem() +} + +func (i NetworkForwardPortArgs) ToNetworkForwardPortOutput() NetworkForwardPortOutput { + return i.ToNetworkForwardPortOutputWithContext(context.Background()) +} + +func (i NetworkForwardPortArgs) ToNetworkForwardPortOutputWithContext(ctx context.Context) NetworkForwardPortOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkForwardPortOutput) +} + +// NetworkForwardPortArrayInput is an input type that accepts NetworkForwardPortArray and NetworkForwardPortArrayOutput values. +// You can construct a concrete instance of `NetworkForwardPortArrayInput` via: +// +// NetworkForwardPortArray{ NetworkForwardPortArgs{...} } +type NetworkForwardPortArrayInput interface { + pulumi.Input + + ToNetworkForwardPortArrayOutput() NetworkForwardPortArrayOutput + ToNetworkForwardPortArrayOutputWithContext(context.Context) NetworkForwardPortArrayOutput +} + +type NetworkForwardPortArray []NetworkForwardPortInput + +func (NetworkForwardPortArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkForwardPort)(nil)).Elem() +} + +func (i NetworkForwardPortArray) ToNetworkForwardPortArrayOutput() NetworkForwardPortArrayOutput { + return i.ToNetworkForwardPortArrayOutputWithContext(context.Background()) +} + +func (i NetworkForwardPortArray) ToNetworkForwardPortArrayOutputWithContext(ctx context.Context) NetworkForwardPortArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkForwardPortArrayOutput) +} + +type NetworkForwardPortOutput struct{ *pulumi.OutputState } + +func (NetworkForwardPortOutput) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkForwardPort)(nil)).Elem() +} + +func (o NetworkForwardPortOutput) ToNetworkForwardPortOutput() NetworkForwardPortOutput { + return o +} + +func (o NetworkForwardPortOutput) ToNetworkForwardPortOutputWithContext(ctx context.Context) NetworkForwardPortOutput { + return o +} + +// *Optional* - Description of port(s) +func (o NetworkForwardPortOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkForwardPort) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// **Required** - Listen port(s) (e.g. `80,90-100`) +func (o NetworkForwardPortOutput) ListenPort() pulumi.StringOutput { + return o.ApplyT(func(v NetworkForwardPort) string { return v.ListenPort }).(pulumi.StringOutput) +} + +// **Required** - Protocol for the port(s) (`tcp` or `udp`). If not set then `tcp` will be used. +func (o NetworkForwardPortOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkForwardPort) *string { return v.Protocol }).(pulumi.StringPtrOutput) +} + +// **Required** - IP address to forward to +func (o NetworkForwardPortOutput) TargetAddress() pulumi.StringOutput { + return o.ApplyT(func(v NetworkForwardPort) string { return v.TargetAddress }).(pulumi.StringOutput) +} + +// *Optional* - T arget port(s) (e.g. `70,80-90` or `90`), same as listenPort if empty +func (o NetworkForwardPortOutput) TargetPort() pulumi.StringOutput { + return o.ApplyT(func(v NetworkForwardPort) string { return v.TargetPort }).(pulumi.StringOutput) +} + +type NetworkForwardPortArrayOutput struct{ *pulumi.OutputState } + +func (NetworkForwardPortArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkForwardPort)(nil)).Elem() +} + +func (o NetworkForwardPortArrayOutput) ToNetworkForwardPortArrayOutput() NetworkForwardPortArrayOutput { + return o +} + +func (o NetworkForwardPortArrayOutput) ToNetworkForwardPortArrayOutputWithContext(ctx context.Context) NetworkForwardPortArrayOutput { + return o +} + +func (o NetworkForwardPortArrayOutput) Index(i pulumi.IntInput) NetworkForwardPortOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) NetworkForwardPort { + return vs[0].([]NetworkForwardPort)[vs[1].(int)] + }).(NetworkForwardPortOutput) +} + +type NetworkLoadBalancerBackend struct { + // LB backend description + Description *string `pulumi:"description"` + // LB backend name + Name string `pulumi:"name"` + // LB backend target address + TargetAddress string `pulumi:"targetAddress"` + // LB backend target port + TargetPort *string `pulumi:"targetPort"` +} + +// NetworkLoadBalancerBackendInput is an input type that accepts NetworkLoadBalancerBackendArgs and NetworkLoadBalancerBackendOutput values. +// You can construct a concrete instance of `NetworkLoadBalancerBackendInput` via: +// +// NetworkLoadBalancerBackendArgs{...} +type NetworkLoadBalancerBackendInput interface { + pulumi.Input + + ToNetworkLoadBalancerBackendOutput() NetworkLoadBalancerBackendOutput + ToNetworkLoadBalancerBackendOutputWithContext(context.Context) NetworkLoadBalancerBackendOutput +} + +type NetworkLoadBalancerBackendArgs struct { + // LB backend description + Description pulumi.StringPtrInput `pulumi:"description"` + // LB backend name + Name pulumi.StringInput `pulumi:"name"` + // LB backend target address + TargetAddress pulumi.StringInput `pulumi:"targetAddress"` + // LB backend target port + TargetPort pulumi.StringPtrInput `pulumi:"targetPort"` +} + +func (NetworkLoadBalancerBackendArgs) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkLoadBalancerBackend)(nil)).Elem() +} + +func (i NetworkLoadBalancerBackendArgs) ToNetworkLoadBalancerBackendOutput() NetworkLoadBalancerBackendOutput { + return i.ToNetworkLoadBalancerBackendOutputWithContext(context.Background()) +} + +func (i NetworkLoadBalancerBackendArgs) ToNetworkLoadBalancerBackendOutputWithContext(ctx context.Context) NetworkLoadBalancerBackendOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkLoadBalancerBackendOutput) +} + +// NetworkLoadBalancerBackendArrayInput is an input type that accepts NetworkLoadBalancerBackendArray and NetworkLoadBalancerBackendArrayOutput values. +// You can construct a concrete instance of `NetworkLoadBalancerBackendArrayInput` via: +// +// NetworkLoadBalancerBackendArray{ NetworkLoadBalancerBackendArgs{...} } +type NetworkLoadBalancerBackendArrayInput interface { + pulumi.Input + + ToNetworkLoadBalancerBackendArrayOutput() NetworkLoadBalancerBackendArrayOutput + ToNetworkLoadBalancerBackendArrayOutputWithContext(context.Context) NetworkLoadBalancerBackendArrayOutput +} + +type NetworkLoadBalancerBackendArray []NetworkLoadBalancerBackendInput + +func (NetworkLoadBalancerBackendArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkLoadBalancerBackend)(nil)).Elem() +} + +func (i NetworkLoadBalancerBackendArray) ToNetworkLoadBalancerBackendArrayOutput() NetworkLoadBalancerBackendArrayOutput { + return i.ToNetworkLoadBalancerBackendArrayOutputWithContext(context.Background()) +} + +func (i NetworkLoadBalancerBackendArray) ToNetworkLoadBalancerBackendArrayOutputWithContext(ctx context.Context) NetworkLoadBalancerBackendArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkLoadBalancerBackendArrayOutput) +} + +type NetworkLoadBalancerBackendOutput struct{ *pulumi.OutputState } + +func (NetworkLoadBalancerBackendOutput) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkLoadBalancerBackend)(nil)).Elem() +} + +func (o NetworkLoadBalancerBackendOutput) ToNetworkLoadBalancerBackendOutput() NetworkLoadBalancerBackendOutput { + return o +} + +func (o NetworkLoadBalancerBackendOutput) ToNetworkLoadBalancerBackendOutputWithContext(ctx context.Context) NetworkLoadBalancerBackendOutput { + return o +} + +// LB backend description +func (o NetworkLoadBalancerBackendOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkLoadBalancerBackend) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// LB backend name +func (o NetworkLoadBalancerBackendOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v NetworkLoadBalancerBackend) string { return v.Name }).(pulumi.StringOutput) +} + +// LB backend target address +func (o NetworkLoadBalancerBackendOutput) TargetAddress() pulumi.StringOutput { + return o.ApplyT(func(v NetworkLoadBalancerBackend) string { return v.TargetAddress }).(pulumi.StringOutput) +} + +// LB backend target port +func (o NetworkLoadBalancerBackendOutput) TargetPort() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkLoadBalancerBackend) *string { return v.TargetPort }).(pulumi.StringPtrOutput) +} + +type NetworkLoadBalancerBackendArrayOutput struct{ *pulumi.OutputState } + +func (NetworkLoadBalancerBackendArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkLoadBalancerBackend)(nil)).Elem() +} + +func (o NetworkLoadBalancerBackendArrayOutput) ToNetworkLoadBalancerBackendArrayOutput() NetworkLoadBalancerBackendArrayOutput { + return o +} + +func (o NetworkLoadBalancerBackendArrayOutput) ToNetworkLoadBalancerBackendArrayOutputWithContext(ctx context.Context) NetworkLoadBalancerBackendArrayOutput { + return o +} + +func (o NetworkLoadBalancerBackendArrayOutput) Index(i pulumi.IntInput) NetworkLoadBalancerBackendOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) NetworkLoadBalancerBackend { + return vs[0].([]NetworkLoadBalancerBackend)[vs[1].(int)] + }).(NetworkLoadBalancerBackendOutput) +} + +type NetworkLoadBalancerPort struct { + // Port description + Description *string `pulumi:"description"` + // Port to listen to + ListenPort string `pulumi:"listenPort"` + // Port protocol + Protocol *string `pulumi:"protocol"` + // List of target LB backends + TargetBackends []string `pulumi:"targetBackends"` +} + +// NetworkLoadBalancerPortInput is an input type that accepts NetworkLoadBalancerPortArgs and NetworkLoadBalancerPortOutput values. +// You can construct a concrete instance of `NetworkLoadBalancerPortInput` via: +// +// NetworkLoadBalancerPortArgs{...} +type NetworkLoadBalancerPortInput interface { + pulumi.Input + + ToNetworkLoadBalancerPortOutput() NetworkLoadBalancerPortOutput + ToNetworkLoadBalancerPortOutputWithContext(context.Context) NetworkLoadBalancerPortOutput +} + +type NetworkLoadBalancerPortArgs struct { + // Port description + Description pulumi.StringPtrInput `pulumi:"description"` + // Port to listen to + ListenPort pulumi.StringInput `pulumi:"listenPort"` + // Port protocol + Protocol pulumi.StringPtrInput `pulumi:"protocol"` + // List of target LB backends + TargetBackends pulumi.StringArrayInput `pulumi:"targetBackends"` +} + +func (NetworkLoadBalancerPortArgs) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkLoadBalancerPort)(nil)).Elem() +} + +func (i NetworkLoadBalancerPortArgs) ToNetworkLoadBalancerPortOutput() NetworkLoadBalancerPortOutput { + return i.ToNetworkLoadBalancerPortOutputWithContext(context.Background()) +} + +func (i NetworkLoadBalancerPortArgs) ToNetworkLoadBalancerPortOutputWithContext(ctx context.Context) NetworkLoadBalancerPortOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkLoadBalancerPortOutput) +} + +// NetworkLoadBalancerPortArrayInput is an input type that accepts NetworkLoadBalancerPortArray and NetworkLoadBalancerPortArrayOutput values. +// You can construct a concrete instance of `NetworkLoadBalancerPortArrayInput` via: +// +// NetworkLoadBalancerPortArray{ NetworkLoadBalancerPortArgs{...} } +type NetworkLoadBalancerPortArrayInput interface { + pulumi.Input + + ToNetworkLoadBalancerPortArrayOutput() NetworkLoadBalancerPortArrayOutput + ToNetworkLoadBalancerPortArrayOutputWithContext(context.Context) NetworkLoadBalancerPortArrayOutput +} + +type NetworkLoadBalancerPortArray []NetworkLoadBalancerPortInput + +func (NetworkLoadBalancerPortArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkLoadBalancerPort)(nil)).Elem() +} + +func (i NetworkLoadBalancerPortArray) ToNetworkLoadBalancerPortArrayOutput() NetworkLoadBalancerPortArrayOutput { + return i.ToNetworkLoadBalancerPortArrayOutputWithContext(context.Background()) +} + +func (i NetworkLoadBalancerPortArray) ToNetworkLoadBalancerPortArrayOutputWithContext(ctx context.Context) NetworkLoadBalancerPortArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkLoadBalancerPortArrayOutput) +} + +type NetworkLoadBalancerPortOutput struct{ *pulumi.OutputState } + +func (NetworkLoadBalancerPortOutput) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkLoadBalancerPort)(nil)).Elem() +} + +func (o NetworkLoadBalancerPortOutput) ToNetworkLoadBalancerPortOutput() NetworkLoadBalancerPortOutput { + return o +} + +func (o NetworkLoadBalancerPortOutput) ToNetworkLoadBalancerPortOutputWithContext(ctx context.Context) NetworkLoadBalancerPortOutput { + return o +} + +// Port description +func (o NetworkLoadBalancerPortOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkLoadBalancerPort) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// Port to listen to +func (o NetworkLoadBalancerPortOutput) ListenPort() pulumi.StringOutput { + return o.ApplyT(func(v NetworkLoadBalancerPort) string { return v.ListenPort }).(pulumi.StringOutput) +} + +// Port protocol +func (o NetworkLoadBalancerPortOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkLoadBalancerPort) *string { return v.Protocol }).(pulumi.StringPtrOutput) +} + +// List of target LB backends +func (o NetworkLoadBalancerPortOutput) TargetBackends() pulumi.StringArrayOutput { + return o.ApplyT(func(v NetworkLoadBalancerPort) []string { return v.TargetBackends }).(pulumi.StringArrayOutput) +} + +type NetworkLoadBalancerPortArrayOutput struct{ *pulumi.OutputState } + +func (NetworkLoadBalancerPortArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkLoadBalancerPort)(nil)).Elem() +} + +func (o NetworkLoadBalancerPortArrayOutput) ToNetworkLoadBalancerPortArrayOutput() NetworkLoadBalancerPortArrayOutput { + return o +} + +func (o NetworkLoadBalancerPortArrayOutput) ToNetworkLoadBalancerPortArrayOutputWithContext(ctx context.Context) NetworkLoadBalancerPortArrayOutput { + return o +} + +func (o NetworkLoadBalancerPortArrayOutput) Index(i pulumi.IntInput) NetworkLoadBalancerPortOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) NetworkLoadBalancerPort { + return vs[0].([]NetworkLoadBalancerPort)[vs[1].(int)] + }).(NetworkLoadBalancerPortOutput) +} + +type NetworkZoneRecordEntry struct { + // *Optional* - Entry time to live (TTL). + Ttl *int `pulumi:"ttl"` + // **Required** - Entry type. Valid values are DNS record type, e.g. `A`, `AAAA`, `CNAME`, `TXT`, etc. + Type string `pulumi:"type"` + // **Required** - Entry value. + Value string `pulumi:"value"` +} + +// NetworkZoneRecordEntryInput is an input type that accepts NetworkZoneRecordEntryArgs and NetworkZoneRecordEntryOutput values. +// You can construct a concrete instance of `NetworkZoneRecordEntryInput` via: +// +// NetworkZoneRecordEntryArgs{...} +type NetworkZoneRecordEntryInput interface { + pulumi.Input + + ToNetworkZoneRecordEntryOutput() NetworkZoneRecordEntryOutput + ToNetworkZoneRecordEntryOutputWithContext(context.Context) NetworkZoneRecordEntryOutput +} + +type NetworkZoneRecordEntryArgs struct { + // *Optional* - Entry time to live (TTL). + Ttl pulumi.IntPtrInput `pulumi:"ttl"` + // **Required** - Entry type. Valid values are DNS record type, e.g. `A`, `AAAA`, `CNAME`, `TXT`, etc. + Type pulumi.StringInput `pulumi:"type"` + // **Required** - Entry value. + Value pulumi.StringInput `pulumi:"value"` +} + +func (NetworkZoneRecordEntryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkZoneRecordEntry)(nil)).Elem() +} + +func (i NetworkZoneRecordEntryArgs) ToNetworkZoneRecordEntryOutput() NetworkZoneRecordEntryOutput { + return i.ToNetworkZoneRecordEntryOutputWithContext(context.Background()) +} + +func (i NetworkZoneRecordEntryArgs) ToNetworkZoneRecordEntryOutputWithContext(ctx context.Context) NetworkZoneRecordEntryOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkZoneRecordEntryOutput) +} + +// NetworkZoneRecordEntryArrayInput is an input type that accepts NetworkZoneRecordEntryArray and NetworkZoneRecordEntryArrayOutput values. +// You can construct a concrete instance of `NetworkZoneRecordEntryArrayInput` via: +// +// NetworkZoneRecordEntryArray{ NetworkZoneRecordEntryArgs{...} } +type NetworkZoneRecordEntryArrayInput interface { + pulumi.Input + + ToNetworkZoneRecordEntryArrayOutput() NetworkZoneRecordEntryArrayOutput + ToNetworkZoneRecordEntryArrayOutputWithContext(context.Context) NetworkZoneRecordEntryArrayOutput +} + +type NetworkZoneRecordEntryArray []NetworkZoneRecordEntryInput + +func (NetworkZoneRecordEntryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkZoneRecordEntry)(nil)).Elem() +} + +func (i NetworkZoneRecordEntryArray) ToNetworkZoneRecordEntryArrayOutput() NetworkZoneRecordEntryArrayOutput { + return i.ToNetworkZoneRecordEntryArrayOutputWithContext(context.Background()) +} + +func (i NetworkZoneRecordEntryArray) ToNetworkZoneRecordEntryArrayOutputWithContext(ctx context.Context) NetworkZoneRecordEntryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkZoneRecordEntryArrayOutput) +} + +type NetworkZoneRecordEntryOutput struct{ *pulumi.OutputState } + +func (NetworkZoneRecordEntryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkZoneRecordEntry)(nil)).Elem() +} + +func (o NetworkZoneRecordEntryOutput) ToNetworkZoneRecordEntryOutput() NetworkZoneRecordEntryOutput { + return o +} + +func (o NetworkZoneRecordEntryOutput) ToNetworkZoneRecordEntryOutputWithContext(ctx context.Context) NetworkZoneRecordEntryOutput { + return o +} + +// *Optional* - Entry time to live (TTL). +func (o NetworkZoneRecordEntryOutput) Ttl() pulumi.IntPtrOutput { + return o.ApplyT(func(v NetworkZoneRecordEntry) *int { return v.Ttl }).(pulumi.IntPtrOutput) +} + +// **Required** - Entry type. Valid values are DNS record type, e.g. `A`, `AAAA`, `CNAME`, `TXT`, etc. +func (o NetworkZoneRecordEntryOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v NetworkZoneRecordEntry) string { return v.Type }).(pulumi.StringOutput) +} + +// **Required** - Entry value. +func (o NetworkZoneRecordEntryOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v NetworkZoneRecordEntry) string { return v.Value }).(pulumi.StringOutput) +} + +type NetworkZoneRecordEntryArrayOutput struct{ *pulumi.OutputState } + +func (NetworkZoneRecordEntryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkZoneRecordEntry)(nil)).Elem() +} + +func (o NetworkZoneRecordEntryArrayOutput) ToNetworkZoneRecordEntryArrayOutput() NetworkZoneRecordEntryArrayOutput { + return o +} + +func (o NetworkZoneRecordEntryArrayOutput) ToNetworkZoneRecordEntryArrayOutputWithContext(ctx context.Context) NetworkZoneRecordEntryArrayOutput { + return o +} + +func (o NetworkZoneRecordEntryArrayOutput) Index(i pulumi.IntInput) NetworkZoneRecordEntryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) NetworkZoneRecordEntry { + return vs[0].([]NetworkZoneRecordEntry)[vs[1].(int)] + }).(NetworkZoneRecordEntryOutput) +} + +type ProfileDevice struct { + // **Required** - Name of the device. + Name string `pulumi:"name"` + // **Required** - Map of key/value pairs of + // [device properties](https://linuxcontainers.org/incus/docs/main/reference/devices/). + Properties map[string]string `pulumi:"properties"` + // **Required** - Type of the device Must be one of none, disk, nic, + // unix-char, unix-block, usb, gpu, infiniband, proxy, unix-hotplug, tpm, pci. + Type string `pulumi:"type"` +} + +// ProfileDeviceInput is an input type that accepts ProfileDeviceArgs and ProfileDeviceOutput values. +// You can construct a concrete instance of `ProfileDeviceInput` via: +// +// ProfileDeviceArgs{...} +type ProfileDeviceInput interface { + pulumi.Input + + ToProfileDeviceOutput() ProfileDeviceOutput + ToProfileDeviceOutputWithContext(context.Context) ProfileDeviceOutput +} + +type ProfileDeviceArgs struct { + // **Required** - Name of the device. + Name pulumi.StringInput `pulumi:"name"` + // **Required** - Map of key/value pairs of + // [device properties](https://linuxcontainers.org/incus/docs/main/reference/devices/). + Properties pulumi.StringMapInput `pulumi:"properties"` + // **Required** - Type of the device Must be one of none, disk, nic, + // unix-char, unix-block, usb, gpu, infiniband, proxy, unix-hotplug, tpm, pci. + Type pulumi.StringInput `pulumi:"type"` +} + +func (ProfileDeviceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ProfileDevice)(nil)).Elem() +} + +func (i ProfileDeviceArgs) ToProfileDeviceOutput() ProfileDeviceOutput { + return i.ToProfileDeviceOutputWithContext(context.Background()) +} + +func (i ProfileDeviceArgs) ToProfileDeviceOutputWithContext(ctx context.Context) ProfileDeviceOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProfileDeviceOutput) +} + +// ProfileDeviceArrayInput is an input type that accepts ProfileDeviceArray and ProfileDeviceArrayOutput values. +// You can construct a concrete instance of `ProfileDeviceArrayInput` via: +// +// ProfileDeviceArray{ ProfileDeviceArgs{...} } +type ProfileDeviceArrayInput interface { + pulumi.Input + + ToProfileDeviceArrayOutput() ProfileDeviceArrayOutput + ToProfileDeviceArrayOutputWithContext(context.Context) ProfileDeviceArrayOutput +} + +type ProfileDeviceArray []ProfileDeviceInput + +func (ProfileDeviceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ProfileDevice)(nil)).Elem() +} + +func (i ProfileDeviceArray) ToProfileDeviceArrayOutput() ProfileDeviceArrayOutput { + return i.ToProfileDeviceArrayOutputWithContext(context.Background()) +} + +func (i ProfileDeviceArray) ToProfileDeviceArrayOutputWithContext(ctx context.Context) ProfileDeviceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProfileDeviceArrayOutput) +} + +type ProfileDeviceOutput struct{ *pulumi.OutputState } + +func (ProfileDeviceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ProfileDevice)(nil)).Elem() +} + +func (o ProfileDeviceOutput) ToProfileDeviceOutput() ProfileDeviceOutput { + return o +} + +func (o ProfileDeviceOutput) ToProfileDeviceOutputWithContext(ctx context.Context) ProfileDeviceOutput { + return o +} + +// **Required** - Name of the device. +func (o ProfileDeviceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ProfileDevice) string { return v.Name }).(pulumi.StringOutput) +} + +// **Required** - Map of key/value pairs of +// [device properties](https://linuxcontainers.org/incus/docs/main/reference/devices/). +func (o ProfileDeviceOutput) Properties() pulumi.StringMapOutput { + return o.ApplyT(func(v ProfileDevice) map[string]string { return v.Properties }).(pulumi.StringMapOutput) +} + +// **Required** - Type of the device Must be one of none, disk, nic, +// unix-char, unix-block, usb, gpu, infiniband, proxy, unix-hotplug, tpm, pci. +func (o ProfileDeviceOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v ProfileDevice) string { return v.Type }).(pulumi.StringOutput) +} + +type ProfileDeviceArrayOutput struct{ *pulumi.OutputState } + +func (ProfileDeviceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ProfileDevice)(nil)).Elem() +} + +func (o ProfileDeviceArrayOutput) ToProfileDeviceArrayOutput() ProfileDeviceArrayOutput { + return o +} + +func (o ProfileDeviceArrayOutput) ToProfileDeviceArrayOutputWithContext(ctx context.Context) ProfileDeviceArrayOutput { + return o +} + +func (o ProfileDeviceArrayOutput) Index(i pulumi.IntInput) ProfileDeviceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ProfileDevice { + return vs[0].([]ProfileDevice)[vs[1].(int)] + }).(ProfileDeviceOutput) +} + +type ProviderRemote struct { + // The FQDN or IP where the Incus daemon can be contacted. (default = "" (read from lxc config)) + Address *string `pulumi:"address"` + // Set this remote as default. + Default *bool `pulumi:"default"` + // Name of the Incus remote. Required when incusScheme set to https, to enable locating server certificate. + Name string `pulumi:"name"` + // Port Incus Daemon API is listening on. (default = 8443) + Port *string `pulumi:"port"` + // Unix (unix) or HTTPs (https). (default = unix) + Scheme *string `pulumi:"scheme"` + // The trust token for the remote. + Token *string `pulumi:"token"` +} + +// ProviderRemoteInput is an input type that accepts ProviderRemoteArgs and ProviderRemoteOutput values. +// You can construct a concrete instance of `ProviderRemoteInput` via: +// +// ProviderRemoteArgs{...} +type ProviderRemoteInput interface { + pulumi.Input + + ToProviderRemoteOutput() ProviderRemoteOutput + ToProviderRemoteOutputWithContext(context.Context) ProviderRemoteOutput +} + +type ProviderRemoteArgs struct { + // The FQDN or IP where the Incus daemon can be contacted. (default = "" (read from lxc config)) + Address pulumi.StringPtrInput `pulumi:"address"` + // Set this remote as default. + Default pulumi.BoolPtrInput `pulumi:"default"` + // Name of the Incus remote. Required when incusScheme set to https, to enable locating server certificate. + Name pulumi.StringInput `pulumi:"name"` + // Port Incus Daemon API is listening on. (default = 8443) + Port pulumi.StringPtrInput `pulumi:"port"` + // Unix (unix) or HTTPs (https). (default = unix) + Scheme pulumi.StringPtrInput `pulumi:"scheme"` + // The trust token for the remote. + Token pulumi.StringPtrInput `pulumi:"token"` +} + +func (ProviderRemoteArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderRemote)(nil)).Elem() +} + +func (i ProviderRemoteArgs) ToProviderRemoteOutput() ProviderRemoteOutput { + return i.ToProviderRemoteOutputWithContext(context.Background()) +} + +func (i ProviderRemoteArgs) ToProviderRemoteOutputWithContext(ctx context.Context) ProviderRemoteOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderRemoteOutput) +} + +// ProviderRemoteArrayInput is an input type that accepts ProviderRemoteArray and ProviderRemoteArrayOutput values. +// You can construct a concrete instance of `ProviderRemoteArrayInput` via: +// +// ProviderRemoteArray{ ProviderRemoteArgs{...} } +type ProviderRemoteArrayInput interface { + pulumi.Input + + ToProviderRemoteArrayOutput() ProviderRemoteArrayOutput + ToProviderRemoteArrayOutputWithContext(context.Context) ProviderRemoteArrayOutput +} + +type ProviderRemoteArray []ProviderRemoteInput + +func (ProviderRemoteArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ProviderRemote)(nil)).Elem() +} + +func (i ProviderRemoteArray) ToProviderRemoteArrayOutput() ProviderRemoteArrayOutput { + return i.ToProviderRemoteArrayOutputWithContext(context.Background()) +} + +func (i ProviderRemoteArray) ToProviderRemoteArrayOutputWithContext(ctx context.Context) ProviderRemoteArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderRemoteArrayOutput) +} + +type ProviderRemoteOutput struct{ *pulumi.OutputState } + +func (ProviderRemoteOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderRemote)(nil)).Elem() +} + +func (o ProviderRemoteOutput) ToProviderRemoteOutput() ProviderRemoteOutput { + return o +} + +func (o ProviderRemoteOutput) ToProviderRemoteOutputWithContext(ctx context.Context) ProviderRemoteOutput { + return o +} + +// The FQDN or IP where the Incus daemon can be contacted. (default = "" (read from lxc config)) +func (o ProviderRemoteOutput) Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderRemote) *string { return v.Address }).(pulumi.StringPtrOutput) +} + +// Set this remote as default. +func (o ProviderRemoteOutput) Default() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ProviderRemote) *bool { return v.Default }).(pulumi.BoolPtrOutput) +} + +// Name of the Incus remote. Required when incusScheme set to https, to enable locating server certificate. +func (o ProviderRemoteOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ProviderRemote) string { return v.Name }).(pulumi.StringOutput) +} + +// Port Incus Daemon API is listening on. (default = 8443) +func (o ProviderRemoteOutput) Port() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderRemote) *string { return v.Port }).(pulumi.StringPtrOutput) +} + +// Unix (unix) or HTTPs (https). (default = unix) +func (o ProviderRemoteOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderRemote) *string { return v.Scheme }).(pulumi.StringPtrOutput) +} + +// The trust token for the remote. +func (o ProviderRemoteOutput) Token() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderRemote) *string { return v.Token }).(pulumi.StringPtrOutput) +} + +type ProviderRemoteArrayOutput struct{ *pulumi.OutputState } + +func (ProviderRemoteArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ProviderRemote)(nil)).Elem() +} + +func (o ProviderRemoteArrayOutput) ToProviderRemoteArrayOutput() ProviderRemoteArrayOutput { + return o +} + +func (o ProviderRemoteArrayOutput) ToProviderRemoteArrayOutputWithContext(ctx context.Context) ProviderRemoteArrayOutput { + return o +} + +func (o ProviderRemoteArrayOutput) Index(i pulumi.IntInput) ProviderRemoteOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ProviderRemote { + return vs[0].([]ProviderRemote)[vs[1].(int)] + }).(ProviderRemoteOutput) +} + +type StorageVolumeSourceVolume struct { + // **Required** - Name of the storage volume. + Name string `pulumi:"name"` + // **Required** - The storage pool that will receive the copy of the volume copy. + Pool string `pulumi:"pool"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` +} + +// StorageVolumeSourceVolumeInput is an input type that accepts StorageVolumeSourceVolumeArgs and StorageVolumeSourceVolumeOutput values. +// You can construct a concrete instance of `StorageVolumeSourceVolumeInput` via: +// +// StorageVolumeSourceVolumeArgs{...} +type StorageVolumeSourceVolumeInput interface { + pulumi.Input + + ToStorageVolumeSourceVolumeOutput() StorageVolumeSourceVolumeOutput + ToStorageVolumeSourceVolumeOutputWithContext(context.Context) StorageVolumeSourceVolumeOutput +} + +type StorageVolumeSourceVolumeArgs struct { + // **Required** - Name of the storage volume. + Name pulumi.StringInput `pulumi:"name"` + // **Required** - The storage pool that will receive the copy of the volume copy. + Pool pulumi.StringInput `pulumi:"pool"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput `pulumi:"remote"` +} + +func (StorageVolumeSourceVolumeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*StorageVolumeSourceVolume)(nil)).Elem() +} + +func (i StorageVolumeSourceVolumeArgs) ToStorageVolumeSourceVolumeOutput() StorageVolumeSourceVolumeOutput { + return i.ToStorageVolumeSourceVolumeOutputWithContext(context.Background()) +} + +func (i StorageVolumeSourceVolumeArgs) ToStorageVolumeSourceVolumeOutputWithContext(ctx context.Context) StorageVolumeSourceVolumeOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageVolumeSourceVolumeOutput) +} + +func (i StorageVolumeSourceVolumeArgs) ToStorageVolumeSourceVolumePtrOutput() StorageVolumeSourceVolumePtrOutput { + return i.ToStorageVolumeSourceVolumePtrOutputWithContext(context.Background()) +} + +func (i StorageVolumeSourceVolumeArgs) ToStorageVolumeSourceVolumePtrOutputWithContext(ctx context.Context) StorageVolumeSourceVolumePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageVolumeSourceVolumeOutput).ToStorageVolumeSourceVolumePtrOutputWithContext(ctx) +} + +// StorageVolumeSourceVolumePtrInput is an input type that accepts StorageVolumeSourceVolumeArgs, StorageVolumeSourceVolumePtr and StorageVolumeSourceVolumePtrOutput values. +// You can construct a concrete instance of `StorageVolumeSourceVolumePtrInput` via: +// +// StorageVolumeSourceVolumeArgs{...} +// +// or: +// +// nil +type StorageVolumeSourceVolumePtrInput interface { + pulumi.Input + + ToStorageVolumeSourceVolumePtrOutput() StorageVolumeSourceVolumePtrOutput + ToStorageVolumeSourceVolumePtrOutputWithContext(context.Context) StorageVolumeSourceVolumePtrOutput +} + +type storageVolumeSourceVolumePtrType StorageVolumeSourceVolumeArgs + +func StorageVolumeSourceVolumePtr(v *StorageVolumeSourceVolumeArgs) StorageVolumeSourceVolumePtrInput { + return (*storageVolumeSourceVolumePtrType)(v) +} + +func (*storageVolumeSourceVolumePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**StorageVolumeSourceVolume)(nil)).Elem() +} + +func (i *storageVolumeSourceVolumePtrType) ToStorageVolumeSourceVolumePtrOutput() StorageVolumeSourceVolumePtrOutput { + return i.ToStorageVolumeSourceVolumePtrOutputWithContext(context.Background()) +} + +func (i *storageVolumeSourceVolumePtrType) ToStorageVolumeSourceVolumePtrOutputWithContext(ctx context.Context) StorageVolumeSourceVolumePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageVolumeSourceVolumePtrOutput) +} + +type StorageVolumeSourceVolumeOutput struct{ *pulumi.OutputState } + +func (StorageVolumeSourceVolumeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*StorageVolumeSourceVolume)(nil)).Elem() +} + +func (o StorageVolumeSourceVolumeOutput) ToStorageVolumeSourceVolumeOutput() StorageVolumeSourceVolumeOutput { + return o +} + +func (o StorageVolumeSourceVolumeOutput) ToStorageVolumeSourceVolumeOutputWithContext(ctx context.Context) StorageVolumeSourceVolumeOutput { + return o +} + +func (o StorageVolumeSourceVolumeOutput) ToStorageVolumeSourceVolumePtrOutput() StorageVolumeSourceVolumePtrOutput { + return o.ToStorageVolumeSourceVolumePtrOutputWithContext(context.Background()) +} + +func (o StorageVolumeSourceVolumeOutput) ToStorageVolumeSourceVolumePtrOutputWithContext(ctx context.Context) StorageVolumeSourceVolumePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v StorageVolumeSourceVolume) *StorageVolumeSourceVolume { + return &v + }).(StorageVolumeSourceVolumePtrOutput) +} + +// **Required** - Name of the storage volume. +func (o StorageVolumeSourceVolumeOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v StorageVolumeSourceVolume) string { return v.Name }).(pulumi.StringOutput) +} + +// **Required** - The storage pool that will receive the copy of the volume copy. +func (o StorageVolumeSourceVolumeOutput) Pool() pulumi.StringOutput { + return o.ApplyT(func(v StorageVolumeSourceVolume) string { return v.Pool }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o StorageVolumeSourceVolumeOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v StorageVolumeSourceVolume) *string { return v.Remote }).(pulumi.StringPtrOutput) +} + +type StorageVolumeSourceVolumePtrOutput struct{ *pulumi.OutputState } + +func (StorageVolumeSourceVolumePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**StorageVolumeSourceVolume)(nil)).Elem() +} + +func (o StorageVolumeSourceVolumePtrOutput) ToStorageVolumeSourceVolumePtrOutput() StorageVolumeSourceVolumePtrOutput { + return o +} + +func (o StorageVolumeSourceVolumePtrOutput) ToStorageVolumeSourceVolumePtrOutputWithContext(ctx context.Context) StorageVolumeSourceVolumePtrOutput { + return o +} + +func (o StorageVolumeSourceVolumePtrOutput) Elem() StorageVolumeSourceVolumeOutput { + return o.ApplyT(func(v *StorageVolumeSourceVolume) StorageVolumeSourceVolume { + if v != nil { + return *v + } + var ret StorageVolumeSourceVolume + return ret + }).(StorageVolumeSourceVolumeOutput) +} + +// **Required** - Name of the storage volume. +func (o StorageVolumeSourceVolumePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StorageVolumeSourceVolume) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// **Required** - The storage pool that will receive the copy of the volume copy. +func (o StorageVolumeSourceVolumePtrOutput) Pool() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StorageVolumeSourceVolume) *string { + if v == nil { + return nil + } + return &v.Pool + }).(pulumi.StringPtrOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o StorageVolumeSourceVolumePtrOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StorageVolumeSourceVolume) *string { + if v == nil { + return nil + } + return v.Remote + }).(pulumi.StringPtrOutput) +} + +type GetProfileDevice struct { + // **Required** - Name of the profile. + Name string `pulumi:"name"` + // Map of key/value pairs of + // [device properties](https://linuxcontainers.org/incus/docs/main/reference/devices/). + Properties map[string]string `pulumi:"properties"` + // Type of the device Must be one of none, disk, nic, + // unix-char, unix-block, usb, gpu, infiniband, proxy, unix-hotplug, tpm, pci. + Type string `pulumi:"type"` +} + +// GetProfileDeviceInput is an input type that accepts GetProfileDeviceArgs and GetProfileDeviceOutput values. +// You can construct a concrete instance of `GetProfileDeviceInput` via: +// +// GetProfileDeviceArgs{...} +type GetProfileDeviceInput interface { + pulumi.Input + + ToGetProfileDeviceOutput() GetProfileDeviceOutput + ToGetProfileDeviceOutputWithContext(context.Context) GetProfileDeviceOutput +} + +type GetProfileDeviceArgs struct { + // **Required** - Name of the profile. + Name pulumi.StringInput `pulumi:"name"` + // Map of key/value pairs of + // [device properties](https://linuxcontainers.org/incus/docs/main/reference/devices/). + Properties pulumi.StringMapInput `pulumi:"properties"` + // Type of the device Must be one of none, disk, nic, + // unix-char, unix-block, usb, gpu, infiniband, proxy, unix-hotplug, tpm, pci. + Type pulumi.StringInput `pulumi:"type"` +} + +func (GetProfileDeviceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetProfileDevice)(nil)).Elem() +} + +func (i GetProfileDeviceArgs) ToGetProfileDeviceOutput() GetProfileDeviceOutput { + return i.ToGetProfileDeviceOutputWithContext(context.Background()) +} + +func (i GetProfileDeviceArgs) ToGetProfileDeviceOutputWithContext(ctx context.Context) GetProfileDeviceOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetProfileDeviceOutput) +} + +// GetProfileDeviceArrayInput is an input type that accepts GetProfileDeviceArray and GetProfileDeviceArrayOutput values. +// You can construct a concrete instance of `GetProfileDeviceArrayInput` via: +// +// GetProfileDeviceArray{ GetProfileDeviceArgs{...} } +type GetProfileDeviceArrayInput interface { + pulumi.Input + + ToGetProfileDeviceArrayOutput() GetProfileDeviceArrayOutput + ToGetProfileDeviceArrayOutputWithContext(context.Context) GetProfileDeviceArrayOutput +} + +type GetProfileDeviceArray []GetProfileDeviceInput + +func (GetProfileDeviceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetProfileDevice)(nil)).Elem() +} + +func (i GetProfileDeviceArray) ToGetProfileDeviceArrayOutput() GetProfileDeviceArrayOutput { + return i.ToGetProfileDeviceArrayOutputWithContext(context.Background()) +} + +func (i GetProfileDeviceArray) ToGetProfileDeviceArrayOutputWithContext(ctx context.Context) GetProfileDeviceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetProfileDeviceArrayOutput) +} + +type GetProfileDeviceOutput struct{ *pulumi.OutputState } + +func (GetProfileDeviceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetProfileDevice)(nil)).Elem() +} + +func (o GetProfileDeviceOutput) ToGetProfileDeviceOutput() GetProfileDeviceOutput { + return o +} + +func (o GetProfileDeviceOutput) ToGetProfileDeviceOutputWithContext(ctx context.Context) GetProfileDeviceOutput { + return o +} + +// **Required** - Name of the profile. +func (o GetProfileDeviceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v GetProfileDevice) string { return v.Name }).(pulumi.StringOutput) +} + +// Map of key/value pairs of +// [device properties](https://linuxcontainers.org/incus/docs/main/reference/devices/). +func (o GetProfileDeviceOutput) Properties() pulumi.StringMapOutput { + return o.ApplyT(func(v GetProfileDevice) map[string]string { return v.Properties }).(pulumi.StringMapOutput) +} + +// Type of the device Must be one of none, disk, nic, +// unix-char, unix-block, usb, gpu, infiniband, proxy, unix-hotplug, tpm, pci. +func (o GetProfileDeviceOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v GetProfileDevice) string { return v.Type }).(pulumi.StringOutput) +} + +type GetProfileDeviceArrayOutput struct{ *pulumi.OutputState } + +func (GetProfileDeviceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetProfileDevice)(nil)).Elem() +} + +func (o GetProfileDeviceArrayOutput) ToGetProfileDeviceArrayOutput() GetProfileDeviceArrayOutput { + return o +} + +func (o GetProfileDeviceArrayOutput) ToGetProfileDeviceArrayOutputWithContext(ctx context.Context) GetProfileDeviceArrayOutput { + return o +} + +func (o GetProfileDeviceArrayOutput) Index(i pulumi.IntInput) GetProfileDeviceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetProfileDevice { + return vs[0].([]GetProfileDevice)[vs[1].(int)] + }).(GetProfileDeviceOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ImageSourceFileInput)(nil)).Elem(), ImageSourceFileArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ImageSourceFilePtrInput)(nil)).Elem(), ImageSourceFileArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ImageSourceImageInput)(nil)).Elem(), ImageSourceImageArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ImageSourceImagePtrInput)(nil)).Elem(), ImageSourceImageArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ImageSourceInstanceInput)(nil)).Elem(), ImageSourceInstanceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ImageSourceInstancePtrInput)(nil)).Elem(), ImageSourceInstanceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceDeviceInput)(nil)).Elem(), InstanceDeviceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceDeviceArrayInput)(nil)).Elem(), InstanceDeviceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceFileInput)(nil)).Elem(), InstanceFileArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceFileArrayInput)(nil)).Elem(), InstanceFileArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceSourceInstanceInput)(nil)).Elem(), InstanceSourceInstanceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceSourceInstancePtrInput)(nil)).Elem(), InstanceSourceInstanceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceWaitForInput)(nil)).Elem(), InstanceWaitForArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceWaitForArrayInput)(nil)).Elem(), InstanceWaitForArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkAclEgressInput)(nil)).Elem(), NetworkAclEgressArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkAclEgressArrayInput)(nil)).Elem(), NetworkAclEgressArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkAclIngressInput)(nil)).Elem(), NetworkAclIngressArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkAclIngressArrayInput)(nil)).Elem(), NetworkAclIngressArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkForwardPortInput)(nil)).Elem(), NetworkForwardPortArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkForwardPortArrayInput)(nil)).Elem(), NetworkForwardPortArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkLoadBalancerBackendInput)(nil)).Elem(), NetworkLoadBalancerBackendArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkLoadBalancerBackendArrayInput)(nil)).Elem(), NetworkLoadBalancerBackendArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkLoadBalancerPortInput)(nil)).Elem(), NetworkLoadBalancerPortArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkLoadBalancerPortArrayInput)(nil)).Elem(), NetworkLoadBalancerPortArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkZoneRecordEntryInput)(nil)).Elem(), NetworkZoneRecordEntryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkZoneRecordEntryArrayInput)(nil)).Elem(), NetworkZoneRecordEntryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProfileDeviceInput)(nil)).Elem(), ProfileDeviceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProfileDeviceArrayInput)(nil)).Elem(), ProfileDeviceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderRemoteInput)(nil)).Elem(), ProviderRemoteArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderRemoteArrayInput)(nil)).Elem(), ProviderRemoteArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*StorageVolumeSourceVolumeInput)(nil)).Elem(), StorageVolumeSourceVolumeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*StorageVolumeSourceVolumePtrInput)(nil)).Elem(), StorageVolumeSourceVolumeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetProfileDeviceInput)(nil)).Elem(), GetProfileDeviceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetProfileDeviceArrayInput)(nil)).Elem(), GetProfileDeviceArray{}) + pulumi.RegisterOutputType(ImageSourceFileOutput{}) + pulumi.RegisterOutputType(ImageSourceFilePtrOutput{}) + pulumi.RegisterOutputType(ImageSourceImageOutput{}) + pulumi.RegisterOutputType(ImageSourceImagePtrOutput{}) + pulumi.RegisterOutputType(ImageSourceInstanceOutput{}) + pulumi.RegisterOutputType(ImageSourceInstancePtrOutput{}) + pulumi.RegisterOutputType(InstanceDeviceOutput{}) + pulumi.RegisterOutputType(InstanceDeviceArrayOutput{}) + pulumi.RegisterOutputType(InstanceFileOutput{}) + pulumi.RegisterOutputType(InstanceFileArrayOutput{}) + pulumi.RegisterOutputType(InstanceSourceInstanceOutput{}) + pulumi.RegisterOutputType(InstanceSourceInstancePtrOutput{}) + pulumi.RegisterOutputType(InstanceWaitForOutput{}) + pulumi.RegisterOutputType(InstanceWaitForArrayOutput{}) + pulumi.RegisterOutputType(NetworkAclEgressOutput{}) + pulumi.RegisterOutputType(NetworkAclEgressArrayOutput{}) + pulumi.RegisterOutputType(NetworkAclIngressOutput{}) + pulumi.RegisterOutputType(NetworkAclIngressArrayOutput{}) + pulumi.RegisterOutputType(NetworkForwardPortOutput{}) + pulumi.RegisterOutputType(NetworkForwardPortArrayOutput{}) + pulumi.RegisterOutputType(NetworkLoadBalancerBackendOutput{}) + pulumi.RegisterOutputType(NetworkLoadBalancerBackendArrayOutput{}) + pulumi.RegisterOutputType(NetworkLoadBalancerPortOutput{}) + pulumi.RegisterOutputType(NetworkLoadBalancerPortArrayOutput{}) + pulumi.RegisterOutputType(NetworkZoneRecordEntryOutput{}) + pulumi.RegisterOutputType(NetworkZoneRecordEntryArrayOutput{}) + pulumi.RegisterOutputType(ProfileDeviceOutput{}) + pulumi.RegisterOutputType(ProfileDeviceArrayOutput{}) + pulumi.RegisterOutputType(ProviderRemoteOutput{}) + pulumi.RegisterOutputType(ProviderRemoteArrayOutput{}) + pulumi.RegisterOutputType(StorageVolumeSourceVolumeOutput{}) + pulumi.RegisterOutputType(StorageVolumeSourceVolumePtrOutput{}) + pulumi.RegisterOutputType(GetProfileDeviceOutput{}) + pulumi.RegisterOutputType(GetProfileDeviceArrayOutput{}) +} diff --git a/sdk/go/incus/storageBucket.go b/sdk/go/incus/storageBucket.go new file mode 100644 index 0000000..cc62fc5 --- /dev/null +++ b/sdk/go/incus/storageBucket.go @@ -0,0 +1,355 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type StorageBucket struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // [storage bucket config settings](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#configure-storage-bucket-settings). + // Config settings vary depending on the Storage Pool used. + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the storage bucket. + Description pulumi.StringOutput `pulumi:"description"` + // Name of the node where storage bucket was created. It could be useful with Incus in cluster mode. + Location pulumi.StringOutput `pulumi:"location"` + // **Required** - Name of the storage bucket. + Name pulumi.StringOutput `pulumi:"name"` + // **Required** - Name of storage pool to host the storage bucket. + Pool pulumi.StringOutput `pulumi:"pool"` + // *Optional* - Name of the project where the storage bucket will be stored. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // *Optional* - Path to a backup file from which the bucket will be created. + SourceFile pulumi.StringPtrOutput `pulumi:"sourceFile"` + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringOutput `pulumi:"target"` +} + +// NewStorageBucket registers a new resource with the given unique name, arguments, and options. +func NewStorageBucket(ctx *pulumi.Context, + name string, args *StorageBucketArgs, opts ...pulumi.ResourceOption) (*StorageBucket, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Pool == nil { + return nil, errors.New("invalid value for required argument 'Pool'") + } + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource StorageBucket + err := ctx.RegisterResource("incus:index/storageBucket:StorageBucket", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetStorageBucket gets an existing StorageBucket resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetStorageBucket(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *StorageBucketState, opts ...pulumi.ResourceOption) (*StorageBucket, error) { + var resource StorageBucket + err := ctx.ReadResource("incus:index/storageBucket:StorageBucket", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering StorageBucket resources. +type storageBucketState struct { + // *Optional* - Map of key/value pairs of + // [storage bucket config settings](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#configure-storage-bucket-settings). + // Config settings vary depending on the Storage Pool used. + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the storage bucket. + Description *string `pulumi:"description"` + // Name of the node where storage bucket was created. It could be useful with Incus in cluster mode. + Location *string `pulumi:"location"` + // **Required** - Name of the storage bucket. + Name *string `pulumi:"name"` + // **Required** - Name of storage pool to host the storage bucket. + Pool *string `pulumi:"pool"` + // *Optional* - Name of the project where the storage bucket will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Path to a backup file from which the bucket will be created. + SourceFile *string `pulumi:"sourceFile"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` +} + +type StorageBucketState struct { + // *Optional* - Map of key/value pairs of + // [storage bucket config settings](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#configure-storage-bucket-settings). + // Config settings vary depending on the Storage Pool used. + Config pulumi.StringMapInput + // *Optional* - Description of the storage bucket. + Description pulumi.StringPtrInput + // Name of the node where storage bucket was created. It could be useful with Incus in cluster mode. + Location pulumi.StringPtrInput + // **Required** - Name of the storage bucket. + Name pulumi.StringPtrInput + // **Required** - Name of storage pool to host the storage bucket. + Pool pulumi.StringPtrInput + // *Optional* - Name of the project where the storage bucket will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Path to a backup file from which the bucket will be created. + SourceFile pulumi.StringPtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput +} + +func (StorageBucketState) ElementType() reflect.Type { + return reflect.TypeOf((*storageBucketState)(nil)).Elem() +} + +type storageBucketArgs struct { + // *Optional* - Map of key/value pairs of + // [storage bucket config settings](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#configure-storage-bucket-settings). + // Config settings vary depending on the Storage Pool used. + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the storage bucket. + Description *string `pulumi:"description"` + // **Required** - Name of the storage bucket. + Name *string `pulumi:"name"` + // **Required** - Name of storage pool to host the storage bucket. + Pool string `pulumi:"pool"` + // *Optional* - Name of the project where the storage bucket will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Path to a backup file from which the bucket will be created. + SourceFile *string `pulumi:"sourceFile"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` +} + +// The set of arguments for constructing a StorageBucket resource. +type StorageBucketArgs struct { + // *Optional* - Map of key/value pairs of + // [storage bucket config settings](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#configure-storage-bucket-settings). + // Config settings vary depending on the Storage Pool used. + Config pulumi.StringMapInput + // *Optional* - Description of the storage bucket. + Description pulumi.StringPtrInput + // **Required** - Name of the storage bucket. + Name pulumi.StringPtrInput + // **Required** - Name of storage pool to host the storage bucket. + Pool pulumi.StringInput + // *Optional* - Name of the project where the storage bucket will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Path to a backup file from which the bucket will be created. + SourceFile pulumi.StringPtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput +} + +func (StorageBucketArgs) ElementType() reflect.Type { + return reflect.TypeOf((*storageBucketArgs)(nil)).Elem() +} + +type StorageBucketInput interface { + pulumi.Input + + ToStorageBucketOutput() StorageBucketOutput + ToStorageBucketOutputWithContext(ctx context.Context) StorageBucketOutput +} + +func (*StorageBucket) ElementType() reflect.Type { + return reflect.TypeOf((**StorageBucket)(nil)).Elem() +} + +func (i *StorageBucket) ToStorageBucketOutput() StorageBucketOutput { + return i.ToStorageBucketOutputWithContext(context.Background()) +} + +func (i *StorageBucket) ToStorageBucketOutputWithContext(ctx context.Context) StorageBucketOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageBucketOutput) +} + +// StorageBucketArrayInput is an input type that accepts StorageBucketArray and StorageBucketArrayOutput values. +// You can construct a concrete instance of `StorageBucketArrayInput` via: +// +// StorageBucketArray{ StorageBucketArgs{...} } +type StorageBucketArrayInput interface { + pulumi.Input + + ToStorageBucketArrayOutput() StorageBucketArrayOutput + ToStorageBucketArrayOutputWithContext(context.Context) StorageBucketArrayOutput +} + +type StorageBucketArray []StorageBucketInput + +func (StorageBucketArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*StorageBucket)(nil)).Elem() +} + +func (i StorageBucketArray) ToStorageBucketArrayOutput() StorageBucketArrayOutput { + return i.ToStorageBucketArrayOutputWithContext(context.Background()) +} + +func (i StorageBucketArray) ToStorageBucketArrayOutputWithContext(ctx context.Context) StorageBucketArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageBucketArrayOutput) +} + +// StorageBucketMapInput is an input type that accepts StorageBucketMap and StorageBucketMapOutput values. +// You can construct a concrete instance of `StorageBucketMapInput` via: +// +// StorageBucketMap{ "key": StorageBucketArgs{...} } +type StorageBucketMapInput interface { + pulumi.Input + + ToStorageBucketMapOutput() StorageBucketMapOutput + ToStorageBucketMapOutputWithContext(context.Context) StorageBucketMapOutput +} + +type StorageBucketMap map[string]StorageBucketInput + +func (StorageBucketMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*StorageBucket)(nil)).Elem() +} + +func (i StorageBucketMap) ToStorageBucketMapOutput() StorageBucketMapOutput { + return i.ToStorageBucketMapOutputWithContext(context.Background()) +} + +func (i StorageBucketMap) ToStorageBucketMapOutputWithContext(ctx context.Context) StorageBucketMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageBucketMapOutput) +} + +type StorageBucketOutput struct{ *pulumi.OutputState } + +func (StorageBucketOutput) ElementType() reflect.Type { + return reflect.TypeOf((**StorageBucket)(nil)).Elem() +} + +func (o StorageBucketOutput) ToStorageBucketOutput() StorageBucketOutput { + return o +} + +func (o StorageBucketOutput) ToStorageBucketOutputWithContext(ctx context.Context) StorageBucketOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// [storage bucket config settings](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#configure-storage-bucket-settings). +// Config settings vary depending on the Storage Pool used. +func (o StorageBucketOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *StorageBucket) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the storage bucket. +func (o StorageBucketOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucket) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// Name of the node where storage bucket was created. It could be useful with Incus in cluster mode. +func (o StorageBucketOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucket) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// **Required** - Name of the storage bucket. +func (o StorageBucketOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucket) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// **Required** - Name of storage pool to host the storage bucket. +func (o StorageBucketOutput) Pool() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucket) pulumi.StringOutput { return v.Pool }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the storage bucket will be stored. +func (o StorageBucketOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucket) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o StorageBucketOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StorageBucket) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// *Optional* - Path to a backup file from which the bucket will be created. +func (o StorageBucketOutput) SourceFile() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StorageBucket) pulumi.StringPtrOutput { return v.SourceFile }).(pulumi.StringPtrOutput) +} + +// *Optional* - Specify a target node in a cluster. +func (o StorageBucketOutput) Target() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucket) pulumi.StringOutput { return v.Target }).(pulumi.StringOutput) +} + +type StorageBucketArrayOutput struct{ *pulumi.OutputState } + +func (StorageBucketArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*StorageBucket)(nil)).Elem() +} + +func (o StorageBucketArrayOutput) ToStorageBucketArrayOutput() StorageBucketArrayOutput { + return o +} + +func (o StorageBucketArrayOutput) ToStorageBucketArrayOutputWithContext(ctx context.Context) StorageBucketArrayOutput { + return o +} + +func (o StorageBucketArrayOutput) Index(i pulumi.IntInput) StorageBucketOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *StorageBucket { + return vs[0].([]*StorageBucket)[vs[1].(int)] + }).(StorageBucketOutput) +} + +type StorageBucketMapOutput struct{ *pulumi.OutputState } + +func (StorageBucketMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*StorageBucket)(nil)).Elem() +} + +func (o StorageBucketMapOutput) ToStorageBucketMapOutput() StorageBucketMapOutput { + return o +} + +func (o StorageBucketMapOutput) ToStorageBucketMapOutputWithContext(ctx context.Context) StorageBucketMapOutput { + return o +} + +func (o StorageBucketMapOutput) MapIndex(k pulumi.StringInput) StorageBucketOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *StorageBucket { + return vs[0].(map[string]*StorageBucket)[vs[1].(string)] + }).(StorageBucketOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*StorageBucketInput)(nil)).Elem(), &StorageBucket{}) + pulumi.RegisterInputType(reflect.TypeOf((*StorageBucketArrayInput)(nil)).Elem(), StorageBucketArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*StorageBucketMapInput)(nil)).Elem(), StorageBucketMap{}) + pulumi.RegisterOutputType(StorageBucketOutput{}) + pulumi.RegisterOutputType(StorageBucketArrayOutput{}) + pulumi.RegisterOutputType(StorageBucketMapOutput{}) +} diff --git a/sdk/go/incus/storageBucketKey.go b/sdk/go/incus/storageBucketKey.go new file mode 100644 index 0000000..d2e0fad --- /dev/null +++ b/sdk/go/incus/storageBucketKey.go @@ -0,0 +1,353 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type StorageBucketKey struct { + pulumi.CustomResourceState + + // Access key of the storage bucket key. + AccessKey pulumi.StringOutput `pulumi:"accessKey"` + // *Optional* - Description of the storage bucket key. + Description pulumi.StringOutput `pulumi:"description"` + // **Required** - Name of the storage bucket key. + Name pulumi.StringOutput `pulumi:"name"` + // **Required** - Name of storage pool to host the storage bucket key. + Pool pulumi.StringOutput `pulumi:"pool"` + // *Optional* - Name of the project where the storage bucket key will be stored. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // *Optional* - Name of the role that controls the access rights for the + // key. If not specified, the default role is used, as described in the [official documentation](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#manage-storage-bucket-keys). + Role pulumi.StringOutput `pulumi:"role"` + // Secret key of the storage bucket key. + SecretKey pulumi.StringOutput `pulumi:"secretKey"` + // **Required** - Name of the storage bucket. + StorageBucket pulumi.StringOutput `pulumi:"storageBucket"` +} + +// NewStorageBucketKey registers a new resource with the given unique name, arguments, and options. +func NewStorageBucketKey(ctx *pulumi.Context, + name string, args *StorageBucketKeyArgs, opts ...pulumi.ResourceOption) (*StorageBucketKey, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Pool == nil { + return nil, errors.New("invalid value for required argument 'Pool'") + } + if args.StorageBucket == nil { + return nil, errors.New("invalid value for required argument 'StorageBucket'") + } + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "accessKey", + "secretKey", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource StorageBucketKey + err := ctx.RegisterResource("incus:index/storageBucketKey:StorageBucketKey", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetStorageBucketKey gets an existing StorageBucketKey resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetStorageBucketKey(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *StorageBucketKeyState, opts ...pulumi.ResourceOption) (*StorageBucketKey, error) { + var resource StorageBucketKey + err := ctx.ReadResource("incus:index/storageBucketKey:StorageBucketKey", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering StorageBucketKey resources. +type storageBucketKeyState struct { + // Access key of the storage bucket key. + AccessKey *string `pulumi:"accessKey"` + // *Optional* - Description of the storage bucket key. + Description *string `pulumi:"description"` + // **Required** - Name of the storage bucket key. + Name *string `pulumi:"name"` + // **Required** - Name of storage pool to host the storage bucket key. + Pool *string `pulumi:"pool"` + // *Optional* - Name of the project where the storage bucket key will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Name of the role that controls the access rights for the + // key. If not specified, the default role is used, as described in the [official documentation](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#manage-storage-bucket-keys). + Role *string `pulumi:"role"` + // Secret key of the storage bucket key. + SecretKey *string `pulumi:"secretKey"` + // **Required** - Name of the storage bucket. + StorageBucket *string `pulumi:"storageBucket"` +} + +type StorageBucketKeyState struct { + // Access key of the storage bucket key. + AccessKey pulumi.StringPtrInput + // *Optional* - Description of the storage bucket key. + Description pulumi.StringPtrInput + // **Required** - Name of the storage bucket key. + Name pulumi.StringPtrInput + // **Required** - Name of storage pool to host the storage bucket key. + Pool pulumi.StringPtrInput + // *Optional* - Name of the project where the storage bucket key will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Name of the role that controls the access rights for the + // key. If not specified, the default role is used, as described in the [official documentation](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#manage-storage-bucket-keys). + Role pulumi.StringPtrInput + // Secret key of the storage bucket key. + SecretKey pulumi.StringPtrInput + // **Required** - Name of the storage bucket. + StorageBucket pulumi.StringPtrInput +} + +func (StorageBucketKeyState) ElementType() reflect.Type { + return reflect.TypeOf((*storageBucketKeyState)(nil)).Elem() +} + +type storageBucketKeyArgs struct { + // *Optional* - Description of the storage bucket key. + Description *string `pulumi:"description"` + // **Required** - Name of the storage bucket key. + Name *string `pulumi:"name"` + // **Required** - Name of storage pool to host the storage bucket key. + Pool string `pulumi:"pool"` + // *Optional* - Name of the project where the storage bucket key will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Name of the role that controls the access rights for the + // key. If not specified, the default role is used, as described in the [official documentation](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#manage-storage-bucket-keys). + Role *string `pulumi:"role"` + // **Required** - Name of the storage bucket. + StorageBucket string `pulumi:"storageBucket"` +} + +// The set of arguments for constructing a StorageBucketKey resource. +type StorageBucketKeyArgs struct { + // *Optional* - Description of the storage bucket key. + Description pulumi.StringPtrInput + // **Required** - Name of the storage bucket key. + Name pulumi.StringPtrInput + // **Required** - Name of storage pool to host the storage bucket key. + Pool pulumi.StringInput + // *Optional* - Name of the project where the storage bucket key will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Name of the role that controls the access rights for the + // key. If not specified, the default role is used, as described in the [official documentation](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#manage-storage-bucket-keys). + Role pulumi.StringPtrInput + // **Required** - Name of the storage bucket. + StorageBucket pulumi.StringInput +} + +func (StorageBucketKeyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*storageBucketKeyArgs)(nil)).Elem() +} + +type StorageBucketKeyInput interface { + pulumi.Input + + ToStorageBucketKeyOutput() StorageBucketKeyOutput + ToStorageBucketKeyOutputWithContext(ctx context.Context) StorageBucketKeyOutput +} + +func (*StorageBucketKey) ElementType() reflect.Type { + return reflect.TypeOf((**StorageBucketKey)(nil)).Elem() +} + +func (i *StorageBucketKey) ToStorageBucketKeyOutput() StorageBucketKeyOutput { + return i.ToStorageBucketKeyOutputWithContext(context.Background()) +} + +func (i *StorageBucketKey) ToStorageBucketKeyOutputWithContext(ctx context.Context) StorageBucketKeyOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageBucketKeyOutput) +} + +// StorageBucketKeyArrayInput is an input type that accepts StorageBucketKeyArray and StorageBucketKeyArrayOutput values. +// You can construct a concrete instance of `StorageBucketKeyArrayInput` via: +// +// StorageBucketKeyArray{ StorageBucketKeyArgs{...} } +type StorageBucketKeyArrayInput interface { + pulumi.Input + + ToStorageBucketKeyArrayOutput() StorageBucketKeyArrayOutput + ToStorageBucketKeyArrayOutputWithContext(context.Context) StorageBucketKeyArrayOutput +} + +type StorageBucketKeyArray []StorageBucketKeyInput + +func (StorageBucketKeyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*StorageBucketKey)(nil)).Elem() +} + +func (i StorageBucketKeyArray) ToStorageBucketKeyArrayOutput() StorageBucketKeyArrayOutput { + return i.ToStorageBucketKeyArrayOutputWithContext(context.Background()) +} + +func (i StorageBucketKeyArray) ToStorageBucketKeyArrayOutputWithContext(ctx context.Context) StorageBucketKeyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageBucketKeyArrayOutput) +} + +// StorageBucketKeyMapInput is an input type that accepts StorageBucketKeyMap and StorageBucketKeyMapOutput values. +// You can construct a concrete instance of `StorageBucketKeyMapInput` via: +// +// StorageBucketKeyMap{ "key": StorageBucketKeyArgs{...} } +type StorageBucketKeyMapInput interface { + pulumi.Input + + ToStorageBucketKeyMapOutput() StorageBucketKeyMapOutput + ToStorageBucketKeyMapOutputWithContext(context.Context) StorageBucketKeyMapOutput +} + +type StorageBucketKeyMap map[string]StorageBucketKeyInput + +func (StorageBucketKeyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*StorageBucketKey)(nil)).Elem() +} + +func (i StorageBucketKeyMap) ToStorageBucketKeyMapOutput() StorageBucketKeyMapOutput { + return i.ToStorageBucketKeyMapOutputWithContext(context.Background()) +} + +func (i StorageBucketKeyMap) ToStorageBucketKeyMapOutputWithContext(ctx context.Context) StorageBucketKeyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageBucketKeyMapOutput) +} + +type StorageBucketKeyOutput struct{ *pulumi.OutputState } + +func (StorageBucketKeyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**StorageBucketKey)(nil)).Elem() +} + +func (o StorageBucketKeyOutput) ToStorageBucketKeyOutput() StorageBucketKeyOutput { + return o +} + +func (o StorageBucketKeyOutput) ToStorageBucketKeyOutputWithContext(ctx context.Context) StorageBucketKeyOutput { + return o +} + +// Access key of the storage bucket key. +func (o StorageBucketKeyOutput) AccessKey() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucketKey) pulumi.StringOutput { return v.AccessKey }).(pulumi.StringOutput) +} + +// *Optional* - Description of the storage bucket key. +func (o StorageBucketKeyOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucketKey) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// **Required** - Name of the storage bucket key. +func (o StorageBucketKeyOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucketKey) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// **Required** - Name of storage pool to host the storage bucket key. +func (o StorageBucketKeyOutput) Pool() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucketKey) pulumi.StringOutput { return v.Pool }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the storage bucket key will be stored. +func (o StorageBucketKeyOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucketKey) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o StorageBucketKeyOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StorageBucketKey) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// *Optional* - Name of the role that controls the access rights for the +// key. If not specified, the default role is used, as described in the [official documentation](https://linuxcontainers.org/incus/docs/main/howto/storage_buckets/#manage-storage-bucket-keys). +func (o StorageBucketKeyOutput) Role() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucketKey) pulumi.StringOutput { return v.Role }).(pulumi.StringOutput) +} + +// Secret key of the storage bucket key. +func (o StorageBucketKeyOutput) SecretKey() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucketKey) pulumi.StringOutput { return v.SecretKey }).(pulumi.StringOutput) +} + +// **Required** - Name of the storage bucket. +func (o StorageBucketKeyOutput) StorageBucket() pulumi.StringOutput { + return o.ApplyT(func(v *StorageBucketKey) pulumi.StringOutput { return v.StorageBucket }).(pulumi.StringOutput) +} + +type StorageBucketKeyArrayOutput struct{ *pulumi.OutputState } + +func (StorageBucketKeyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*StorageBucketKey)(nil)).Elem() +} + +func (o StorageBucketKeyArrayOutput) ToStorageBucketKeyArrayOutput() StorageBucketKeyArrayOutput { + return o +} + +func (o StorageBucketKeyArrayOutput) ToStorageBucketKeyArrayOutputWithContext(ctx context.Context) StorageBucketKeyArrayOutput { + return o +} + +func (o StorageBucketKeyArrayOutput) Index(i pulumi.IntInput) StorageBucketKeyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *StorageBucketKey { + return vs[0].([]*StorageBucketKey)[vs[1].(int)] + }).(StorageBucketKeyOutput) +} + +type StorageBucketKeyMapOutput struct{ *pulumi.OutputState } + +func (StorageBucketKeyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*StorageBucketKey)(nil)).Elem() +} + +func (o StorageBucketKeyMapOutput) ToStorageBucketKeyMapOutput() StorageBucketKeyMapOutput { + return o +} + +func (o StorageBucketKeyMapOutput) ToStorageBucketKeyMapOutputWithContext(ctx context.Context) StorageBucketKeyMapOutput { + return o +} + +func (o StorageBucketKeyMapOutput) MapIndex(k pulumi.StringInput) StorageBucketKeyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *StorageBucketKey { + return vs[0].(map[string]*StorageBucketKey)[vs[1].(string)] + }).(StorageBucketKeyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*StorageBucketKeyInput)(nil)).Elem(), &StorageBucketKey{}) + pulumi.RegisterInputType(reflect.TypeOf((*StorageBucketKeyArrayInput)(nil)).Elem(), StorageBucketKeyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*StorageBucketKeyMapInput)(nil)).Elem(), StorageBucketKeyMap{}) + pulumi.RegisterOutputType(StorageBucketKeyOutput{}) + pulumi.RegisterOutputType(StorageBucketKeyArrayOutput{}) + pulumi.RegisterOutputType(StorageBucketKeyMapOutput{}) +} diff --git a/sdk/go/incus/storagePool.go b/sdk/go/incus/storagePool.go new file mode 100644 index 0000000..d216fc5 --- /dev/null +++ b/sdk/go/incus/storagePool.go @@ -0,0 +1,329 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type StoragePool struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // [storage pool config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary from driver to driver. + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Description of the storage pool. + Description pulumi.StringOutput `pulumi:"description"` + // **Required** - Storage Pool driver. Must be one of `dir`, `zfs`, `lvm`, `btrfs`, `ceph`, `cephfs`, or `cephobject`. + Driver pulumi.StringOutput `pulumi:"driver"` + // **Required** - Name of the storage pool. + Name pulumi.StringOutput `pulumi:"name"` + // *Optional* - Name of the project where the storage pool will be stored. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrOutput `pulumi:"target"` +} + +// NewStoragePool registers a new resource with the given unique name, arguments, and options. +func NewStoragePool(ctx *pulumi.Context, + name string, args *StoragePoolArgs, opts ...pulumi.ResourceOption) (*StoragePool, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Driver == nil { + return nil, errors.New("invalid value for required argument 'Driver'") + } + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource StoragePool + err := ctx.RegisterResource("incus:index/storagePool:StoragePool", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetStoragePool gets an existing StoragePool resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetStoragePool(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *StoragePoolState, opts ...pulumi.ResourceOption) (*StoragePool, error) { + var resource StoragePool + err := ctx.ReadResource("incus:index/storagePool:StoragePool", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering StoragePool resources. +type storagePoolState struct { + // *Optional* - Map of key/value pairs of + // [storage pool config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary from driver to driver. + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the storage pool. + Description *string `pulumi:"description"` + // **Required** - Storage Pool driver. Must be one of `dir`, `zfs`, `lvm`, `btrfs`, `ceph`, `cephfs`, or `cephobject`. + Driver *string `pulumi:"driver"` + // **Required** - Name of the storage pool. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the storage pool will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` +} + +type StoragePoolState struct { + // *Optional* - Map of key/value pairs of + // [storage pool config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary from driver to driver. + Config pulumi.StringMapInput + // *Optional* - Description of the storage pool. + Description pulumi.StringPtrInput + // **Required** - Storage Pool driver. Must be one of `dir`, `zfs`, `lvm`, `btrfs`, `ceph`, `cephfs`, or `cephobject`. + Driver pulumi.StringPtrInput + // **Required** - Name of the storage pool. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the storage pool will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput +} + +func (StoragePoolState) ElementType() reflect.Type { + return reflect.TypeOf((*storagePoolState)(nil)).Elem() +} + +type storagePoolArgs struct { + // *Optional* - Map of key/value pairs of + // [storage pool config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary from driver to driver. + Config map[string]string `pulumi:"config"` + // *Optional* - Description of the storage pool. + Description *string `pulumi:"description"` + // **Required** - Storage Pool driver. Must be one of `dir`, `zfs`, `lvm`, `btrfs`, `ceph`, `cephfs`, or `cephobject`. + Driver string `pulumi:"driver"` + // **Required** - Name of the storage pool. + Name *string `pulumi:"name"` + // *Optional* - Name of the project where the storage pool will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` +} + +// The set of arguments for constructing a StoragePool resource. +type StoragePoolArgs struct { + // *Optional* - Map of key/value pairs of + // [storage pool config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary from driver to driver. + Config pulumi.StringMapInput + // *Optional* - Description of the storage pool. + Description pulumi.StringPtrInput + // **Required** - Storage Pool driver. Must be one of `dir`, `zfs`, `lvm`, `btrfs`, `ceph`, `cephfs`, or `cephobject`. + Driver pulumi.StringInput + // **Required** - Name of the storage pool. + Name pulumi.StringPtrInput + // *Optional* - Name of the project where the storage pool will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput +} + +func (StoragePoolArgs) ElementType() reflect.Type { + return reflect.TypeOf((*storagePoolArgs)(nil)).Elem() +} + +type StoragePoolInput interface { + pulumi.Input + + ToStoragePoolOutput() StoragePoolOutput + ToStoragePoolOutputWithContext(ctx context.Context) StoragePoolOutput +} + +func (*StoragePool) ElementType() reflect.Type { + return reflect.TypeOf((**StoragePool)(nil)).Elem() +} + +func (i *StoragePool) ToStoragePoolOutput() StoragePoolOutput { + return i.ToStoragePoolOutputWithContext(context.Background()) +} + +func (i *StoragePool) ToStoragePoolOutputWithContext(ctx context.Context) StoragePoolOutput { + return pulumi.ToOutputWithContext(ctx, i).(StoragePoolOutput) +} + +// StoragePoolArrayInput is an input type that accepts StoragePoolArray and StoragePoolArrayOutput values. +// You can construct a concrete instance of `StoragePoolArrayInput` via: +// +// StoragePoolArray{ StoragePoolArgs{...} } +type StoragePoolArrayInput interface { + pulumi.Input + + ToStoragePoolArrayOutput() StoragePoolArrayOutput + ToStoragePoolArrayOutputWithContext(context.Context) StoragePoolArrayOutput +} + +type StoragePoolArray []StoragePoolInput + +func (StoragePoolArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*StoragePool)(nil)).Elem() +} + +func (i StoragePoolArray) ToStoragePoolArrayOutput() StoragePoolArrayOutput { + return i.ToStoragePoolArrayOutputWithContext(context.Background()) +} + +func (i StoragePoolArray) ToStoragePoolArrayOutputWithContext(ctx context.Context) StoragePoolArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(StoragePoolArrayOutput) +} + +// StoragePoolMapInput is an input type that accepts StoragePoolMap and StoragePoolMapOutput values. +// You can construct a concrete instance of `StoragePoolMapInput` via: +// +// StoragePoolMap{ "key": StoragePoolArgs{...} } +type StoragePoolMapInput interface { + pulumi.Input + + ToStoragePoolMapOutput() StoragePoolMapOutput + ToStoragePoolMapOutputWithContext(context.Context) StoragePoolMapOutput +} + +type StoragePoolMap map[string]StoragePoolInput + +func (StoragePoolMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*StoragePool)(nil)).Elem() +} + +func (i StoragePoolMap) ToStoragePoolMapOutput() StoragePoolMapOutput { + return i.ToStoragePoolMapOutputWithContext(context.Background()) +} + +func (i StoragePoolMap) ToStoragePoolMapOutputWithContext(ctx context.Context) StoragePoolMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(StoragePoolMapOutput) +} + +type StoragePoolOutput struct{ *pulumi.OutputState } + +func (StoragePoolOutput) ElementType() reflect.Type { + return reflect.TypeOf((**StoragePool)(nil)).Elem() +} + +func (o StoragePoolOutput) ToStoragePoolOutput() StoragePoolOutput { + return o +} + +func (o StoragePoolOutput) ToStoragePoolOutputWithContext(ctx context.Context) StoragePoolOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// [storage pool config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). +// Config settings vary from driver to driver. +func (o StoragePoolOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *StoragePool) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Description of the storage pool. +func (o StoragePoolOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *StoragePool) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// **Required** - Storage Pool driver. Must be one of `dir`, `zfs`, `lvm`, `btrfs`, `ceph`, `cephfs`, or `cephobject`. +func (o StoragePoolOutput) Driver() pulumi.StringOutput { + return o.ApplyT(func(v *StoragePool) pulumi.StringOutput { return v.Driver }).(pulumi.StringOutput) +} + +// **Required** - Name of the storage pool. +func (o StoragePoolOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *StoragePool) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the storage pool will be stored. +func (o StoragePoolOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *StoragePool) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o StoragePoolOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StoragePool) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// *Optional* - Specify a target node in a cluster. +func (o StoragePoolOutput) Target() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StoragePool) pulumi.StringPtrOutput { return v.Target }).(pulumi.StringPtrOutput) +} + +type StoragePoolArrayOutput struct{ *pulumi.OutputState } + +func (StoragePoolArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*StoragePool)(nil)).Elem() +} + +func (o StoragePoolArrayOutput) ToStoragePoolArrayOutput() StoragePoolArrayOutput { + return o +} + +func (o StoragePoolArrayOutput) ToStoragePoolArrayOutputWithContext(ctx context.Context) StoragePoolArrayOutput { + return o +} + +func (o StoragePoolArrayOutput) Index(i pulumi.IntInput) StoragePoolOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *StoragePool { + return vs[0].([]*StoragePool)[vs[1].(int)] + }).(StoragePoolOutput) +} + +type StoragePoolMapOutput struct{ *pulumi.OutputState } + +func (StoragePoolMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*StoragePool)(nil)).Elem() +} + +func (o StoragePoolMapOutput) ToStoragePoolMapOutput() StoragePoolMapOutput { + return o +} + +func (o StoragePoolMapOutput) ToStoragePoolMapOutputWithContext(ctx context.Context) StoragePoolMapOutput { + return o +} + +func (o StoragePoolMapOutput) MapIndex(k pulumi.StringInput) StoragePoolOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *StoragePool { + return vs[0].(map[string]*StoragePool)[vs[1].(string)] + }).(StoragePoolOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*StoragePoolInput)(nil)).Elem(), &StoragePool{}) + pulumi.RegisterInputType(reflect.TypeOf((*StoragePoolArrayInput)(nil)).Elem(), StoragePoolArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*StoragePoolMapInput)(nil)).Elem(), StoragePoolMap{}) + pulumi.RegisterOutputType(StoragePoolOutput{}) + pulumi.RegisterOutputType(StoragePoolArrayOutput{}) + pulumi.RegisterOutputType(StoragePoolMapOutput{}) +} diff --git a/sdk/go/incus/storageVolume.go b/sdk/go/incus/storageVolume.go new file mode 100644 index 0000000..82be520 --- /dev/null +++ b/sdk/go/incus/storageVolume.go @@ -0,0 +1,406 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package incus + +import ( + "context" + "reflect" + + "errors" + "git.kalinow.ski/nimbus/pulumi-incus/sdk/go/incus/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type StorageVolume struct { + pulumi.CustomResourceState + + // *Optional* - Map of key/value pairs of + // [volume config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary depending on the Storage Pool used. + Config pulumi.StringMapOutput `pulumi:"config"` + // *Optional* - Volume content type (`filesystem` or `block`) + ContentType pulumi.StringOutput `pulumi:"contentType"` + // *Optional* - Description of the volume. + Description pulumi.StringOutput `pulumi:"description"` + // Name of the node where volume was created. It could be useful with Incus in cluster mode. + Location pulumi.StringOutput `pulumi:"location"` + // **Required** - Name of the storage volume. + Name pulumi.StringOutput `pulumi:"name"` + // **Required** - Name of storage pool to host the volume. + Pool pulumi.StringOutput `pulumi:"pool"` + // *Optional* - Name of the project where the volume will be stored. + Project pulumi.StringOutput `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrOutput `pulumi:"remote"` + // *Optional* - Path to a backup file from which the volume will be created. + SourceFile pulumi.StringPtrOutput `pulumi:"sourceFile"` + // *Optional* - The source volume from which the volume will be created. See reference below. + SourceVolume StorageVolumeSourceVolumePtrOutput `pulumi:"sourceVolume"` + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringOutput `pulumi:"target"` + // *Optional* - The "type" of volume. The default value is `custom`, + // which is the type to use for storage volumes attached to instances. + Type pulumi.StringOutput `pulumi:"type"` +} + +// NewStorageVolume registers a new resource with the given unique name, arguments, and options. +func NewStorageVolume(ctx *pulumi.Context, + name string, args *StorageVolumeArgs, opts ...pulumi.ResourceOption) (*StorageVolume, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Pool == nil { + return nil, errors.New("invalid value for required argument 'Pool'") + } + if args.Project == nil { + args.Project = pulumi.StringPtr("default") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource StorageVolume + err := ctx.RegisterResource("incus:index/storageVolume:StorageVolume", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetStorageVolume gets an existing StorageVolume resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetStorageVolume(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *StorageVolumeState, opts ...pulumi.ResourceOption) (*StorageVolume, error) { + var resource StorageVolume + err := ctx.ReadResource("incus:index/storageVolume:StorageVolume", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering StorageVolume resources. +type storageVolumeState struct { + // *Optional* - Map of key/value pairs of + // [volume config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary depending on the Storage Pool used. + Config map[string]string `pulumi:"config"` + // *Optional* - Volume content type (`filesystem` or `block`) + ContentType *string `pulumi:"contentType"` + // *Optional* - Description of the volume. + Description *string `pulumi:"description"` + // Name of the node where volume was created. It could be useful with Incus in cluster mode. + Location *string `pulumi:"location"` + // **Required** - Name of the storage volume. + Name *string `pulumi:"name"` + // **Required** - Name of storage pool to host the volume. + Pool *string `pulumi:"pool"` + // *Optional* - Name of the project where the volume will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Path to a backup file from which the volume will be created. + SourceFile *string `pulumi:"sourceFile"` + // *Optional* - The source volume from which the volume will be created. See reference below. + SourceVolume *StorageVolumeSourceVolume `pulumi:"sourceVolume"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` + // *Optional* - The "type" of volume. The default value is `custom`, + // which is the type to use for storage volumes attached to instances. + Type *string `pulumi:"type"` +} + +type StorageVolumeState struct { + // *Optional* - Map of key/value pairs of + // [volume config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary depending on the Storage Pool used. + Config pulumi.StringMapInput + // *Optional* - Volume content type (`filesystem` or `block`) + ContentType pulumi.StringPtrInput + // *Optional* - Description of the volume. + Description pulumi.StringPtrInput + // Name of the node where volume was created. It could be useful with Incus in cluster mode. + Location pulumi.StringPtrInput + // **Required** - Name of the storage volume. + Name pulumi.StringPtrInput + // **Required** - Name of storage pool to host the volume. + Pool pulumi.StringPtrInput + // *Optional* - Name of the project where the volume will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Path to a backup file from which the volume will be created. + SourceFile pulumi.StringPtrInput + // *Optional* - The source volume from which the volume will be created. See reference below. + SourceVolume StorageVolumeSourceVolumePtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput + // *Optional* - The "type" of volume. The default value is `custom`, + // which is the type to use for storage volumes attached to instances. + Type pulumi.StringPtrInput +} + +func (StorageVolumeState) ElementType() reflect.Type { + return reflect.TypeOf((*storageVolumeState)(nil)).Elem() +} + +type storageVolumeArgs struct { + // *Optional* - Map of key/value pairs of + // [volume config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary depending on the Storage Pool used. + Config map[string]string `pulumi:"config"` + // *Optional* - Volume content type (`filesystem` or `block`) + ContentType *string `pulumi:"contentType"` + // *Optional* - Description of the volume. + Description *string `pulumi:"description"` + // **Required** - Name of the storage volume. + Name *string `pulumi:"name"` + // **Required** - Name of storage pool to host the volume. + Pool string `pulumi:"pool"` + // *Optional* - Name of the project where the volume will be stored. + Project *string `pulumi:"project"` + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote *string `pulumi:"remote"` + // *Optional* - Path to a backup file from which the volume will be created. + SourceFile *string `pulumi:"sourceFile"` + // *Optional* - The source volume from which the volume will be created. See reference below. + SourceVolume *StorageVolumeSourceVolume `pulumi:"sourceVolume"` + // *Optional* - Specify a target node in a cluster. + Target *string `pulumi:"target"` + // *Optional* - The "type" of volume. The default value is `custom`, + // which is the type to use for storage volumes attached to instances. + Type *string `pulumi:"type"` +} + +// The set of arguments for constructing a StorageVolume resource. +type StorageVolumeArgs struct { + // *Optional* - Map of key/value pairs of + // [volume config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). + // Config settings vary depending on the Storage Pool used. + Config pulumi.StringMapInput + // *Optional* - Volume content type (`filesystem` or `block`) + ContentType pulumi.StringPtrInput + // *Optional* - Description of the volume. + Description pulumi.StringPtrInput + // **Required** - Name of the storage volume. + Name pulumi.StringPtrInput + // **Required** - Name of storage pool to host the volume. + Pool pulumi.StringInput + // *Optional* - Name of the project where the volume will be stored. + Project pulumi.StringPtrInput + // *Optional* - The remote in which the resource will be created. If + // not provided, the provider's default remote will be used. + Remote pulumi.StringPtrInput + // *Optional* - Path to a backup file from which the volume will be created. + SourceFile pulumi.StringPtrInput + // *Optional* - The source volume from which the volume will be created. See reference below. + SourceVolume StorageVolumeSourceVolumePtrInput + // *Optional* - Specify a target node in a cluster. + Target pulumi.StringPtrInput + // *Optional* - The "type" of volume. The default value is `custom`, + // which is the type to use for storage volumes attached to instances. + Type pulumi.StringPtrInput +} + +func (StorageVolumeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*storageVolumeArgs)(nil)).Elem() +} + +type StorageVolumeInput interface { + pulumi.Input + + ToStorageVolumeOutput() StorageVolumeOutput + ToStorageVolumeOutputWithContext(ctx context.Context) StorageVolumeOutput +} + +func (*StorageVolume) ElementType() reflect.Type { + return reflect.TypeOf((**StorageVolume)(nil)).Elem() +} + +func (i *StorageVolume) ToStorageVolumeOutput() StorageVolumeOutput { + return i.ToStorageVolumeOutputWithContext(context.Background()) +} + +func (i *StorageVolume) ToStorageVolumeOutputWithContext(ctx context.Context) StorageVolumeOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageVolumeOutput) +} + +// StorageVolumeArrayInput is an input type that accepts StorageVolumeArray and StorageVolumeArrayOutput values. +// You can construct a concrete instance of `StorageVolumeArrayInput` via: +// +// StorageVolumeArray{ StorageVolumeArgs{...} } +type StorageVolumeArrayInput interface { + pulumi.Input + + ToStorageVolumeArrayOutput() StorageVolumeArrayOutput + ToStorageVolumeArrayOutputWithContext(context.Context) StorageVolumeArrayOutput +} + +type StorageVolumeArray []StorageVolumeInput + +func (StorageVolumeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*StorageVolume)(nil)).Elem() +} + +func (i StorageVolumeArray) ToStorageVolumeArrayOutput() StorageVolumeArrayOutput { + return i.ToStorageVolumeArrayOutputWithContext(context.Background()) +} + +func (i StorageVolumeArray) ToStorageVolumeArrayOutputWithContext(ctx context.Context) StorageVolumeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageVolumeArrayOutput) +} + +// StorageVolumeMapInput is an input type that accepts StorageVolumeMap and StorageVolumeMapOutput values. +// You can construct a concrete instance of `StorageVolumeMapInput` via: +// +// StorageVolumeMap{ "key": StorageVolumeArgs{...} } +type StorageVolumeMapInput interface { + pulumi.Input + + ToStorageVolumeMapOutput() StorageVolumeMapOutput + ToStorageVolumeMapOutputWithContext(context.Context) StorageVolumeMapOutput +} + +type StorageVolumeMap map[string]StorageVolumeInput + +func (StorageVolumeMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*StorageVolume)(nil)).Elem() +} + +func (i StorageVolumeMap) ToStorageVolumeMapOutput() StorageVolumeMapOutput { + return i.ToStorageVolumeMapOutputWithContext(context.Background()) +} + +func (i StorageVolumeMap) ToStorageVolumeMapOutputWithContext(ctx context.Context) StorageVolumeMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(StorageVolumeMapOutput) +} + +type StorageVolumeOutput struct{ *pulumi.OutputState } + +func (StorageVolumeOutput) ElementType() reflect.Type { + return reflect.TypeOf((**StorageVolume)(nil)).Elem() +} + +func (o StorageVolumeOutput) ToStorageVolumeOutput() StorageVolumeOutput { + return o +} + +func (o StorageVolumeOutput) ToStorageVolumeOutputWithContext(ctx context.Context) StorageVolumeOutput { + return o +} + +// *Optional* - Map of key/value pairs of +// [volume config settings](https://linuxcontainers.org/incus/docs/main/reference/storage_drivers/). +// Config settings vary depending on the Storage Pool used. +func (o StorageVolumeOutput) Config() pulumi.StringMapOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringMapOutput { return v.Config }).(pulumi.StringMapOutput) +} + +// *Optional* - Volume content type (`filesystem` or `block`) +func (o StorageVolumeOutput) ContentType() pulumi.StringOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringOutput { return v.ContentType }).(pulumi.StringOutput) +} + +// *Optional* - Description of the volume. +func (o StorageVolumeOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// Name of the node where volume was created. It could be useful with Incus in cluster mode. +func (o StorageVolumeOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// **Required** - Name of the storage volume. +func (o StorageVolumeOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// **Required** - Name of storage pool to host the volume. +func (o StorageVolumeOutput) Pool() pulumi.StringOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringOutput { return v.Pool }).(pulumi.StringOutput) +} + +// *Optional* - Name of the project where the volume will be stored. +func (o StorageVolumeOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// *Optional* - The remote in which the resource will be created. If +// not provided, the provider's default remote will be used. +func (o StorageVolumeOutput) Remote() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringPtrOutput { return v.Remote }).(pulumi.StringPtrOutput) +} + +// *Optional* - Path to a backup file from which the volume will be created. +func (o StorageVolumeOutput) SourceFile() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringPtrOutput { return v.SourceFile }).(pulumi.StringPtrOutput) +} + +// *Optional* - The source volume from which the volume will be created. See reference below. +func (o StorageVolumeOutput) SourceVolume() StorageVolumeSourceVolumePtrOutput { + return o.ApplyT(func(v *StorageVolume) StorageVolumeSourceVolumePtrOutput { return v.SourceVolume }).(StorageVolumeSourceVolumePtrOutput) +} + +// *Optional* - Specify a target node in a cluster. +func (o StorageVolumeOutput) Target() pulumi.StringOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringOutput { return v.Target }).(pulumi.StringOutput) +} + +// *Optional* - The "type" of volume. The default value is `custom`, +// which is the type to use for storage volumes attached to instances. +func (o StorageVolumeOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v *StorageVolume) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput) +} + +type StorageVolumeArrayOutput struct{ *pulumi.OutputState } + +func (StorageVolumeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*StorageVolume)(nil)).Elem() +} + +func (o StorageVolumeArrayOutput) ToStorageVolumeArrayOutput() StorageVolumeArrayOutput { + return o +} + +func (o StorageVolumeArrayOutput) ToStorageVolumeArrayOutputWithContext(ctx context.Context) StorageVolumeArrayOutput { + return o +} + +func (o StorageVolumeArrayOutput) Index(i pulumi.IntInput) StorageVolumeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *StorageVolume { + return vs[0].([]*StorageVolume)[vs[1].(int)] + }).(StorageVolumeOutput) +} + +type StorageVolumeMapOutput struct{ *pulumi.OutputState } + +func (StorageVolumeMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*StorageVolume)(nil)).Elem() +} + +func (o StorageVolumeMapOutput) ToStorageVolumeMapOutput() StorageVolumeMapOutput { + return o +} + +func (o StorageVolumeMapOutput) ToStorageVolumeMapOutputWithContext(ctx context.Context) StorageVolumeMapOutput { + return o +} + +func (o StorageVolumeMapOutput) MapIndex(k pulumi.StringInput) StorageVolumeOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *StorageVolume { + return vs[0].(map[string]*StorageVolume)[vs[1].(string)] + }).(StorageVolumeOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*StorageVolumeInput)(nil)).Elem(), &StorageVolume{}) + pulumi.RegisterInputType(reflect.TypeOf((*StorageVolumeArrayInput)(nil)).Elem(), StorageVolumeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*StorageVolumeMapInput)(nil)).Elem(), StorageVolumeMap{}) + pulumi.RegisterOutputType(StorageVolumeOutput{}) + pulumi.RegisterOutputType(StorageVolumeArrayOutput{}) + pulumi.RegisterOutputType(StorageVolumeMapOutput{}) +}