Compare commits

..

109 Commits
2.2 ... 3.4.2

Author SHA1 Message Date
stSolo
9d1c8eeaa7 3.4.2 2023-02-10 17:29:09 +03:00
stSolo
8516e0419a 3.4.1 2023-02-08 17:28:20 +03:00
stSolo
e12afbe1ad 3.4.0 2023-01-26 11:32:11 +03:00
stSolo
c0c9dc8131 fix changelog file 2023-01-25 18:12:01 +03:00
stSolo
c3bc6ef5da fix changelog file 2023-01-25 17:06:56 +03:00
stSolo
4d865ae921 3.4.0 2023-01-24 17:50:38 +03:00
KasimBaybikov
a355247845 v3.3.1 2022-12-26 18:08:23 +03:00
KasimBaybikov
be86069155 version 3.3.0 2022-12-20 18:05:17 +03:00
stSolo
0adf28daf6 v3.2.2 2022-12-09 13:48:03 +03:00
stSolo
9402d6f291 v3.2.1 2022-11-15 17:19:59 +03:00
stSolo
cb7e573d26 v3.2.0 2022-10-31 16:36:02 +03:00
stSolo
6ef0ad2f93 v3.2.0 2022-10-31 15:45:54 +03:00
stSolo
31be0a0b54 v3.2.0 2022-10-31 14:06:22 +03:00
stSolo
71ddaa3345 Merge branch 'dev' into 'main' 2022-09-30 14:51:59 +03:00
Пётр Крутов
775a0b5adb Merge branch 'dev' into 'main'
v3.1.0

See merge request rudecs/terraform-provider-decort!45
2022-09-21 12:11:43 +00:00
Пётр Крутов
1a983e945b v3.1.0 2022-09-21 12:11:42 +00:00
Пётр Крутов
b152359706 Merge branch 'dev' into 'main'
Dev

See merge request rudecs/terraform-provider-decort!41
2022-09-09 12:31:06 +00:00
a844f6cc30 Dev 2022-09-09 12:31:05 +00:00
Пётр Крутов
8e6b5a9bab Merge branch 'dev' into 'main'
Dev

See merge request rudecs/terraform-provider-decort!39
2022-09-08 14:56:06 +00:00
Сергей Лескин
cd4695ee68 Dev 2022-09-08 14:56:05 +00:00
Пётр Крутов
5bd7958f09 Merge branch 'dev' into 'main'
Dev

See merge request rudecs/terraform-provider-decort!38
2022-09-08 12:20:13 +00:00
8fc9170c9c Dev 2022-09-08 12:20:12 +00:00
Пётр Крутов
294550f5ce Merge branch 'dev' into 'main'
Dev

See merge request rudecs/terraform-provider-decort!36
2022-09-01 13:44:09 +00:00
Пётр Крутов
ddc6640a32 Dev 2022-09-01 13:44:05 +00:00
kjubybot
4bc11c5f07 updated go version for releasing 2022-07-27 14:48:21 +03:00
kjubybot
2287177302 update goreleaser action version 2022-07-27 14:44:59 +03:00
kjubybot
6433bc2954 Merge branch 'dev' 2022-07-27 14:29:06 +03:00
kjubybot
965b6013a6 updated docs and changelog 2022-07-27 13:50:03 +03:00
kjubybot
8d530c45ea updated goreleaser config 2022-07-27 12:38:57 +03:00
kjubybot
bdcb1ab532 updated dependencies and go version 2022-07-27 12:28:34 +03:00
stSolo
818875976c Move vgpu from cloudapi to cloudbroker 2022-07-25 19:45:07 +03:00
Пётр Крутов
e9de5a2840 Merge branch '3.0.0/refactoring' into 'dev'
a lot of refactoring and fixes

See merge request rudecs/terraform-provider-decort!34
2022-07-21 12:22:18 +00:00
kjubybot
fae22aa484 a lot of refactoring and fixes 2022-07-21 13:38:52 +03:00
abd1a439eb Merge branch '3.0.0/kvmvm-create-error-handling' into 'dev'
added compute deletion on failed disk/network attachment

See merge request rudecs/terraform-provider-decort!33
2022-07-21 08:41:17 +00:00
kjubybot
4c4a007a58 added compute deletion on failed disk/network attachment 2022-07-21 11:23:46 +03:00
kjubybot
3275424089 added arm64 to goreleaser config 2022-07-20 17:39:20 +03:00
kjubybot
f06aa41b96 updated linter config 2022-07-20 17:37:09 +03:00
Administrator
1245dd17f2 Merge branch '3.0/harmonization' into 'dev'
Add files

See merge request rudecs/terraform-provider-decort!32
2022-07-20 14:30:55 +00:00
stSolo
28ceebecf8 Add files 2022-07-20 17:14:00 +03:00
Petr Krutov
2b7f3d45f3 Merge branch '3.0.0/boot-disk-patch' into 'dev'
fixed boot disk reading for computes without one

See merge request rudecs/terraform-provider-decort!31
2022-07-20 11:29:43 +03:00
kjubybot
0bdd7c3c32 fixed boot disk reading for computes without one 2022-07-20 11:28:00 +03:00
Petr Krutov
44ad5e4fe2 Merge branch 'dev-old' into 'main'
Dev old

See merge request rudecs/terraform-provider-decort!30
2022-07-15 18:23:59 +03:00
Petr Krutov
628ce3b75c Merge branch '2.4.1/fix_compute-boot-disk' into 'dev-old'
2.4.1/fix compute boot disk

See merge request rudecs/terraform-provider-decort!29
2022-07-15 18:23:11 +03:00
kjubybot
020845b48f fixed compute boot disk reading 2022-07-15 18:21:24 +03:00
stSolo
5b4c1f4324 Add patch for compute sep_id and pool 2022-07-08 15:47:09 +03:00
stSolo
fc32db30b6 Add patch for compute sep_id and pool 2022-07-08 15:35:43 +03:00
Stanislav Solovev
81443a3d02 Merge branch '3.0/admin-flag' into 'dev'
Add env flag DECORT_ADMIN_MODE

See merge request rudecs/terraform-provider-decort!28
2022-07-08 15:12:00 +03:00
stSolo
c422910bbe Add env flag DECORT_ADMIN_MODE 2022-07-08 15:08:52 +03:00
Stanislav Solovev
e45695e07f Merge branch '3.0/locations' into 'dev'
Add locations

See merge request rudecs/terraform-provider-decort!27
2022-07-07 18:49:43 +03:00
stSolo
48cada2cf3 Add locations 2022-07-07 18:46:39 +03:00
kjubybot
7cc359ec59 v2.4.0 2022-07-07 12:50:38 +03:00
Petr Krutov
a1d716d566 Merge branch 'dev-old' into 'main'
added pool and sep_id parameters to compute

See merge request rudecs/terraform-provider-decort!26
2022-07-07 12:45:12 +03:00
kjubybot
aac56e22b8 added pool and sep_id parameters to compute 2022-07-07 12:43:47 +03:00
Petr Krutov
e4be812c68 Merge branch '3.0/migrate-and-refactoring' into 'dev'
3.0/migrate and refactoring

See merge request rudecs/terraform-provider-decort!25
2022-06-29 17:14:02 +03:00
stSolo
9a7642cf33 Add context to DecortAPICall method 2022-06-29 16:22:31 +03:00
stSolo
3613bbea28 Migrate to sdkv2 and project structure refactoring 2022-06-29 11:34:14 +03:00
Petr Krutov
3c2eb0407c Merge branch 'dev' into 'main'
Dev

See merge request rudecs/terraform-provider-decort!23
2022-06-27 11:11:17 +03:00
Petr Krutov
d776a86303 Dev 2022-06-27 11:11:17 +03:00
Petr Krutov
b49cbe3d55 Merge branch 'main' into 'dev'
# Conflicts:
#   CHANGELOG.md
2022-06-27 11:10:26 +03:00
Pyotr Krutov
71aff5fa32 updated changelog 2022-06-27 11:06:03 +03:00
Petr Krutov
407e45cd5c Merge branch '2.3.1/fix/timeouts' into 'dev'
disabled controller client timeout

See merge request rudecs/terraform-provider-decort!22
2022-06-27 11:03:16 +03:00
Petr Krutov
40b8f93fa2 Merge branch '2.3.1/fix/retry-error-message' into 'dev'
made error message after HTTP 500 retry more informative

See merge request rudecs/terraform-provider-decort!21
2022-06-27 11:02:31 +03:00
Pyotr Krutov
b599e244e8 made error message after HTTP 500 retry more informative 2022-06-27 10:23:01 +03:00
Pyotr Krutov
42c4f2e505 disabled controller client timeout 2022-06-26 13:28:11 +03:00
Petr Krutov
d398dd3699 Merge branch 'dev' into 'main'
v2.3.0

See merge request rudecs/terraform-provider-decort!20
2022-06-10 11:59:05 +03:00
Petr Krutov
5db1aa5ddb v2.3.0 2022-06-10 11:59:05 +03:00
kjubybot
4b4efec196 updated changelog; release ready 2022-06-10 11:54:27 +03:00
stSolo
945e6e08b0 Update list of contents 2022-06-09 17:47:25 +03:00
kjubybot
efe2b577b0 updated docs 2022-06-09 11:17:30 +03:00
kjubybot
545eac90df refactoring; dropped some unused code; configured linters 2022-06-08 15:55:16 +03:00
Petr Krutov
4e35273d6d Merge branch '2.3.0/refactoring' into 'dev'
refactored overcomplicated code; deleted some unused functions; added golangci-lint config

See merge request rudecs/terraform-provider-decort!19
2022-06-08 14:55:22 +03:00
Petr Krutov
6f1f18fd0a Merge branch 'dev' into '2.3.0/refactoring'
# Conflicts:
#   decort/resource_disk.go
#   decort/utility_rg.go
2022-06-08 14:54:38 +03:00
kjubybot
5aa436cfb8 refactored overcomplicated code; deleted some unused functions; added golangci-lint config 2022-06-08 14:49:08 +03:00
Stanislav Solovev
4a98b99f1c Merge branch '2.3.0/fix/erratas' into 'dev'
Fix erratas

See merge request rudecs/terraform-provider-decort!18
2022-06-07 19:02:39 +03:00
stSolo
c7b54717a1 Fix erratas 2022-06-07 18:59:19 +03:00
Stanislav Solovev
0609b158c1 Merge branch '2.3.0/feature/bservice' into 'dev'
Add bservice, extnet, vins

See merge request rudecs/terraform-provider-decort!17
2022-06-03 11:29:09 +03:00
stSolo
8d1b13f7b7 Add bservice, extnet, vins 2022-06-03 11:22:42 +03:00
Petr Krutov
0be6da1ae1 Merge branch '2.3.0/feature/account' into 'dev'
2.3.0/feature/account

See merge request rudecs/terraform-provider-decort!16
2022-05-30 12:03:30 +03:00
stSolo
c73a6e0d71 Fix resource account, add comment for a resource account sample 2022-05-30 11:38:26 +03:00
stSolo
95ab4e37c4 Add data for flipgroups list 2022-05-28 19:53:41 +03:00
stSolo
b70cdcabf6 Rename files 2022-05-28 19:23:17 +03:00
stSolo
eb22dee25b Add data for account deleted list 2022-05-27 20:17:25 +03:00
stSolo
61b8765c82 Add data for account templates lis 2022-05-27 19:39:49 +03:00
stSolo
96c4175e74 Add data for account reserved units 2022-05-27 18:23:38 +03:00
stSolo
a685a91f86 Add data for account consumed units by type 2022-05-27 16:01:50 +03:00
stSolo
839841aee4 Add data for account consumed units 2022-05-27 15:11:53 +03:00
stSolo
9f5b4ab771 Add a data for account rg list 2022-05-27 13:48:58 +03:00
stSolo
4a326e9ceb Add a resource account 2022-05-27 12:26:11 +03:00
stSolo
a0fbc8dd4f Add data function for an account 2022-05-25 10:58:29 +03:00
stSolo
9912b04c2a Add data function account-audits-list 2022-05-24 19:22:29 +03:00
stSolo
d527d9b474 Add an account vins list 2022-05-24 18:53:02 +03:00
stSolo
5e515daafa Add a account disks list 2022-05-24 17:23:29 +03:00
stSolo
fa748f6e5d Add account computes list 2022-05-24 14:02:03 +03:00
stSolo
c5e35b19f9 Add data source function for account list 2022-05-23 19:19:48 +03:00
Petr Krutov
b5a9987b74 Merge branch '2.3.0/feature/rg-list' into 'dev'
Add a data source rg_list

See merge request rudecs/terraform-provider-decort!15
2022-05-23 14:35:27 +03:00
stSolo
103038c0a3 Add a data source rg_list 2022-05-23 14:14:30 +03:00
Petr Krutov
f5a606153f Merge branch '2.3.0/sep-pool-optional' into 'dev'
made pool and sep_id optional and account_id required

See merge request rudecs/terraform-provider-decort!14
2022-05-23 13:32:40 +03:00
kjubybot
9a806a8e2c made pool and sep_id optional and account_id required 2022-05-23 12:46:46 +03:00
Petr Krutov
56e71c8981 Merge branch '2.3.0/fix/unset-boot_disk_id' into 'dev'
fixed boot disk resize

See merge request rudecs/terraform-provider-decort!13
2022-05-19 17:30:08 +03:00
kjubybot
424cdcd2b3 fixed boot disk resize 2022-05-19 17:29:00 +03:00
Petr Krutov
165bd89fbf Merge branch '2.3.0/fix/resource-downscale' into 'dev'
added force parameter to compute resize call

See merge request rudecs/terraform-provider-decort!12
2022-05-19 12:55:04 +03:00
Petr Krutov
7fb4223f85 Merge branch '2.3.0/fix/pfw-public_port_end-recreation' into 'dev'
fixed pfw recreation in case public_port_end was not set

See merge request rudecs/terraform-provider-decort!11
2022-05-19 12:54:11 +03:00
kjubybot
8112f328a2 fixed pfw recreation in case public_port_end was not set 2022-05-19 12:51:51 +03:00
kjubybot
5e867706c0 added force parameter to compute resize call 2022-05-19 12:33:10 +03:00
Petr Krutov
2e355d2ede Merge branch '2.3.0/feature/disk-list' into 'dev'
Add disk-list

See merge request rudecs/terraform-provider-decort!10
2022-05-18 10:50:26 +03:00
stSolo
b849521780 Add disk-list 2022-05-18 10:25:40 +03:00
kjubybot
2797a10fcb fixed pipeline 2022-05-17 15:00:51 +03:00
kjubybot
d35fa26eb8 increased depcheck logging verbosity 2022-05-17 14:58:40 +03:00
kjubybot
83dad0d6b3 added golang in depcheck pipeline 2022-05-17 14:52:36 +03:00
503 changed files with 48682 additions and 5965 deletions

View File

@@ -1,8 +1,8 @@
name: Release to registry
name: Release
on:
push:
tags:
- 'v*'
- '*'
jobs:
release:
@@ -17,9 +17,9 @@ jobs:
run: git fetch --force --tags
- name: Setup Go
uses: actions/setup-go@v2
uses: actions/setup-go@v3
with:
go-version: 1.17
go-version: 1.18
- name: Import GPG key
id: import_gpg
@@ -29,7 +29,7 @@ jobs:
passphrase: ${{ secrets.PASSPHRASE }}
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
uses: goreleaser/goreleaser-action@v3
with:
args: release --rm-dist --release-notes CHANGELOG.md
env:

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@ decort/vendor/
examples/
url_scrapping/
terraform-provider-decort*
.vscode/

35
.golangci.yml Normal file
View File

@@ -0,0 +1,35 @@
linters:
enable:
- bodyclose
- decorder
- dogsled
- errorlint
- exportloopref
#- gocognit - disabled till better times
- goconst
- gocyclo
- gosec
- ifshort
- makezero
#- nestif - disabled till better times
- nilerr
- prealloc
- unconvert
- unparam
linters-settings:
errcheck:
exclude-functions:
- (*github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.ResourceData).Set
staticcheck:
go: "1.18"
checks:
- all
- -SA1019
nestif:
min-complexity: 7
gocyclo:
min-complexity: 40
issues:
max-same-issues: 0

View File

@@ -4,6 +4,7 @@ before:
builds:
- env:
- CGO_ENABLED=0
main: ./cmd/decort
mod_timestamp: '{{ .CommitTimestamp }}'
flags:
- -trimpath
@@ -15,9 +16,12 @@ builds:
goarch:
- amd64
- '386'
- arm64
ignore:
- goos: darwin
goarch: '386'
- goos: windows
goarch: arm64
binary: '{{ .ProjectName }}_v{{ .Version }}'
archives:
- format: zip

View File

@@ -1,18 +1,12 @@
### Version 3.4.2
### Bug fixes
- resgroup recreation if quotas unspecified
### New datasources
- vgpu
- pcidevice\_list
- pcidevice
- sep
- sep\_list
- sep\_disk\_list
- sep\_config
- sep\_pool
- sep\_consumption
### New resources
- pcidevice
- sep
- sep\_config
- Change field type size_used from int to float in:
- resource decort_kvmvm
- resource decort_disk
- data source decort_kvmvm
- data source decort_disk
- data source decort_disk_list
- data source decort_disk_list-unattached
- Models of the resources

View File

@@ -1,50 +0,0 @@
pipeline {
agent {
kubernetes {
yaml '''
apiVersion: v1
kind: Pod
spec:
containers:
- name: alpine
image: alpine:3.15
command:
- sleep
- infinity
'''
}
}
stages {
stage('Dependency check') {
environment {
DEPCHECKDB = credentials('depcheck-postgres')
}
steps {
container('alpine') {
sh 'apk update && apk add openjdk11 java-postgresql-jdbc'
dependencyCheck additionalArguments: '-f JSON -f HTML -n --enableExperimental\
--dbDriverName org.postgresql.Driver \
--dbDriverPath /usr/share/java/postgresql-jdbc.jar \
--dbUser $DEPCHECKDB_USR \
--dbPassword $DEPCHECKDB_PSW \
--connectionString jdbc:postgresql://postgres-postgresql.postgres/depcheck', odcInstallation: 'depcheck'
}
}
}
stage('SonarQube analysis') {
environment {
SONARSCANNER_HOME = tool 'sonarscanner'
}
steps {
withSonarQubeEnv('sonarqube') {
sh '$SONARSCANNER_HOME/bin/sonar-scanner'
}
}
}
stage('SonarQube quality gate') {
steps {
waitForQualityGate webhookSecretId: 'sonar-webhook', abortPipeline: true
}
}
}
}

View File

@@ -4,14 +4,30 @@ NAMESPACE=decort
NAME=terraform-provider-decort
#BINARY=terraform-provider-${NAME}
BINARY=${NAME}.exe
VERSION=0.2
WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${NAMESPACE}/${VERSION}/${OS_ARCH}
MAINPATH = ./cmd/decort/
VERSION=1.1
#OS_ARCH=darwin_amd64
OS_ARCH=windows_amd64
#OS_ARCH=linux_amd64
default: install
image:
GOOS=linux GOARCH=amd64 go build -o terraform-provider-decort ./cmd/decort/
docker build . -t rudecs/tf:3.2.2
rm terraform-provider-decort
lint:
golangci-lint run --timeout 600s
st:
go build -o ${BINARY} ${MAINPATH}
cp ${BINARY} ${WORKPATH}
rm ${BINARY}
build:
go build -o ${BINARY}
go build -o ${BINARY} ${MAINPATH}
release:
GOOS=darwin GOARCH=amd64 go build -o ./bin/${BINARY}_${VERSION}_darwin_amd64
@@ -36,4 +52,4 @@ test:
echo $(TEST) | xargs -t -n4 go test $(TESTARGS) -timeout=30s -parallel=4
testacc:
TF_ACC=1 go test $(TEST) -v $(TESTARGS) -timeout 120m
TF_ACC=1 go test $(TEST) -v $(TESTARGS) -timeout 120m

View File

@@ -1,14 +1,30 @@
# terraform-provider-decort
Terraform provider для платформы Digital Energy Cloud Orchestration Technology (DECORT)
Внимание: провайдер версии rc-1.25 разработан для DECORT API 3.7.x.
Для более старых версий можно использовать:
- DECORT API 3.6.x - версия провайдера rc-1.10
- DECORT API до 3.6.0 - terraform DECS provider (https://github.com/rudecs/terraform-provider-decs)
## Соответсвие версий платформы версиям провайдера
| Версия DECORT API | Версия провайдера Terraform |
| ------ | ------ |
| 3.8.5 | 3.4.x |
| 3.8.0 - 3.8.4 | 3.3.1 |
| 3.7.x | rc-1.25 |
| 3.6.x | rc-1.10 |
| до 3.6.0 | [terraform-provider-decs](https://github.com/rudecs/terraform-provider-decs) |
## Режимы работы
Провайдер позволяет работать в двух режимах:
- Режим пользователя,
- Режим администратора.
Для переключения между режимами используйте флаг DECORT_ADMIN_MODE.
Вики проекта: https://github.com/rudecs/terraform-provider-decort/wiki
## Возможности провайдера
- Работа с Compute instances,
- Работа с disks,
- Работа с Compute instances,
- Работа с disks,
- Работа с k8s,
- Работа с image,
- Работа с reource groups,
@@ -18,18 +34,26 @@ Terraform provider для платформы Digital Energy Cloud Orchestration
- Работа с snapshots,
- Работа с pcidevice,
- Работа с sep,
- Работа с vgpu.
- Работа с vgpu,
- Работа с bservice,
- Работа с extnets,
- Работа с locations,
- Работа с load balancer.
Вики проекта: https://github.com/rudecs/terraform-provider-decort/wiki
## Начало
Старт возможен по двум путям:
Старт возможен по двум путям:
1. Установка через собранные пакеты.
2. Ручная установка.
### Установка через собранные пакеты.
1. Скачайте и установите terraform по ссылке: https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/aws-get-started
2. Создайте файл `main.tf` и добавьте в него следующий блок.
```terraform
provider "decort" {
authenticator = "oauth2"
@@ -40,45 +64,62 @@ provider "decort" {
allow_unverified_ssl = true
}
```
3. Выполните команду
```
terraform init
```
Провайдер автоматически будет установлен на ваш компьютер из terraform registry.
### Ручная установка
1. Скачайте и установите Go по ссылке: https://go.dev/dl/
2. Скачайте и установите terraform по ссылке: https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/aws-get-started
3. Склонируйте репозиторий с провайдером, выполнив команду:
```bash
git clone https://github.com/rudecs/terraform-provider-decort.git
```
4. Перейдите в скачанную папку с провайдером и выполните команду
```bash
go build -o terraform-provider-decort
```
Если вы знаете как устроен _makefile_, то можно изменить в файле `Makefile` параметры под вашу ОС и выполнить команду
```bash
make build
```
5. Полученный файл необходимо поместить:
Linux:
Linux:
```bash
~/.terraform.d/plugins/${host_name}/${namespace}/${type}/${version}/${target}
```
Windows:
```powershell
%APPDATA%\terraform.d\plugins\${host_name}\${namespace}\${type}\${version}\${target}
```
ВНИМАНИЕ: для ОС Windows `%APP_DATA%` является каталогом, в котором будут помещены будущие файлы terraform.
Где:
- host_name - имя хоста, держателя провайдера, например, digitalenergy.online
- namespace - пространство имен хоста, например decort
- namespace - пространство имен хоста, например decort
- type - тип провайдера, может совпадать с пространством имен, например, decort
- version - версия провайдера, например 1.2
- target - версия ОС, например windows_amd64
6. После этого, создайте файл `main.tf`.
7. Добавьте в него следующий блок
```terraform
terraform {
required_providers {
@@ -89,32 +130,39 @@ terraform {
}
}
```
В поле `version` указывается версия провайдера.
Обязательный параметр
Тип поля - строка
ВНИМАНИЕ: Версии в блоке и в репозитории, в который был помещен провайдер должны совпадать!
В поле `source` помещается путь до репозитория с версией вида:
```bash
${host_name}/${namespace}/${type}
```
ВНИМАНИЕ: все параметры должны совпадать с путем репозитория, в котором помещен провайдер.
8. В консоле выполнить команду
ВНИМАНИЕ: все параметры должны совпадать с путем репозитория, в котором помещен провайдер.
8. В консоле выполнить команду
```bash
terraform init
```
9. Если все прошло хорошо - ошибок не будет.
9. Если все прошло хорошо - ошибок не будет.
Более подробно о сборке провайдера можно найти по ссылке: https://learn.hashicorp.com/tutorials/terraform/provider-use?in=terraform/providers
## Примеры работы
Примеры работы можно найти:
- На вики проекта: https://github.com/rudecs/terraform-provider-decort/wiki
- В папке `samples`
- В папке `samples`
Схемы к terraform'у доступны:
- В папке `docs`
- В папке `docs`
Хорошей работы!

View File

@@ -1,13 +1,30 @@
# terraform-provider-decort
Terraform provider for Digital Energy Cloud Orchestration Technology (DECORT) platform
NOTE: provider rc-1.25 is designed for DECORT API 3.7.x. For older API versions please use:
- DECORT API 3.6.x versions - provider version rc-1.10
- DECORT API versions prior to 3.6.0 - Terraform DECS provider (https://github.com/rudecs/terraform-provider-decs)
## Mapping of platform versions with provider versions
| DECORT API version | Terraform provider version |
| ------ | ------ |
| 3.8.5 | 3.4.x |
| 3.8.0 - 3.8.4 | 3.3.1 |
| 3.7.x | rc-1.25 |
| 3.6.x | rc-1.10 |
| до 3.6.0 | [terraform-provider-decs](https://github.com/rudecs/terraform-provider-decs) |
## Working modes
The provider support two working modes:
- User mode,
- Administator mode.
Use flag DECORT_ADMIN_MODE for swithcing beetwen modes.
See user guide at https://github.com/rudecs/terraform-provider-decort/wiki
## Features
- Work with Compute instances,
- Work with disks,
- Work with Compute instances,
- Work with disks,
- Work with k8s,
- Work with image,
- Work with reource groups,
@@ -17,21 +34,28 @@ NOTE: provider rc-1.25 is designed for DECORT API 3.7.x. For older API versions
- Work with snapshots,
- Work with pcidevice.
- Work with sep,
- Work with vgpu.
- Work with vgpu,
- Work with bservice,
- Work with extnets,
- Work with locations,
- Work with load balancers.
This provider supports Import operations on pre-existing resources.
See user guide at https://github.com/rudecs/terraform-provider-decort/wiki
## Get Started
Two ways for starting:
Two ways for starting:
1. Installing via binary packages
2. Manual installing
### Installing via binary packages
1. Download and install terraform: https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/aws-get-started
2. Create a file `main.tf` and add to it next section.
```terraform
provider "decort" {
authenticator = "oauth2"
@@ -42,45 +66,62 @@ provider "decort" {
allow_unverified_ssl = true
}
```
3. Execute next command
```
terraform init
```
The Provider will automatically install on your computer from the terrafrom registry.
### Manual installing
1. Download and install Go Programming Language: https://go.dev/dl/
2. Download and install terraform: https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/aws-get-started
3. Clone provider's repo:
```bash
git clone https://github.com/rudecs/terraform-provider-decort.git
```
4. Change directory to clone provider's and execute next command
```bash
go build -o terraform-provider-decort
```
If you have experience with _makefile_, you can change `Makefile`'s paramters and execute next command
```bash
make build
```
5. Now move compilled file to:
Linux:
Linux:
```bash
~/.terraform.d/plugins/${host_name}/${namespace}/${type}/${version}/${target}
```
Windows:
```powershell
%APPDATA%\terraform.d\plugins\${host_name}/${namespace}/${type}/${version}/${target}
```
NOTE: for Windows OS `%APP_DATA%` is a cataloge, where will place terraform files.
Example:
- host_name - digitalenergy.online
- namespace - decort
- namespace - decort
- type - decort
- version - 1.2
- target - windows_amd64
6. After all, create a file `main.tf`.
7. Add to the file next code section
```terraform
terraform {
required_providers {
@@ -91,18 +132,22 @@ terraform {
}
}
```
`version`- field for provider's version
Required
String
Note: Versions in code section and in a repository must be equal!
`source` - path to repository with provider's version
```bash
${host_name}/${namespace}/${type}
```
NOTE: all paramters must be equal to the repository path!
8. Execute command in your terminal
8. Execute command in your terminal
```bash
terraform init
```
@@ -112,10 +157,12 @@ terraform init
More details about the provider's building process: https://learn.hashicorp.com/tutorials/terraform/provider-use?in=terraform/providers
## Examples and Samples
- Examples: https://github.com/rudecs/terraform-provider-decort/wiki
- Samples: see in repository `samples`
- Samples: see in repository `samples`
Terraform schemas in:
- See in repository `docs`
- See in repository `docs`
Good work!

View File

@@ -1,6 +1,8 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors:
Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -32,10 +34,10 @@ package main
import (
log "github.com/sirupsen/logrus"
"github.com/hashicorp/terraform-plugin-sdk/plugin"
"github.com/hashicorp/terraform-plugin-sdk/terraform"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/plugin"
"github.com/rudecs/terraform-provider-decort/decort"
"github.com/rudecs/terraform-provider-decort/internal/provider"
)
//go:generate go run github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs
@@ -45,8 +47,8 @@ func main() {
log.Debug("Debug logging enabled")
plugin.Serve(&plugin.ServeOpts{
ProviderFunc: func() terraform.ResourceProvider {
return decort.Provider()
ProviderFunc: func() *schema.Provider {
return provider.Provider()
},
})
}

View File

@@ -1,132 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
Technology platfom.
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
*/
package decort
import (
"encoding/json"
"fmt"
// "net/url"
log "github.com/sirupsen/logrus"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
)
func flattenAccount(d *schema.ResourceData, acc_facts string) error {
// NOTE: this function modifies ResourceData argument - as such it should never be called
// from resourceAccountExists(...) method
// log.Debugf("flattenAccount: ready to decode response body from %q", CloudspacesGetAPI)
details := AccountRecord{}
err := json.Unmarshal([]byte(acc_facts), &details)
if err != nil {
return err
}
log.Debugf("flattenAccount: decoded Account name %q / ID %d, status %q", details.Name, details.ID, details.Status)
d.SetId(fmt.Sprintf("%d", details.ID))
d.Set("name", details.Name)
d.Set("status", details.Status)
return nil
}
func dataSourceAccountRead(d *schema.ResourceData, m interface{}) error {
acc_facts, err := utilityAccountCheckPresence(d, m)
if acc_facts == "" {
// if empty string is returned from utilityAccountCheckPresence then there is no
// such account and err tells so - just return it to the calling party
d.SetId("") // ensure ID is empty in this case
return err
}
return flattenAccount(d, acc_facts)
}
func dataSourceAccount() *schema.Resource {
return &schema.Resource{
SchemaVersion: 1,
Read: dataSourceAccountRead,
Timeouts: &schema.ResourceTimeout{
Read: &Timeout30s,
Default: &Timeout60s,
},
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Optional: true,
Description: "Name of the account. Names are case sensitive and unique.",
},
"account_id": {
Type: schema.TypeInt,
Optional: true,
Description: "Unique ID of the account. If account ID is specified, then account name is ignored.",
},
"status": {
Type: schema.TypeString,
Computed: true,
Description: "Current status of the account.",
},
/* We keep the following attributes commented out, as we are not implementing account
management with Terraform plugin, so we do not need this extra info.
"quota": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: quotaRgSubresourceSchema(), // this is a dictionary
},
Description: "Quotas on the resources for this account and all its resource groups.",
},
"resource_groups": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema {
Type: schema.TypeInt,
},
Description: "IDs of resource groups in this account."
},
"vins": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema {
Type: schema.TypeInt,
},
Description: "IDs of VINSes created at the account level."
},
*/
},
}
}

View File

@@ -1,201 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
Technology platfom.
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
*/
package decort
import (
"encoding/json"
"fmt"
// "net/url"
log "github.com/sirupsen/logrus"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
// "github.com/hashicorp/terraform-plugin-sdk/helper/validation"
)
func flattenDisk(d *schema.ResourceData, disk_facts string) error {
// This function expects disk_facts string to contain a response from disks/get API
//
// NOTE: this function modifies ResourceData argument - as such it should never be called
// from resourceDiskExists(...) method. Use utilityDiskCheckPresence instead.
log.Debugf("flattenDisk: ready to unmarshal string %s", disk_facts)
model := DiskRecord{}
err := json.Unmarshal([]byte(disk_facts), &model)
if err != nil {
return err
}
log.Debugf("flattenDisk: disk ID %d, disk AccountID %d", model.ID, model.AccountID)
d.SetId(fmt.Sprintf("%d", model.ID))
// d.Set("disk_id", model.ID) - we should NOT update disk_id in the schema. If it was set - it is already set, if it wasn't - we shouldn't
d.Set("name", model.Name)
d.Set("account_id", model.AccountID)
d.Set("account_name", model.AccountName)
d.Set("size", model.SizeMax)
// d.Set("sizeUsed", model.SizeUsed)
d.Set("type", model.Type)
d.Set("image_id", model.ImageID)
d.Set("sep_id", model.SepID)
d.Set("sep_type", model.SepType)
d.Set("pool", model.Pool)
// d.Set("compute_id", model.ComputeID)
d.Set("description", model.Desc)
return nil
}
func dataSourceDiskRead(d *schema.ResourceData, m interface{}) error {
disk_facts, err := utilityDiskCheckPresence(d, m)
if disk_facts == "" {
// if empty string is returned from utilityDiskCheckPresence then there is no
// such Disk and err tells so - just return it to the calling party
d.SetId("") // ensure ID is empty
return err
}
return flattenDisk(d, disk_facts)
}
func dataSourceDiskSchemaMake() map[string]*schema.Schema {
rets := map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Optional: true,
Description: "Name of this disk. NOTE: disk names are NOT unique within an account. If disk ID is specified, disk name is ignored.",
},
"disk_id": {
Type: schema.TypeInt,
Optional: true,
Description: "ID of the disk to get. If disk ID is specified, then disk name and account ID are ignored.",
},
"account_id": {
Type: schema.TypeInt,
Optional: true,
Description: "ID of the account this disk belongs to. If disk ID is specified, then account ID is ignored.",
},
// The rest of the data source Disk schema are all computed
"sep_id": {
Type: schema.TypeInt,
Computed: true,
Description: "Storage end-point provider serving this disk.",
},
"pool": {
Type: schema.TypeString,
Computed: true,
Description: "Pool where this disk is located.",
},
"size": {
Type: schema.TypeInt,
Computed: true,
Description: "Size of the disk in GB.",
},
"type": {
Type: schema.TypeString,
Computed: true,
Description: "Type of this disk. E.g. D for data disks, B for boot.",
},
"description": {
Type: schema.TypeString,
Computed: true,
Description: "User-defined text description of this disk.",
},
"account_name": {
Type: schema.TypeString,
Computed: true,
Description: "Name of the account this disk belongs to. If account ID is specified, account name is ignored.",
},
"image_id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the image, which this disk was cloned from (valid for disk clones only).",
},
"sep_type": {
Type: schema.TypeString,
Computed: true,
Description: "Type of the storage end-point provider serving this disk.",
},
/*
"snapshots": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource {
Schema: snapshotSubresourceSchemaMake(),
},
Description: "List of user-created snapshots for this disk."
},
"status": {
Type: schema.TypeString,
Computed: true,
Description: "Current model status of this disk.",
},
"tech_status": {
Type: schema.TypeString,
Computed: true,
Description: "Current technical status of this disk.",
},
"compute_id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the compute instance where this disk is attached to, or 0 for unattached disk.",
},
*/
}
return rets
}
func dataSourceDisk() *schema.Resource {
return &schema.Resource{
SchemaVersion: 1,
Read: dataSourceDiskRead,
Timeouts: &schema.ResourceTimeout{
Read: &Timeout30s,
Default: &Timeout60s,
},
Schema: dataSourceDiskSchemaMake(),
}
}

View File

@@ -1,86 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package decort
import (
// log "github.com/sirupsen/logrus"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
)
// ID, type, name, size, account ID, SEP ID, SEP type, pool, status, tech status, compute ID, image ID
func diskSubresourceSchemaMake() map[string]*schema.Schema {
rets := map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Required: true,
Description: "Name of this disk.",
},
"size": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: validation.IntAtLeast(1),
Description: "Size of the disk in GB.",
},
"account_id": {
Type: schema.TypeInt,
Computed: true,
ValidateFunc: validation.IntAtLeast(1),
Description: "ID of the account this disk belongs to.",
},
"type": {
Type: schema.TypeString,
Optional: true,
Description: "Type of this disk.",
},
"sep_id": {
Type: schema.TypeString,
Optional: true,
Default: "default",
Description: "ID of the storage end-point provider serving this disk.",
},
"sep_type": {
Type: schema.TypeString,
Optional: true,
Default: "default",
Description: "Type of the storage provider serving this disk.",
},
"pool": {
Type: schema.TypeString,
Optional: true,
Default: "default",
Description: "Pool on the storage where this disk is located.",
},
"image_id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the binary Image this disk resource is cloned from (if any).",
},
}
return rets
}

View File

@@ -1,331 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This file contains definitions and code for handling Interface component of Compute schema
*/
package decort
import (
/*
"log"
"strconv"
"strings"
*/
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
// "github.com/hashicorp/terraform-plugin-sdk/helper/validation"
)
func interfaceSubresourceSchemaMake() map[string]*schema.Schema {
rets := map[string]*schema.Schema{
"net_id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the network entity this interface is connected to.",
},
"net_type": {
Type: schema.TypeString,
Computed: true,
Description: "Type of the network entity this interface is connected to.",
},
"ip_address": {
Type: schema.TypeString,
Computed: true,
Description: "IP addresses assigned to this interface.",
},
"netmask": {
Type: schema.TypeInt,
Computed: true,
Description: "Network mask to be used with this interface.",
},
"mac": {
Type: schema.TypeString,
Computed: true,
Description: "MAC address of this interface.",
},
"default_gw": {
Type: schema.TypeString,
Computed: true,
Description: "Default gateway associated with this interface.",
},
"name": {
Type: schema.TypeString,
Computed: true,
Description: "Interface name.",
},
"connection_id": {
Type: schema.TypeInt,
Computed: true,
Description: "VxLAN or VLAN ID this interface is connected to.",
},
"connection_type": {
Type: schema.TypeString,
Computed: true,
Description: "Type of the segment (VLAN or VxLAN) this interface is connected to.",
},
"qos": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: interfaceQosSubresourceSchemaMake(),
},
Description: "QoS settings for this interface.",
},
}
return rets
}
func interfaceQosSubresourceSchemaMake() map[string]*schema.Schema {
rets := map[string]*schema.Schema{
"egress_rate": {
Type: schema.TypeInt,
Computed: true,
Description: "Egress rate limit on this interface.",
},
"ingress_burst": {
Type: schema.TypeInt,
Computed: true,
Description: "Ingress burst limit on this interface.",
},
"ingress_rate": {
Type: schema.TypeInt,
Computed: true,
Description: "Ingress rate limit on this interface.",
},
"guid": {
Type: schema.TypeString,
Computed: true,
Description: "GUID of this QoS record.",
},
}
return rets
}
/*
func flattenNetworks(nets []NicRecord) []interface{} {
// this function expects an array of NicRecord as returned by machines/get API call
// NOTE: it does NOT expect a strucutre as returned by externalnetwork/list
var length = 0
var strarray []string
for _, value := range nets {
if value.NicType == "PUBLIC" {
length += 1
}
}
log.Debugf("flattenNetworks: found %d NICs with PUBLIC type", length)
result := make([]interface{}, length)
if length == 0 {
return result
}
elem := make(map[string]interface{})
var subindex = 0
for index, value := range nets {
if value.NicType == "PUBLIC" {
// this will be changed as network segments entity
// value.Params for ext net comes in a form "gateway:176.118.165.1 externalnetworkId:6"
// for network_id we need to extract from this string
strarray = strings.Split(value.Params, " ")
substr := strings.Split(strarray[1], ":")
elem["network_id"], _ = strconv.Atoi(substr[1])
elem["ip_range"] = value.IPAddress
// elem["label"] = ... - should be uncommented for the future release
log.Debugf("flattenNetworks: parsed element %d - network_id %d, ip_range %s",
index, elem["network_id"].(int), value.IPAddress)
result[subindex] = elem
subindex += 1
}
}
return result
}
func makePortforwardsConfig(arg_list []interface{}) (pfws []PortforwardConfig, count int) {
count = len(arg_list)
if count < 1 {
return nil, 0
}
pfws = make([]PortforwardConfig, count)
var subres_data map[string]interface{}
for index, value := range arg_list {
subres_data = value.(map[string]interface{})
// pfws[index].Label = subres_data["label"].(string) - should be uncommented for future release
pfws[index].ExtPort = subres_data["ext_port"].(int)
pfws[index].IntPort = subres_data["int_port"].(int)
pfws[index].Proto = subres_data["proto"].(string)
}
return pfws, count
}
func flattenPortforwards(pfws []PortforwardRecord) []interface{} {
result := make([]interface{}, len(pfws))
elem := make(map[string]interface{})
var port_num int
for index, value := range pfws {
// elem["label"] = ... - should be uncommented for the future release
// external port field is of TypeInt in the portforwardSubresourceSchema, but string is returned
// by portforwards/list API, so we need conversion here
port_num, _ = strconv.Atoi(value.ExtPort)
elem["ext_port"] = port_num
// internal port field is of TypeInt in the portforwardSubresourceSchema, but string is returned
// by portforwards/list API, so we need conversion here
port_num, _ = strconv.Atoi(value.IntPort)
elem["int_port"] = port_num
elem["proto"] = value.Proto
elem["ext_ip"] = value.ExtIP
elem["int_ip"] = value.IntIP
result[index] = elem
}
return result
}
func portforwardSubresourceSchema() map[string]*schema.Schema {
rets := map[string]*schema.Schema{
"label": {
Type: schema.TypeString,
Required: true,
Description: "Unique label of this network connection to identify it amnong other connections for this VM.",
},
"ext_port": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: validation.IntBetween(1, 65535),
Description: "External port number for this port forwarding rule.",
},
"int_port": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: validation.IntBetween(1, 65535),
Description: "Internal port number for this port forwarding rule.",
},
"proto": {
Type: schema.TypeString,
Required: true,
// ValidateFunc: validation.IntBetween(1, ),
Description: "Protocol type for this port forwarding rule. Should be either 'tcp' or 'udp'.",
},
"ext_ip": {
Type: schema.TypeString,
Computed: true,
Description: ".",
},
"int_ip": {
Type: schema.TypeString,
Computed: true,
Description: ".",
},
}
return rets
}
func flattenNICs(nics []NicRecord) []interface{} {
var result = make([]interface{}, len(nics))
elem := make(map[string]interface{})
for index, value := range nics {
elem["status"] = value.Status
elem["type"] = value.NicType
elem["mac"] = value.MacAddress
elem["ip_address"] = value.IPAddress
elem["parameters"] = value.Params
elem["reference_id"] = value.ReferenceID
elem["network_id"] = value.NetworkID
result[index] = elem
}
return result
}
func nicSubresourceSchema() map[string]*schema.Schema {
rets := map[string]*schema.Schema{
"status": {
Type: schema.TypeString,
Computed: true,
Description: "Current status of this NIC.",
},
"type": {
Type: schema.TypeString,
Computed: true,
Description: "Type of this NIC.",
},
"mac": {
Type: schema.TypeString,
Computed: true,
Description: "MAC address assigned to this NIC.",
},
"ip_address": {
Type: schema.TypeString,
Computed: true,
Description: "IP address assigned to this NIC.",
},
"parameters": {
Type: schema.TypeString,
Computed: true,
Description: "Additional NIC parameters.",
},
"reference_id": {
Type: schema.TypeString,
Computed: true,
Description: "Reference ID of this NIC.",
},
"network_id": {
Type: schema.TypeInt,
Computed: true,
Description: "Network ID which this NIC is connected to.",
},
}
return rets
}
*/

View File

@@ -1,957 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
Technology platfom.
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
*/
package decort
import (
"encoding/json"
"fmt"
"strconv"
"time"
)
//
// timeouts for API calls from CRUD functions of Terraform plugin
var Timeout30s = time.Second * 30
var Timeout60s = time.Second * 60
var Timeout180s = time.Second * 180
var Timeout20m = time.Minute * 20
//
// structures related to /cloudapi/rg/list API
//
type UserAclRecord struct {
IsExplicit bool `json:"explicit"`
Rights string `json:"right"`
Status string `json:"status"`
Type string `json:"type"`
UgroupID string `json:"userGroupId"`
// CanBeDeleted bool `json:"canBeDeleted"`
}
type AccountAclRecord struct {
IsExplicit bool `json:"explicit"`
Guid string `json:"guid"`
Rights string `json:"right"`
Status string `json:"status"`
Type string `json:"type"`
UgroupID string `json:"userGroupId"`
}
type ResgroupRecord struct {
ACLs []UserAclRecord `json:"acl"`
Owner AccountAclRecord `json:"accountAcl"`
AccountID int `json:"accountId"`
AccountName string `json:"accountName"`
CreatedBy string `json:"createdBy"`
CreatedTime uint64 `json:"createdTime"`
DefaultNetID int `json:"def_net_id"`
DefaultNetType string `json:"def_net_type"`
Decsription string `json:"desc"`
GridID int `json:"gid"`
ID uint `json:"id"`
LockStatus string `json:"lockStatus"`
Name string `json:"name"`
Status string `json:"status"`
UpdatedBy string `json:"updatedBy"`
UpdatedTime uint64 `json:"updatedTime"`
Vins []int `json:"vins"`
Computes []int `json:"vms"`
}
const ResgroupListAPI = "/restmachine/cloudapi/rg/list"
type ResgroupListResp []ResgroupRecord
//
// structures related to /cloudapi/rg/create API call
//
const ResgroupCreateAPI = "/restmachine/cloudapi/rg/create"
//
// structures related to /cloudapi/rg/update API call
//
const ResgroupUpdateAPI = "/restmachine/cloudapi/rg/update"
type ResgroupUpdateParam struct {
RgId int `json:"rgId"`
Name string `json:"name"`
Desc string `json:"decs"`
Ram int `json:"maxMemoryCapacity"`
Disk int `json:"maxVDiskCapacity"`
Cpu int `json:"maxCPUCapacity"`
NetTraffic int `json:"maxNetworkPeerTransfer"`
Reason string `json:"reason"`
}
//
// structures related to /cloudapi/rg/get API call
//
type QuotaRecord struct { // this is how quota is reported by /api/.../rg/get
Cpu int `json:"CU_C"` // CPU count in pcs
Ram float64 `json:"CU_M"` // RAM volume in MB, it is STILL reported as FLOAT
Disk int `json:"CU_D"` // Disk capacity in GB
ExtIPs int `json:"CU_I"` // Ext IPs count
ExtTraffic int `json:"CU_NP"` // Ext network traffic
GpuUnits int `json:"gpu_units"` // GPU count
}
type ResourceRecord struct { // this is how actual usage is reported by /api/.../rg/get
Cpu int `json:"cpu"`
Disk int `json:"disksize"`
ExtIPs int `json:"extips"`
ExtTraffic int `json:"exttraffic"`
Gpu int `json:"gpu"`
Ram int `json:"ram"`
}
type UsageRecord struct {
Current ResourceRecord `json:"Current"`
Reserved ResourceRecord `json:"Reserved"`
}
const ResgroupGetAPI = "/restmachine/cloudapi/rg/get"
type ResgroupGetResp struct {
ACLs []UserAclRecord `json:"ACLs"`
Usage UsageRecord `json:"Resources"`
AccountID int `json:"accountId"`
AccountName string `json:"accountName"`
GridID int `json:"gid"`
CreatedBy string `json:"createdBy"`
CreatedTime uint64 `json:"createdTime"`
DefaultNetID int `json:"def_net_id"`
DefaultNetType string `json:"def_net_type"`
DeletedBy string `json:"deletedBy"`
DeletedTime uint64 `json:"deletedTime"`
Desc string `json:"desc"`
ID uint `json:"id"`
LockStatus string `json:"lockStatus"`
Name string `json:"name"`
Quota QuotaRecord `json:"resourceLimits"`
Status string `json:"status"`
UpdatedBy string `json:"updatedBy"`
UpdatedTime uint64 `json:"updatedTime"`
Vins []int `json:"vins"`
Computes []int `json:"vms"`
Ignored map[string]interface{} `json:"-"`
}
//
// structures related to /cloudapi/rg/delete API
//
const ResgroupDeleteAPI = "/restmachine/cloudapi/rg/delete"
//
// structures related to /cloudapi/rg/listComputes API
//
type ComputeBriefRecord struct { // this is a brief compute specifiaction as returned by API rg/listComputes
// we do not even include here all fields as returned by this API, but only the most important that
// are really necessary to identify and distinguish computes
AccountID int `json:"accountId"`
AccountName string `json:"accountName"`
Name string `json:"name"`
ID uint `json:"id"`
RgID int `json:"rgId"`
RgName string `json:"rgName"`
Status string `json:"status"`
TechStatus string `json:"techStatus"`
}
const RgListComputesAPI = "/restmachine/cloudapi/rg/listComputes"
type RgListComputesResp []ComputeBriefRecord
//
// structures related to /cloudapi/kvmXXX/create APIs
//
const KvmX86CreateAPI = "/restmachine/cloudapi/kvmx86/create"
const KvmPPCCreateAPI = "/restmachine/cloudapi/kvmppc/create"
type KvmVmCreateParam struct { // this is unified structure for both x86 and PPC based KVM VMs creation
RgID uint `json:"rgId"`
Name string `json:"name"`
Cpu int `json:"cpu"`
Ram int `json:"ram"`
ImageID int `json:"imageId"`
BootDisk int `json:"bootDisk"`
NetType string `json:"netType"`
NetId int `json:"netId"`
IPAddr string `json:"ipAddr"`
UserData string `json:"userdata"`
Desc string `json:"desc"`
Start bool `json:"start"`
}
// structures related to cloudapi/compute/start API
const ComputeStartAPI = "/restmachine/cloudapi/compute/start"
const ComputeStopAPI = "/restmachine/cloudapi/compute/stop"
// structures related to cloudapi/compute/delete API
const ComputeDeleteAPI = "/restmachine/cloudapi/compute/delete"
//
// structures related to /cloudapi/compute/list API
//
type InterfaceQosRecord struct {
ERate int `json:"eRate"`
Guid string `json:"guid"`
InBurst int `json:"inBurst"`
InRate int `json:"inRate"`
}
type InterfaceRecord struct {
ConnID int `json:"connId"` // This is VLAN ID or VxLAN ID, depending on ConnType
ConnType string `json:"connType"` // Either "VLAN" or "VXLAN" tag
DefaultGW string `json:"defGw"`
Guid string `json:"guid"`
IPAddress string `json:"ipAddress"` // without trailing network mask, i.e. "192.168.1.3"
MAC string `json:"mac"`
Name string `json:"name"`
NetID int `json:"netId"` // This is either ExtNet ID or ViNS ID, depending on NetType
NetMask int `json:"netMask"`
NetType string `json:"netType"` // Either "EXTNET" or "VINS" tag
PciSlot int `json:"pciSlot"`
Target string `json:"target"`
Type string `json:"type"`
VNFs []int `json:"vnfs"`
QOS InterfaceQosRecord `json:"qos"`
}
type SnapSetRecord struct {
Disks []int `json:"disks"`
Guid string `json:"guid"`
Label string `json:"label"`
TimeStamp uint64 `json:"timestamp"`
}
type ComputeRecord struct {
AccountID int `json:"accountId"`
AccountName string `json:"accountName"`
ACLs []UserAclRecord `json:"acl"`
Arch string `json:"arch"`
BootDiskSize int `json:"bootdiskSize"`
CloneReference int `json:"cloneReference"`
Clones []int `json:"clones"`
Cpus int `json:"cpus"`
CreatedBy string `json:"createdBy"`
CreatedTime uint64 `json:"createdTime"`
DeletedBy string `json:"deletedBy"`
DeletedTime uint64 `json:"deletedTime"`
Desc string `json:"desc"`
Disks []int `json:"disks"`
GridID int `json:"gid"`
ID uint `json:"id"`
ImageID int `json:"imageId"`
Interfaces []InterfaceRecord `json:"interfaces"`
LockStatus string `json:"lockStatus"`
ManagerID int `json:"managerId"`
Name string `json:"name"`
Ram int `json:"ram"`
RgID int `json:"rgId"`
RgName string `json:"rgName"`
SnapSets []SnapSetRecord `json:"snapSets"`
Status string `json:"status"`
// Tags []string `json:"tags"` // Tags were reworked since DECORT 3.7.1
TechStatus string `json:"techStatus"`
TotalDiskSize int `json:"totalDiskSize"`
UpdatedBy string `json:"updatedBy"`
UpdateTime uint64 `json:"updateTime"`
UserManaged bool `json:"userManaged"`
Vgpus []int `json:"vgpus"`
VinsConnected int `json:"vinsConnected"`
VirtualImageID int `json:"virtualImageId"`
}
const ComputeListAPI = "/restmachine/cloudapi/compute/list"
type ComputeListResp []ComputeRecord
const ComputeResizeAPI = "/restmachine/cloudapi/compute/resize"
//
// structures related to /cloudapi/compute/get
//
type SnapshotRecord struct {
Guid string `json:"guid"`
Label string `json:"label"`
SnapSetGuid string `json:"snapSetGuid"`
SnapSetTime uint64 `json:"snapSetTime"`
TimeStamp uint64 `json:"timestamp"`
}
type DiskRecord struct {
// ACLs `json:"ACL"` - it is a dictionary, special parsing required
// was - Acl map[string]string `json:"acl"`
AccountID int `json:"accountId"`
AccountName string `json:"accountName"` // NOTE: absent from compute/get output
BootPartition int `json:"bootPartition"`
CreatedTime uint64 `json:"creationTime"`
DeletedTime uint64 `json:"deletionTime"`
Desc string `json:"desc"`
DestructionTime uint64 `json:"destructionTime"`
DiskPath string `json:"diskPath"`
GridID int `json:"gid"`
ID uint `json:"id"`
ImageID int `json:"imageId"`
Images []int `json:"images"`
// IOTune 'json:"iotune" - it is a dictionary
Name string `json:"name"`
// Order `json:"order"`
ParentId int `json:"parentId"`
PciSlot int `json:"pciSlot"`
// ResID string `json:"resId"`
// ResName string `json:"resName"`
// Params string `json:"params"`
Pool string `json:"pool"`
PurgeTime uint64 `json:"purgeTime"`
// Role string `json:"role"`
SepType string `json:"sepType"`
SepID int `json:"sepId"` // NOTE: absent from compute/get output
SizeMax int `json:"sizeMax"`
SizeUsed int `json:"sizeUsed"` // sum over all snapshots of this disk to report total consumed space
Snapshots []SnapshotRecord `json:"snapshots"`
Status string `json:"status"`
TechStatus string `json:"techStatus"`
Type string `json:"type"`
ComputeID int `json:"vmid"`
}
type OsUserRecord struct {
Guid string `json:"guid"`
Login string `json:"login"`
Password string `json:"password"`
PubKey string `json:"pubkey"`
}
const ComputeGetAPI = "/restmachine/cloudapi/compute/get"
type ComputeGetResp struct {
// ACLs `json:"ACL"` - it is a dictionary, special parsing required
AccountID int `json:"accountId"`
AccountName string `json:"accountName"`
Arch string `json:"arch"`
BootDiskSize int `json:"bootdiskSize"`
CloneReference int `json:"cloneReference"`
Clones []int `json:"clones"`
Cpu int `json:"cpus"`
Desc string `json:"desc"`
Disks []DiskRecord `json:"disks"`
Driver string `json:"driver"`
GridID int `json:"gid"`
ID uint `json:"id"`
ImageID int `json:"imageId"`
ImageName string `json:"imageName"`
Interfaces []InterfaceRecord `json:"interfaces"`
LockStatus string `json:"lockStatus"`
ManagerID int `json:"managerId"`
ManagerType string `json:"manageType"`
Name string `json:"name"`
NatableVinsID int `json:"natableVinsId"`
NatableVinsIP string `json:"natableVinsIp"`
NatableVinsName string `json:"natableVinsName"`
NatableVinsNet string `json:"natableVinsNetwork"`
NatableVinsNetName string `json:"natableVinsNetworkName"`
OsUsers []OsUserRecord `json:"osUsers"`
Ram int `json:"ram"`
RgID int `json:"rgId"`
RgName string `json:"rgName"`
SnapSets []SnapSetRecord `json:"snapSets"`
Status string `json:"status"`
// Tags []string `json:"tags"` // Tags were reworked since DECORT 3.7.1
TechStatus string `json:"techStatus"`
TotalDiskSize int `json:"totalDiskSize"`
UpdatedBy string `json:"updatedBy"`
UpdateTime uint64 `json:"updateTime"`
UserManaged bool `json:"userManaged"`
Vgpus []int `json:"vgpus"`
VinsConnected int `json:"vinsConnected"`
VirtualImageID int `json:"virtualImageId"`
}
//
// structures related to /restmachine/cloudapi/image/list API
//
type ImageRecord struct {
AccountID uint `json:"accountId"`
Arch string `json:"architecture"`
BootType string `json:"bootType"`
IsBootable bool `json:"bootable"`
IsCdrom bool `json:"cdrom"`
Desc string `json:"desc"`
IsHotResize bool `json:"hotResize"`
ID uint `json:"id"`
Name string `json:"name"`
Pool string `json:"pool"`
SepID int `json:"sepId"`
Size int `json:"size"`
Status string `json:"status"`
Type string `json:"type"`
Username string `json:"username"`
IsVirtual bool `json:"virtual"`
}
const ImagesListAPI = "/restmachine/cloudapi/image/list"
type ImagesListResp []ImageRecord
//
// structures related to /cloudapi/extnet/list API
//
type ExtNetRecord struct {
Name string `json:"name"`
ID uint `json:"id"`
IPCIDR string `json:"ipcidr"`
}
const ExtNetListAPI = "/restmachine/cloudapi/extnet/list"
type ExtNetListResp []ExtNetRecord
//
// structures related to /cloudapi/account/list API
//
type AccountRecord struct {
// ACLs []UserAclRecord `json:"acl"`
// CreatedTime uint64 `json:"creationTime"`
// DeletedTime uint64 `json:"deletionTime"`
ID int `json:"id"`
Name string `json:"name"`
Status string `json:"status"`
// UpdatedTime uint64 `json:"updateTime"`
}
const AccountsGetAPI = "/restmachine/cloudapi/account/get" // returns AccountRecord superset
const AccountsListAPI = "/restmachine/cloudapi/account/list" // returns list of abdridged info about accounts
type AccountsListResp []AccountRecord
//
// structures related to /cloudapi/portforwarding/list API
//
type PfwRecord struct {
ID int `json:"id"`
LocalIP string `json:"localIp"`
LocalPort int `json:"localPort"`
Protocol string `json:"protocol"`
PublicPortEnd int `json:"publicPortEnd"`
PublicPortStart int `json:"publicPortStart"`
ComputeID int `json:"vmId"`
}
const ComputePfwListAPI = "/restmachine/cloudapi/compute/pfwList"
type ComputePfwListResp []PfwRecord
const ComputePfwAddAPI = "/restmachine/cloudapi/compute/pfwAdd"
const ComputePfwDelAPI = "/restmachine/cloudapi/compute/pfwDel"
//
// structures related to /cloudapi/compute/net Attach/Detach API
//
type ComputeNetMgmtRecord struct { // used to "cache" network specs when preparing to manage compute networks
ID int
Type string
IPAddress string
MAC string
}
const ComputeNetAttachAPI = "/restmachine/cloudapi/compute/netAttach"
const ComputeNetDetachAPI = "/restmachine/cloudapi/compute/netDetach"
//
// structures related to /cloudapi/compute/disk Attach/Detach API
//
const ComputeDiskAttachAPI = "/restmachine/cloudapi/compute/diskAttach"
const ComputeDiskDetachAPI = "/restmachine/cloudapi/compute/diskDetach"
//
// structures related to /cloudapi/disks/create
//
const DisksCreateAPI = "/restmachine/cloudapi/disks/create"
//
// structures related to /cloudapi/disks/get
//
const DisksGetAPI = "/restmachine/cloudapi/disks/get" // Returns single DiskRecord on success
const DisksListAPI = "/restmachine/cloudapi/disks/list" // Returns list of DiskRecord on success
type DisksListResp []DiskRecord
//
// structures related to /cloudapi/disks/resize
//
const DisksResizeAPI = "/restmachine/cloudapi/disks/resize2"
//
// structures related to /cloudapi/disks/resize
//
const DisksRenameAPI = "/restmachine/cloudapi/disks/rename"
//
// structures related to /cloudapi/disks/delete
//
const DisksDeleteAPI = "/restmachine/cloudapi/disks/delete"
//
// ViNS structures
//
// this is the structure of the element in the list returned by vins/search API
type VinsSearchRecord struct {
ID int `json:"id"`
Name string `json:"name"`
IPCidr string `json:"network"`
VxLanID int `json:"vxlanId"`
ExternalIP string `json:"externalIP"`
AccountID int `json:"accountId"`
AccountName string `json:"accountName"`
RgID int `json:"rgId"`
RgName string `json:"rgName"`
}
const VinsSearchAPI = "/restmachine/cloudapi/vins/search"
type VinsSearchResp []VinsSearchRecord
type VnfRecord struct {
ID int `json:"id"`
AccountID int `json:"accountId"`
Type string `json:"type"` // "DHCP", "NAT", "GW" etc
Config map[string]interface{} `json:"config"` // NOTE: VNF specs vary by VNF type
}
type VnfGwConfigRecord struct { // describes GW VNF config structure inside ViNS, as returned by API vins/get
ExtNetID int `json:"ext_net_id"`
ExtNetIP string `json:"ext_net_ip"`
ExtNetMask int `json:"ext_net_mask"`
DefaultGW string `json:"default_gw"`
}
type VinsRecord struct { // represents part of the response from API vins/get
ID int `json:"id"`
Name string `json:"name"`
IPCidr string `json:"network"`
VxLanID int `json:"vxlanId"`
ExternalIP string `json:"externalIP"`
AccountID int `json:"accountId"`
AccountName string `json:"accountName"`
RgID int `json:"rgid"`
RgName string `json:"rgName"`
VNFs map[string]VnfRecord `json:"vnfs"`
Desc string `json:"desc"`
}
const VinsGetAPI = "/restmachine/cloudapi/vins/get"
const VinsCreateInAccountAPI = "/restmachine/cloudapi/vins/createInAccount"
const VinsCreateInRgAPI = "/restmachine/cloudapi/vins/createInRG"
const VinsExtNetConnectAPI = "/restmachine/cloudapi/vins/extNetConnect"
const VinsExtNetDisconnectAPI = "/restmachine/cloudapi/vins/extNetDisconnect"
const VinsDeleteAPI = "/restmachine/cloudapi/vins/delete"
//
// K8s structures
//
//K8sNodeRecord represents a worker/master group
type K8sNodeRecord struct {
ID int `json:"id"`
Name string `json:"name"`
Disk int `json:"disk"`
Cpu int `json:"cpu"`
Num int `json:"num"`
Ram int `json:"ram"`
DetailedInfo []struct {
ID int `json:"id"`
Name string `json:"name"`
} `json:"detailedInfo"`
}
//K8sRecord represents k8s instance
type K8sRecord struct {
AccountID int `json:"accountId"`
AccountName string `json:"accountName"`
CI int `json:"ciId"`
ID int `json:"id"`
Groups struct {
Masters K8sNodeRecord `json:"masters"`
Workers []K8sNodeRecord `json:"workers"`
} `json:"k8sGroups"`
LbID int `json:"lbId"`
Name string `json:"name"`
RgID int `json:"rgId"`
RgName string `json:"rgName"`
}
//LbRecord represents load balancer instance
type LbRecord struct {
ID int `json:"id"`
Name string `json:"name"`
RgID int `json:"rgId"`
VinsID int `json:"vinsId"`
ExtNetID int `json:"extnetId"`
PrimaryNode struct {
BackendIP string `json:"backendIp"`
ComputeID int `json:"computeId"`
FrontendIP string `json:"frontendIp"`
NetworkID int `json:"networkId"`
} `json:"primaryNode"`
}
const K8sCreateAPI = "/restmachine/cloudapi/k8s/create"
const K8sGetAPI = "/restmachine/cloudapi/k8s/get"
const K8sUpdateAPI = "/restmachine/cloudapi/k8s/update"
const K8sDeleteAPI = "/restmachine/cloudapi/k8s/delete"
const K8sWgCreateAPI = "/restmachine/cloudapi/k8s/workersGroupAdd"
const K8sWgDeleteAPI = "/restmachine/cloudapi/k8s/workersGroupDelete"
const K8sWorkerAddAPI = "/restmachine/cloudapi/k8s/workerAdd"
const K8sWorkerDeleteAPI = "/restmachine/cloudapi/k8s/deleteWorkerFromGroup"
const K8sGetConfigAPI = "/restmachine/cloudapi/k8s/getConfig"
const LbGetAPI = "/restmachine/cloudapi/lb/get"
//Blasphemous workaround for parsing Result value
type TaskResult int
func (r *TaskResult) UnmarshalJSON(b []byte) error {
if b[0] == '"' {
b := b[1 : len(b)-1]
if len(b) == 0 {
*r = 0
return nil
}
n, err := strconv.Atoi(string(b))
if err != nil {
return err
}
*r = TaskResult(n)
} else if b[0] == '[' {
res := []interface{}{}
if err := json.Unmarshal(b, &res); err != nil {
return err
}
if n, ok := res[0].(float64); ok {
*r = TaskResult(n)
} else {
return fmt.Errorf("could not unmarshal %v into int", res[0])
}
}
return nil
}
//AsyncTask represents a long task completion status
type AsyncTask struct {
AuditID string `json:"auditId"`
Completed bool `json:"completed"`
Error string `json:"error"`
Log []string `json:"log"`
Result TaskResult `json:"result"`
Stage string `json:"stage"`
Status string `json:"status"`
UpdateTime uint64 `json:"updateTime"`
UpdatedTime uint64 `json:"updatedTime"`
}
const AsyncTaskGetAPI = "/restmachine/cloudapi/tasks/get"
//
// Grid ID structures
//
type LocationRecord struct {
GridID int `json:"gid"`
Id int `json:"id"`
LocationCode string `json:"locationCode"`
Name string `json:"name"`
Flag string `json:"flag"`
}
const LocationsListAPI = "/restmachine/cloudapi/locations/list" // Returns list of GridRecord on success
type LocationsListResp []LocationRecord
//
// Auxiliary structures
//
type SshKeyConfig struct {
User string
SshKey string
UserShell string
}
////////////////////
// IMAGE API //
////////////////////
const imageCreateAPI = "/restmachine/cloudbroker/image/createImage"
const imageSyncCreateAPI = "/restmachine/cloudbroker/image/syncCreateImage"
const imageCreateVirtualAPI = "/restmachine/cloudbroker/image/createVirtual"
const imageCreateCDROMAPI = "/restmachine/cloudbroker/image/createCDROMImage"
const imageListStacksApi = "/restmachine/cloudbroker/image/listStacks"
const imageGetAPI = "/restmachine/cloudbroker/image/get"
const imageListGetAPI = "/restmachine/cloudbroker/image/list"
const imageEditAPI = "/restmachine/cloudbroker/image/edit"
const imageDeleteAPI = "/restmachine/cloudbroker/image/delete"
const imageDeleteCDROMAPI = "/restmachine/cloudbroker/image/deleteCDROMImage"
const imageEnableAPI = "/restmachine/cloudbroker/image/enable"
const imageDisableAPI = "/restmachine/cloudbroker/image/disable"
const imageEditNameAPI = "/restmachine/cloudbroker/image/rename"
const imageLinkAPI = "/restmachine/cloudbroker/image/link"
const imageShareAPI = "/restmachine/cloudbroker/image/share"
const imageComputeciSetAPI = "/restmachine/cloudbroker/image/computeciSet"
const imageComputeciUnsetAPI = "/restmachine/cloudbroker/image/computeciUnset"
const imageUpdateNodesAPI = "/restmachine/cloudbroker/image/updateNodes"
const imageDeleteImagesAPI = "/restmachine/cloudbroker/image/deleteImages"
type History struct {
Guid string `json:"guid"`
Id int `json:"id"`
Timestamp int64 `json:"timestamp"`
}
type Image struct {
ImageId int `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
Gid int `json:"gid"`
Guid int `json:"guid"`
Boottype string `json:"bootType"`
Imagetype string `json:"type"`
Drivers []string `json:"drivers"`
Hotresize bool `json:"hotResize"`
Bootable bool `json:"bootable"`
Username string `json:"username"`
Password string `json:"password"`
AccountId int `json:"accountId"`
UsernameDL string `json:"usernameDL"`
PasswordDL string `json:"passwordDL"`
SepId int `json:"sepId"`
PoolName string `json:"pool"`
Architecture string `json:"architecture"`
UNCPath string `json:"UNCPath"`
LinkTo int `json:"linkTo"`
Status string `json:"status"`
TechStatus string `json:"techStatus"`
Size int `json:"size"`
Version string `json:"version"`
Enabled bool `json:"enabled"`
ComputeciId int `json:"computeciId"`
Milestones int `json:"milestones"`
ProviderName string `json:"provider_name"`
PurgeAttempts int `json:"purgeAttempts"`
ReferenceId string `json:"referenceId"`
ResId string `json:"resId"`
ResName string `json:"resName"`
Rescuecd bool `json:"rescuecd"`
Meta []interface{} `json:"_meta"`
History []History `json:"history"`
LastModified int64 `json:"lastModified"`
Desc string `json:"desc"`
SharedWith []int `json:"sharedWith"`
}
type ImageList []Image
type ImageStack struct {
ApiURL string `json:"apiUrl"`
ApiKey string `json:"apikey"`
AppId string `json:"appId"`
Desc string `json:"desc"`
Drivers []string `json:"drivers"`
Error int `json:"error"`
Guid int `json:"guid"`
Id int `json:"id"`
Images []int `json:"images"`
Login string `json:"login"`
Name string `json:"name"`
Passwd string `json:"passwd"`
ReferenceId string `json:"referenceId"`
Status string `json:"status"`
Type string `json:"type"`
}
type ImageListStacks []ImageStack
/////////////////
// GRID API //
/////////////////
const GridListGetAPI = "/restmachine/cloudbroker/grid/list"
const GridGetAPI = "/restmachine/cloudbroker/grid/get"
type Grid struct {
Flag string `json:"flag"`
Gid int `json:"gid"`
Guid int `json:"guid"`
Id int `json:"id"`
LocationCode string `json:"locationCode"`
Name string `json:"name"`
}
type GridList []Grid
/////////////////////
/// SNAPSHOT API ///
/////////////////////
const snapshotCreateAPI = "/restmachine/cloudapi/compute/snapshotCreate"
const snapshotDeleteAPI = "/restmachine/cloudapi/compute/snapshotDelete"
const snapshotRollbackAPI = "/restmachine/cloudapi/compute/snapshotRollback"
const snapshotListAPI = "/restmachine/cloudapi/compute/snapshotList"
type Snapshot struct {
Disks []int `json:"disks"`
Guid string `json:"guid"`
Label string `json:"label"`
Timestamp uint64 `json:"timestamp"`
}
type SnapshotList []Snapshot
////////////////
/// VGPU API ///
////////////////
const vgpuListAPI = "/restmachine/cloudbroker/vgpu/list"
type VGPU struct {
AccountID int `json:"accountId"`
ID int `json:"id"`
Mode string `json:"mode"`
PgpuID int `json:"pgpuid"`
ProfileID int `json:"profileId"`
RAM int `json:"ram"`
Status string `json:"status"`
Type string `json:"type"`
VmID int `json:"vmid"`
}
/////////////////////////////
// PCIDEVICE //
/////////////////////////////
const pcideviceListAPI = "/restmachine/cloudbroker/pcidevice/list"
const pcideviceDisableAPI = "/restmachine/cloudbroker/pcidevice/disable"
const pcideviceEnableAPI = "/restmachine/cloudbroker/pcidevice/enable"
const pcideviceCreateAPI = "/restmachine/cloudbroker/pcidevice/create"
const pcideviceDeleteAPI = "/restmachine/cloudbroker/pcidevice/delete"
type Pcidevice struct {
CKey string `json:"_ckey"`
Meta []interface{} `json:"_meta"`
Computeid int `json:"computeId"`
Description string `json:"description"`
Guid int `json:"guid"`
HwPath string `json:"hwPath"`
ID int `json:"id"`
Name string `json:"name"`
RgID int `json:"rgId"`
StackID int `json:"stackId"`
Status string `json:"status"`
SystemName string `json:"systemName"`
}
type PcideviceList []Pcidevice
///////////////////
///// SEP API /////
///////////////////
const sepAddConsumerNodesAPI = "/restmachine/cloudbroker/sep/addConsumerNodes"
const sepDelConsumerNodesAPI = "/restmachine/cloudbroker/sep/delConsumerNodes"
const sepAddProviderNodesAPI = "/restmachine/cloudbroker/sep/addProviderNodes"
const sepConfigFieldEditAPI = "/restmachine/cloudbroker/sep/configFieldEdit"
const sepConfigInsertAPI = "/restmachine/cloudbroker/sep/configInsert"
const sepConfigValidateAPI = "/restmachine/cloudbroker/sep/configValidate"
const sepConsumptionAPI = "/restmachine/cloudbroker/sep/consumption"
const sepDecommissionAPI = "/restmachine/cloudbroker/sep/decommission"
const sepEnableAPI = "/restmachine/cloudbroker/sep/enable"
const sepDisableAPI = "/restmachine/cloudbroker/sep/disable"
const sepDiskListAPI = "/restmachine/cloudbroker/sep/diskList"
const sepGetAPI = "/restmachine/cloudbroker/sep/get"
const sepGetConfigAPI = "/restmachine/cloudbroker/sep/getConfig"
const sepGetPoolAPI = "/restmachine/cloudbroker/sep/getPool"
const sepCreateAPI = "/restmachine/cloudbroker/sep/create"
const sepDeleteAPI = "/restmachine/cloudbroker/sep/delete"
const sepListAPI = "/restmachine/cloudbroker/sep/list"
const sepUpdateCapacityLimitAPI = "/restmachine/cloudbroker/sep/updateCapacityLimit"
///Sep Models
type SepConsumptionInd struct {
DiskCount int `json:"disk_count"`
DiskUsage int `json:"disk_usage"`
SnapshotCount int `json:"snapshot_count"`
SnapshotUsage int `json:"snapshot_usage"`
Usage int `json:"usage"`
UsageLimit int `json:"usage_limit"`
}
type SepConsumptionTotal struct {
CapacityLimit int `json:"capacity_limit"`
SepConsumptionInd
}
type SepConsumption struct {
Total SepConsumptionTotal `json:"total"`
Type string `json:"type"`
ByPool map[string]SepConsumptionInd `json:"byPool"`
}
type SepDiskList []int
type Sep struct {
Ckey string `json:"_ckey"`
Meta []interface{} `json:"_meta"`
ConsumedBy []int `json:"consumedBy"`
Desc string `json:"desc"`
Gid int `json:"gid"`
Guid int `json:"guid"`
Id int `json:"id"`
Milestones int `json:"milestones"`
Name string `json:"name"`
ObjStatus string `json:"objStatus"`
ProvidedBy []int `json:"providedBy"`
TechStatus string `json:"techStatus"`
Type string `json:"type"`
Config SepConfig `json:"config"`
}
type SepConfig map[string]interface{}
type SepList []Sep
type SepPool map[string]interface{}

View File

@@ -1,171 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package decort
import (
"fmt"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
// "github.com/hashicorp/terraform-plugin-sdk/terraform"
)
var decsController *ControllerCfg
func Provider() *schema.Provider {
return &schema.Provider{
Schema: map[string]*schema.Schema{
"authenticator": {
Type: schema.TypeString,
Required: true,
StateFunc: stateFuncToLower,
ValidateFunc: validation.StringInSlice([]string{"oauth2", "legacy", "jwt"}, true), // ignore case while validating
Description: "Authentication mode to use when connecting to DECORT cloud API. Should be one of 'oauth2', 'legacy' or 'jwt'.",
},
"oauth2_url": {
Type: schema.TypeString,
Optional: true,
StateFunc: stateFuncToLower,
DefaultFunc: schema.EnvDefaultFunc("DECORT_OAUTH2_URL", nil),
Description: "OAuth2 application URL in 'oauth2' authentication mode.",
},
"controller_url": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
StateFunc: stateFuncToLower,
Description: "URL of DECORT Cloud controller to use. API calls will be directed to this URL.",
},
"user": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("DECORT_USER", nil),
Description: "User name for DECORT cloud API operations in 'legacy' authentication mode.",
},
"password": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("DECORT_PASSWORD", nil),
Description: "User password for DECORT cloud API operations in 'legacy' authentication mode.",
},
"app_id": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("DECORT_APP_ID", nil),
Description: "Application ID to access DECORT cloud API in 'oauth2' authentication mode.",
},
"app_secret": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("DECORT_APP_SECRET", nil),
Description: "Application secret to access DECORT cloud API in 'oauth2' authentication mode.",
},
"jwt": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("DECORT_JWT", nil),
Description: "JWT to access DECORT cloud API in 'jwt' authentication mode.",
},
"allow_unverified_ssl": {
Type: schema.TypeBool,
Optional: true,
Default: false,
Description: "If true, DECORT API will not verify SSL certificates. Use this with caution and in trusted environments only!",
},
},
ResourcesMap: map[string]*schema.Resource{
"decort_resgroup": resourceResgroup(),
"decort_kvmvm": resourceCompute(),
"decort_disk": resourceDisk(),
"decort_vins": resourceVins(),
"decort_pfw": resourcePfw(),
"decort_k8s": resourceK8s(),
"decort_k8s_wg": resourceK8sWg(),
"decort_image": resourceImage(),
"decort_virtual_image": resourceVirtualImage(),
"decort_cdrom_image": resourceCDROMImage(),
"decort_delete_images": resourceDeleteImages(),
"decort_snapshot": resourceSnapshot(),
"decort_pcidevice": resourcePcidevice(),
"decort_sep": resourceSep(),
"decort_sep_config": resourceSepConfig(),
},
DataSourcesMap: map[string]*schema.Resource{
"decort_account": dataSourceAccount(),
"decort_resgroup": dataSourceResgroup(),
"decort_kvmvm": dataSourceCompute(),
"decort_image": dataSourceImage(),
"decort_disk": dataSourceDisk(),
"decort_vins": dataSourceVins(),
"decort_grid": dataSourceGrid(),
"decort_grid_list": dataSourceGridList(),
"decort_image_list": dataSourceImageList(),
"decort_image_list_stacks": dataSourceImageListStacks(),
"decort_snapshot_list": dataSourceSnapshotList(),
"decort_vgpu": dataSourceVGPU(),
"decort_pcidevice": dataSourcePcidevice(),
"decort_pcidevice_list": dataSourcePcideviceList(),
"decort_sep_list": dataSourceSepList(),
"decort_sep": dataSourceSep(),
"decort_sep_consumption": dataSourceSepConsumption(),
"decort_sep_disk_list": dataSourceSepDiskList(),
"decort_sep_config": dataSourceSepConfig(),
"decort_sep_pool": dataSourceSepPool(),
// "decort_pfw": dataSourcePfw(),
},
ConfigureFunc: providerConfigure,
}
}
func stateFuncToLower(argval interface{}) string {
return strings.ToLower(argval.(string))
}
func stateFuncToUpper(argval interface{}) string {
return strings.ToUpper(argval.(string))
}
func providerConfigure(d *schema.ResourceData) (interface{}, error) {
decsController, err := ControllerConfigure(d)
if err != nil {
return nil, err
}
// initialize global default Grid ID - it will be needed to create some resource types, e.g. disks
gridId, err := decsController.utilityLocationGetDefaultGridID()
if err != nil {
return nil, err
}
if gridId == 0 {
return nil, fmt.Errorf("providerConfigure: invalid default Grid ID = 0")
}
return decsController, nil
}

View File

@@ -1,323 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
Technology platfom.
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
*/
package decort
import (
// "encoding/json"
"fmt"
"net/url"
"strconv"
log "github.com/sirupsen/logrus"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
)
func resourceDiskCreate(d *schema.ResourceData, m interface{}) error {
log.Debugf("resourceDiskCreate: called for Disk name %q, Account ID %d", d.Get("name").(string), d.Get("account_id").(int))
controller := m.(*ControllerCfg)
urlValues := &url.Values{}
// accountId, gid, name, description, size, type, sep_id, pool
urlValues.Add("accountId", fmt.Sprintf("%d", d.Get("account_id").(int)))
urlValues.Add("gid", fmt.Sprintf("%d", DefaultGridID)) // we use default Grid ID, which was obtained along with DECORT Controller init
urlValues.Add("name", d.Get("name").(string))
urlValues.Add("size", fmt.Sprintf("%d", d.Get("size").(int)))
urlValues.Add("type", "D") // NOTE: only disks of Data type are managed via plugin
urlValues.Add("sep_id", fmt.Sprintf("%d", d.Get("sep_id").(int)))
urlValues.Add("pool", d.Get("pool").(string))
argVal, argSet := d.GetOk("description")
if argSet {
urlValues.Add("description", argVal.(string))
}
apiResp, err := controller.decortAPICall("POST", DisksCreateAPI, urlValues)
if err != nil {
return err
}
d.SetId(apiResp) // update ID of the resource to tell Terraform that the disk resource exists
diskId, _ := strconv.Atoi(apiResp)
log.Debugf("resourceDiskCreate: new Disk ID / name %d / %s creation sequence complete", diskId, d.Get("name").(string))
// We may reuse dataSourceDiskRead here as we maintain similarity
// between Disk resource and Disk data source schemas
// Disk resource read function will also update resource ID on success, so that Terraform
// will know the resource exists (however, we already did it a few lines before)
return dataSourceDiskRead(d, m)
}
func resourceDiskRead(d *schema.ResourceData, m interface{}) error {
diskFacts, err := utilityDiskCheckPresence(d, m)
if diskFacts == "" {
// if empty string is returned from utilityDiskCheckPresence then there is no
// such Disk and err tells so - just return it to the calling party
d.SetId("") // ensure ID is empty
return err
}
return flattenDisk(d, diskFacts)
}
func resourceDiskUpdate(d *schema.ResourceData, m interface{}) error {
// Update will only change the following attributes of the disk:
// - Size; to keep data safe, shrinking disk is not allowed.
// - Name
//
// Attempt to change disk type will throw an error and mark disk
// resource as partially updated
log.Debugf("resourceDiskUpdate: called for Disk ID / name %s / %s, Account ID %d",
d.Id(), d.Get("name").(string), d.Get("account_id").(int))
d.Partial(true)
controller := m.(*ControllerCfg)
oldSize, newSize := d.GetChange("size")
if oldSize.(int) < newSize.(int) {
log.Debugf("resourceDiskUpdate: resizing disk ID %s - %d GB -> %d GB",
d.Id(), oldSize.(int), newSize.(int))
sizeParams := &url.Values{}
sizeParams.Add("diskId", d.Id())
sizeParams.Add("size", fmt.Sprintf("%d", newSize.(int)))
_, err := controller.decortAPICall("POST", DisksResizeAPI, sizeParams)
if err != nil {
return err
}
d.SetPartial("size")
} else if oldSize.(int) > newSize.(int) {
return fmt.Errorf("resourceDiskUpdate: Disk ID %s - reducing disk size is not allowed", d.Id())
}
oldName, newName := d.GetChange("name")
if oldName.(string) != newName.(string) {
log.Debugf("resourceDiskUpdate: renaming disk ID %d - %s -> %s",
d.Get("disk_id").(int), oldName.(string), newName.(string))
renameParams := &url.Values{}
renameParams.Add("diskId", d.Id())
renameParams.Add("name", newName.(string))
_, err := controller.decortAPICall("POST", DisksRenameAPI, renameParams)
if err != nil {
return err
}
d.SetPartial("name")
}
/*
NOTE: plugin will manage disks of type "Data" only, and type cannot be changed once disk is created
oldType, newType := d.GetChange("type")
if oldType.(string) != newType.(string) {
return fmt.Errorf("resourceDiskUpdate: Disk ID %s - changing type of existing disk not allowed", d.Id())
}
*/
d.Partial(false)
// we may reuse dataSourceDiskRead here as we maintain similarity
// between Compute resource and Compute data source schemas
return dataSourceDiskRead(d, m)
}
func resourceDiskDelete(d *schema.ResourceData, m interface{}) error {
// NOTE: this function tries to detach and destroy target Disk "permanently", so
// there is no way to restore it.
// If, however, the disk is attached to a compute, the method will
// fail (by failing the underpinning DECORt API call, which is issued with detach=false)
log.Debugf("resourceDiskDelete: called for Disk ID / name %d / %s, Account ID %d",
d.Get("disk_id").(int), d.Get("name").(string), d.Get("account_id").(int))
diskFacts, err := utilityDiskCheckPresence(d, m)
if diskFacts == "" {
// the specified Disk does not exist - in this case according to Terraform best practice
// we exit from Destroy method without error
return nil
}
params := &url.Values{}
params.Add("diskId", d.Id())
// NOTE: we are not force-detaching disk from a compute (if attached) thus protecting
// data that may be on that disk from destruction.
// However, this may change in the future, as TF state management logic may want
// to delete disk resource BEFORE it is detached from compute instance, and, while
// perfectly OK from data preservation viewpoint, this is breaking expected TF workflow
// in the eyes of an experienced TF user
params.Add("detach", "0")
params.Add("permanently", "1")
controller := m.(*ControllerCfg)
_, err = controller.decortAPICall("POST", DisksDeleteAPI, params)
if err != nil {
return err
}
return nil
}
func resourceDiskExists(d *schema.ResourceData, m interface{}) (bool, error) {
// Reminder: according to Terraform rules, this function should not modify its ResourceData argument
log.Debugf("resourceDiskExists: called for Disk ID / name %d / %s, Account ID %d",
d.Get("disk_id").(int), d.Get("name").(string), d.Get("account_id").(int))
diskFacts, err := utilityDiskCheckPresence(d, m)
if diskFacts == "" {
if err != nil {
return false, err
}
return false, nil
}
return true, nil
}
func resourceDiskSchemaMake() map[string]*schema.Schema {
rets := map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Optional: true,
Description: "Name of this disk. NOTE: disk names are NOT unique within an account. If disk ID is specified, disk name is ignored.",
},
"disk_id": {
Type: schema.TypeInt,
Optional: true,
Description: "ID of the disk to get. If disk ID is specified, then disk name and account ID are ignored.",
},
"account_id": {
Type: schema.TypeInt,
Optional: true,
Description: "ID of the account this disk belongs to.",
},
"sep_id": {
Type: schema.TypeInt,
Required: true,
ForceNew: true,
ValidateFunc: validation.IntAtLeast(1),
Description: "Storage end-point provider serving this disk. Cannot be changed for existing disk.",
},
"pool": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateFunc: validation.StringIsNotEmpty,
Description: "Pool where this disk is located. Cannot be changed for existing disk.",
},
"size": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: validation.IntAtLeast(1),
Description: "Size of the disk in GB. Note, that existing disks can only be grown in size.",
},
/* We moved "type" attribute to computed attributes section, as plugin manages disks of only
one type - "D", e.g. data disks.
"type": {
Type: schema.TypeString,
Optional: true,
Default: "D",
StateFunc: stateFuncToUpper,
ValidateFunc: validation.StringInSlice([]string{"B", "D"}, false),
Description: "Optional type of this disk. Defaults to D, i.e. data disk. Cannot be changed for existing disks.",
},
*/
"description": {
Type: schema.TypeString,
Optional: true,
Default: "Disk resource managed by Terraform",
Description: "Optional user-defined text description of this disk.",
},
// The rest of the attributes are all computed
"account_name": {
Type: schema.TypeString,
Computed: true,
Description: "Name of the account this disk belongs to.",
},
"image_id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the image, which this disk was cloned from (if ever cloned).",
},
"type": {
Type: schema.TypeString,
Computed: true,
Description: "Type of this disk.",
},
"sep_type": {
Type: schema.TypeString,
Computed: true,
Description: "Type of the storage end-point provider serving this disk.",
},
/*
"snapshots": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource {
Schema: snapshotSubresourceSchemaMake(),
},
Description: "List of user-created snapshots for this disk."
},
*/
}
return rets
}
func resourceDisk() *schema.Resource {
return &schema.Resource{
SchemaVersion: 1,
Create: resourceDiskCreate,
Read: resourceDiskRead,
Update: resourceDiskUpdate,
Delete: resourceDiskDelete,
Exists: resourceDiskExists,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Timeouts: &schema.ResourceTimeout{
Create: &Timeout180s,
Read: &Timeout30s,
Update: &Timeout180s,
Delete: &Timeout60s,
Default: &Timeout60s,
},
Schema: resourceDiskSchemaMake(),
}
}

View File

@@ -1,104 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package decort
import (
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
// "github.com/hashicorp/terraform-plugin-sdk/helper/validation"
)
/*
func makeSshKeysConfig(arg_list []interface{}) (sshkeys []SshKeyConfig, count int) {
count = len(arg_list)
if count < 1 {
return nil, 0
}
sshkeys = make([]SshKeyConfig, count)
var subres_data map[string]interface{}
for index, value := range arg_list {
subres_data = value.(map[string]interface{})
sshkeys[index].User = subres_data["user"].(string)
sshkeys[index].SshKey = subres_data["public_key"].(string)
sshkeys[index].UserShell = subres_data["shell"].(string)
}
return sshkeys, count
}
*/
func makeSshKeysArgString(arg_list []interface{}) string {
// This function expects arg_list = data.Get("ssh_keys"), where "data" is a populated schema for Compute
// Resource (see func resourceCompute() definition) or Compute Data Source (see func dataSourceCompute())
// Prepare a string with username and public ssh key value in a format recognized by cloud-init utility.
// It is designed to be passed as "userdata" argument of virtual machine create API call.
// The following format is expected:
// '{"users": [{"ssh-authorized-keys": ["SSH_PUBCIC_KEY_VALUE"], "shell": "SHELL_VALUE", "name": "USERNAME_VALUE"}, {...}, ]}'
/*
`%s\n
- name: %s\n
ssh-authorized-keys:
- %s\n
shell: /bin/bash`
*/
if len(arg_list) < 1 {
return ""
}
out := `{"users": [`
const UserdataTemplate = `%s{"ssh-authorized-keys": ["%s"], "shell": "%s", "name": "%s"}, `
const out_suffix = `]}`
for _, value := range arg_list {
subres_data := value.(map[string]interface{})
out = fmt.Sprintf(UserdataTemplate, out, subres_data["public_key"].(string), subres_data["shell"].(string), subres_data["user"].(string))
}
out = fmt.Sprintf("%s %s", out, out_suffix)
return out
}
func sshSubresourceSchemaMake() map[string]*schema.Schema {
rets := map[string]*schema.Schema{
"user": {
Type: schema.TypeString,
Required: true,
Description: "Name of the guest OS user of a new compute, for which the following SSH key will be authorized.",
},
"public_key": {
Type: schema.TypeString,
Required: true,
Description: "Public SSH key to authorize to the specified guest OS user on the compute being created.",
},
"shell": {
Type: schema.TypeString,
Optional: true,
Default: "/bin/bash",
Description: "Guest user shell. This parameter is optional, default is /bin/bash.",
},
}
return rets
}

View File

@@ -1,156 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
Technology platfom.
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
*/
package decort
import (
"encoding/json"
"fmt"
"net/url"
log "github.com/sirupsen/logrus"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
// "github.com/hashicorp/terraform-plugin-sdk/helper/validation"
)
func utilityAccountCheckPresence(d *schema.ResourceData, m interface{}) (string, error) {
controller := m.(*ControllerCfg)
urlValues := &url.Values{}
accId, argSet := d.GetOk("account_id")
if argSet {
// get Account right away by its ID
log.Debugf("utilityAccountCheckPresence: locating Account by its ID %d", accId.(int))
urlValues.Add("accountId", fmt.Sprintf("%d", accId.(int)))
apiResp, err := controller.decortAPICall("POST", AccountsGetAPI, urlValues)
if err != nil {
return "", err
}
return apiResp, nil
}
accName, argSet := d.GetOk("name")
if !argSet {
// neither ID nor name - no account for you!
return "", fmt.Errorf("Cannot check account presence if name is empty and no account ID specified")
}
apiResp, err := controller.decortAPICall("POST", AccountsListAPI, urlValues)
if err != nil {
return "", err
}
// log.Debugf("%s", apiResp)
// log.Debugf("utilityAccountCheckPresence: ready to decode response body from %q", AccountsListAPI)
accList := AccountsListResp{}
err = json.Unmarshal([]byte(apiResp), &accList)
if err != nil {
return "", err
}
log.Debugf("utilityAccountCheckPresence: traversing decoded Json of length %d", len(accList))
for index, item := range accList {
// match by account name
if item.Name == accName.(string) {
log.Debugf("utilityAccountCheckPresence: match account name %q / ID %d at index %d",
item.Name, item.ID, index)
// NB: unlike accounts/get API, accounts/list API returns abridged set of account info,
// for instance it does not return quotas
reencodedItem, err := json.Marshal(item)
if err != nil {
return "", err
}
return string(reencodedItem[:]), nil
}
}
return "", fmt.Errorf("Cannot find account name %q", accName.(string))
}
func utilityGetAccountIdBySchema(d *schema.ResourceData, m interface{}) (int, error) {
/*
This function expects schema that contains the following two elements:
"account_name": &schema.Schema{
Type: schema.TypeString,
Required: Optional,
Description: "Name of the account, ....",
},
"account_id": &schema.Schema{
Type: schema.TypeInt,
Optional: true,
Description: "Unique ID of the account, ....",
},
Then it will check, which argument is set, and if account name is present, it will
initiate API calls to the DECORT cloud controller and try to match relevant account
by the name.
NOTE that for some resources (most notably, Resource Group) "account_name" attribute is
marked as "Computed: true", so the only way to fully identify Resource Group is to specify
"account_id", which is marked as "Required: true"
*/
accId, argSet := d.GetOk("account_id")
if argSet {
if accId.(int) > 0 {
return accId.(int), nil
}
return 0, fmt.Errorf("Account ID must be positive")
}
accName, argSet := d.GetOk("account_name")
if !argSet {
return 0, fmt.Errorf("Either non-empty account name or valid account ID must be specified")
}
controller := m.(*ControllerCfg)
urlValues := &url.Values{}
apiResp, err := controller.decortAPICall("POST", AccountsListAPI, urlValues)
if err != nil {
return 0, err
}
model := AccountsListResp{}
err = json.Unmarshal([]byte(apiResp), &model)
if err != nil {
return 0, err
}
log.Debugf("utilityGetAccountIdBySchema: traversing decoded Json of length %d", len(model))
for index, item := range model {
// need to match Account by name
if item.Name == accName.(string) {
log.Debugf("utilityGetAccountIdBySchema: match Account name %q / ID %d at index %d",
item.Name, item.ID, index)
return item.ID, nil
}
}
return 0, fmt.Errorf("Cannot find account %q for the current user. Check account name and your access rights", accName.(string))
}

View File

@@ -1,143 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
Technology platfom.
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
*/
package decort
import (
"encoding/json"
"fmt"
"net/url"
"strconv"
log "github.com/sirupsen/logrus"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
)
func utilityDiskCheckPresence(d *schema.ResourceData, m interface{}) (string, error) {
// This function tries to locate Disk by one of the following algorithms depending on
// the parameters passed:
// - if disk ID is specified -> by disk ID
// - if disk name is specifeid -> by disk name and either account ID or account name
//
// NOTE: disk names are not unique, so the first occurence of this name in the account will
// be returned. There is no such ambiguity when locating disk by its ID.
//
// If succeeded, it returns non empty string that contains JSON formatted facts about the disk
// as returned by disks/get API call.
// Otherwise it returns empty string and meaningful error.
//
// This function does not modify its ResourceData argument, so it is safe to use it as core
// method for resource's Exists method.
//
controller := m.(*ControllerCfg)
urlValues := &url.Values{}
// make it possible to use "read" & "check presence" functions with disk ID set so
// that Import of preexisting Disk resource is possible
idSet := false
theId, err := strconv.Atoi(d.Id())
if err != nil || theId <= 0 {
diskId, argSet := d.GetOk("disk_id")
if argSet {
theId =diskId.(int)
idSet = true
}
} else {
idSet = true
}
if idSet {
// disk ID is specified, try to get disk instance straight by this ID
log.Debugf("utilityDiskCheckPresence: locating disk by its ID %d", theId)
urlValues.Add("diskId", fmt.Sprintf("%d", theId))
diskFacts, err := controller.decortAPICall("POST", DisksGetAPI, urlValues)
if err != nil {
return "", err
}
return diskFacts, nil
}
// ID or disk_di was not set in the schema upon entering this function - rely on Disk name
// and Account ID to find the disk
diskName, argSet := d.GetOk("name")
if !argSet {
// no disk ID and no disk name - we cannot locate disk in this case
return "", fmt.Errorf("Cannot locate disk if name is empty and no disk ID specified")
}
// Valid account ID is required to locate disks
// obtain Account ID by account name - it should not be zero on success
validatedAccountId, err := utilityGetAccountIdBySchema(d, m)
if err != nil {
return "", err
}
urlValues.Add("accountId", fmt.Sprintf("%d", validatedAccountId))
diskFacts, err := controller.decortAPICall("POST", DisksListAPI, urlValues)
if err != nil {
return "", err
}
log.Debugf("utilityDiskCheckPresence: ready to unmarshal string %s", diskFacts)
disksList := DisksListResp{}
err = json.Unmarshal([]byte(diskFacts), &disksList)
if err != nil {
return "", err
}
// log.Printf("%#v", vm_list)
log.Debugf("utilityDiskCheckPresence: traversing decoded JSON of length %d", len(disksList))
for index, item := range disksList {
// need to match disk by name, return the first match
if item.Name == diskName.(string) && item.Status != "DESTROYED" {
log.Debugf("utilityDiskCheckPresence: index %d, matched disk name %q", index, item.Name)
// we found the disk we need - not get detailed information via API call to disks/get
/*
// TODO: this may not be optimal as it initiates one extra call to the DECORT controller
// in spite of the fact that we already have all required information about the disk in
// item variable
//
get_urlValues := &url.Values{}
get_urlValues.Add("diskId", fmt.Sprintf("%d", item.ID))
diskFacts, err = controller.decortAPICall("POST", DisksGetAPI, get_urlValues)
if err != nil {
return "", err
}
return diskFacts, nil
*/
reencodedItem, err := json.Marshal(item)
if err != nil {
return "", err
}
return string(reencodedItem[:]), nil
}
}
return "", nil // there should be no error if disk does not exist
}

View File

@@ -1,48 +0,0 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
Technology platfom.
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
*/
package decort
import (
"strings"
)
func Jo2JSON(arg_str string) string {
// DECORT API historically returns response in the form of Python dictionary, which generally
// looks like JSON, but does not comply with JSON syntax.
// For Golang JSON Unmarshal to work properly we need to pre-process API response as follows:
ret_string := strings.Replace(string(arg_str), "u'", "\"", -1)
ret_string = strings.Replace(ret_string, "'", "\"", -1)
ret_string = strings.Replace(ret_string, ": False", ": false", -1)
ret_string = strings.Replace(ret_string, ": True", ": true", -1)
ret_string = strings.Replace(ret_string, "null", "\"\"", -1)
ret_string = strings.Replace(ret_string, "None", "\"\"", -1)
// fix for incorrect handling of usage info
// ret_string = strings.Replace(ret_string, "<", "\"", -1)
// ret_string = strings.Replace(ret_string, ">", "\"", -1)
return ret_string
}

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account Data Source - terraform-provider-decort"
page_title: "decort_account Data Source - decort"
subcategory: ""
description: |-
@@ -15,23 +15,128 @@ description: |-
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number)
### Optional
- **account_id** (Number) Unique ID of the account. If account ID is specified, then account name is ignored.
- **id** (String) The ID of this resource.
- **name** (String) Name of the account. Names are case sensitive and unique.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **status** (String) Current status of the account.
- `account_name` (String)
- `acl` (List of Object) (see [below for nested schema](#nestedatt--acl))
- `ckey` (String)
- `company` (String)
- `companyurl` (String)
- `computes` (List of Object) (see [below for nested schema](#nestedatt--computes))
- `created_by` (String)
- `created_time` (Number)
- `dc_location` (String)
- `deactivation_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `displayname` (String)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `machines` (List of Object) (see [below for nested schema](#nestedatt--machines))
- `meta` (List of String)
- `resource_limits` (List of Object) (see [below for nested schema](#nestedatt--resource_limits))
- `resources` (List of Object) (see [below for nested schema](#nestedatt--resources))
- `send_access_emails` (Boolean)
- `service_account` (Boolean)
- `status` (String)
- `updated_time` (Number)
- `version` (Number)
- `vins` (List of Number)
- `vinses` (Number)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)
<a id="nestedatt--acl"></a>
### Nested Schema for `acl`
Read-Only:
- `can_be_deleted` (Boolean)
- `explicit` (Boolean)
- `guid` (String)
- `right` (String)
- `status` (String)
- `type` (String)
- `user_group_id` (String)
<a id="nestedatt--computes"></a>
### Nested Schema for `computes`
Read-Only:
- `started` (Number)
- `stopped` (Number)
<a id="nestedatt--machines"></a>
### Nested Schema for `machines`
Read-Only:
- `halted` (Number)
- `running` (Number)
<a id="nestedatt--resource_limits"></a>
### Nested Schema for `resource_limits`
Read-Only:
- `cu_c` (Number)
- `cu_d` (Number)
- `cu_i` (Number)
- `cu_m` (Number)
- `cu_np` (Number)
- `gpu_units` (Number)
<a id="nestedatt--resources"></a>
### Nested Schema for `resources`
Read-Only:
- `current` (List of Object) (see [below for nested schema](#nestedobjatt--resources--current))
- `reserved` (List of Object) (see [below for nested schema](#nestedobjatt--resources--reserved))
<a id="nestedobjatt--resources--current"></a>
### Nested Schema for `resources.current`
Read-Only:
- `cpu` (Number)
- `disksize` (Number)
- `extips` (Number)
- `exttraffic` (Number)
- `gpu` (Number)
- `ram` (Number)
<a id="nestedobjatt--resources--reserved"></a>
### Nested Schema for `resources.reserved`
Read-Only:
- `cpu` (Number)
- `disksize` (Number)
- `extips` (Number)
- `exttraffic` (Number)
- `gpu` (Number)
- `ram` (Number)

View File

@@ -0,0 +1,51 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_audits_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_audits_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) Search Result (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `call` (String)
- `responsetime` (Number)
- `statuscode` (Number)
- `timestamp` (Number)
- `user` (String)

View File

@@ -0,0 +1,66 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_computes_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_computes_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) Search Result (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `compute_id` (Number)
- `compute_name` (String)
- `cpus` (Number)
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `ram` (Number)
- `registered` (Boolean)
- `rg_id` (Number)
- `rg_name` (String)
- `status` (String)
- `tech_status` (String)
- `total_disks_size` (Number)
- `updated_by` (String)
- `updated_time` (Number)
- `user_managed` (Boolean)
- `vins_connected` (Number)

View File

@@ -0,0 +1,44 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_consumed_units Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_consumed_units (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `cu_c` (Number)
- `cu_d` (Number)
- `cu_i` (Number)
- `cu_m` (Number)
- `cu_np` (Number)
- `gpu_units` (Number)
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,40 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_consumed_units_by_type Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_consumed_units_by_type (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
- `cu_type` (String) cloud unit resource type
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `cu_result` (Number)
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,63 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_deleted_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_deleted_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `page` (Number) Page number
- `size` (Number) Page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `acl` (List of Object) (see [below for nested schema](#nestedobjatt--items--acl))
- `created_time` (Number)
- `deleted_time` (Number)
- `status` (String)
- `updated_time` (Number)
<a id="nestedobjatt--items--acl"></a>
### Nested Schema for `items.acl`
Read-Only:
- `explicit` (Boolean)
- `guid` (String)
- `right` (String)
- `status` (String)
- `type` (String)
- `user_group_id` (String)

View File

@@ -0,0 +1,52 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_disks_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_disks_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) Search Result (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `disk_id` (Number)
- `disk_name` (String)
- `pool` (String)
- `sep_id` (Number)
- `size_max` (Number)
- `type` (String)

View File

@@ -0,0 +1,67 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_flipgroups_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_flipgroups_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) Search Result (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `client_type` (String)
- `conn_type` (String)
- `created_by` (String)
- `created_time` (Number)
- `default_gw` (String)
- `deleted_by` (String)
- `deleted_time` (Number)
- `desc` (String)
- `fg_id` (Number)
- `fg_name` (String)
- `gid` (Number)
- `guid` (Number)
- `ip` (String)
- `milestones` (Number)
- `net_id` (Number)
- `net_type` (String)
- `netmask` (Number)
- `status` (String)
- `updated_by` (String)
- `updated_time` (Number)

View File

@@ -0,0 +1,63 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `page` (Number) Page number
- `size` (Number) Page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `acl` (List of Object) (see [below for nested schema](#nestedobjatt--items--acl))
- `created_time` (Number)
- `deleted_time` (Number)
- `status` (String)
- `updated_time` (Number)
<a id="nestedobjatt--items--acl"></a>
### Nested Schema for `items.acl`
Read-Only:
- `explicit` (Boolean)
- `guid` (String)
- `right` (String)
- `status` (String)
- `type` (String)
- `user_group_id` (String)

View File

@@ -0,0 +1,44 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_reserved_units Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_reserved_units (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `cu_c` (Number)
- `cu_d` (Number)
- `cu_i` (Number)
- `cu_m` (Number)
- `cu_np` (Number)
- `gpu_units` (Number)
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,115 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_rg_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_rg_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) Search Result (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `computes` (List of Object) (see [below for nested schema](#nestedobjatt--items--computes))
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `milestones` (Number)
- `resources` (List of Object) (see [below for nested schema](#nestedobjatt--items--resources))
- `rg_id` (Number)
- `rg_name` (String)
- `status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `vinses` (Number)
<a id="nestedobjatt--items--computes"></a>
### Nested Schema for `items.computes`
Read-Only:
- `started` (Number)
- `stopped` (Number)
<a id="nestedobjatt--items--resources"></a>
### Nested Schema for `items.resources`
Read-Only:
- `consumed` (List of Object) (see [below for nested schema](#nestedobjatt--items--resources--consumed))
- `limits` (List of Object) (see [below for nested schema](#nestedobjatt--items--resources--limits))
- `reserved` (List of Object) (see [below for nested schema](#nestedobjatt--items--resources--reserved))
<a id="nestedobjatt--items--resources--consumed"></a>
### Nested Schema for `items.resources.consumed`
Read-Only:
- `cpu` (Number)
- `disksize` (Number)
- `extips` (Number)
- `exttraffic` (Number)
- `gpu` (Number)
- `ram` (Number)
<a id="nestedobjatt--items--resources--limits"></a>
### Nested Schema for `items.resources.limits`
Read-Only:
- `cpu` (Number)
- `disksize` (Number)
- `extips` (Number)
- `exttraffic` (Number)
- `gpu` (Number)
- `ram` (Number)
<a id="nestedobjatt--items--resources--reserved"></a>
### Nested Schema for `items.resources.reserved`
Read-Only:
- `cpu` (Number)
- `disksize` (Number)
- `extips` (Number)
- `exttraffic` (Number)
- `gpu` (Number)
- `ram` (Number)

View File

@@ -0,0 +1,56 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_templates_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_templates_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) Search Result (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `desc` (String)
- `public` (Boolean)
- `size` (Number)
- `status` (String)
- `template_id` (Number)
- `template_name` (String)
- `type` (String)
- `unc_path` (String)
- `username` (String)

View File

@@ -0,0 +1,63 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account_vins_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_account_vins_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) ID of the account
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) Search Result (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `computes` (Number)
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `external_ip` (String)
- `network` (String)
- `pri_vnf_dev_id` (Number)
- `rg_id` (Number)
- `rg_name` (String)
- `status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `vin_id` (Number)
- `vin_name` (String)

View File

@@ -0,0 +1,90 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_bservice Data Source - decort"
subcategory: ""
description: |-
---
# decort_bservice (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `service_id` (Number)
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `account_id` (Number)
- `account_name` (String)
- `base_domain` (String)
- `computes` (List of Object) (see [below for nested schema](#nestedatt--computes))
- `cpu_total` (Number)
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `disk_total` (String)
- `gid` (Number)
- `groups` (List of Number)
- `groups_name` (List of String)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `milestones` (Number)
- `parent_srv_id` (Number)
- `parent_srv_type` (String)
- `ram_total` (Number)
- `rg_id` (Number)
- `rg_name` (String)
- `service_name` (String)
- `snapshots` (List of Object) (see [below for nested schema](#nestedatt--snapshots))
- `ssh_key` (String)
- `ssh_user` (String)
- `status` (String)
- `tech_status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `user_managed` (Boolean)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--computes"></a>
### Nested Schema for `computes`
Read-Only:
- `compgroup_id` (Number)
- `compgroup_name` (String)
- `compgroup_role` (String)
- `id` (Number)
- `name` (String)
<a id="nestedatt--snapshots"></a>
### Nested Schema for `snapshots`
Read-Only:
- `guid` (String)
- `label` (String)
- `timestamp` (Number)
- `valid` (Boolean)

View File

@@ -0,0 +1,68 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_bservice_deleted_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_bservice_deleted_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `account_id` (Number) ID of the account to query for BasicService instances
- `page` (Number) Page number
- `rg_id` (Number) ID of the resource group to query for BasicService instances
- `size` (Number) Page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `base_domain` (String)
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `gid` (Number)
- `groups` (List of Number)
- `guid` (Number)
- `parent_srv_id` (Number)
- `parent_srv_type` (String)
- `rg_id` (Number)
- `rg_name` (String)
- `service_id` (Number)
- `service_name` (String)
- `ssh_user` (String)
- `status` (String)
- `tech_status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `user_managed` (Boolean)

View File

@@ -0,0 +1,88 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_bservice_group Data Source - decort"
subcategory: ""
description: |-
---
# decort_bservice_group (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `compgroup_id` (Number)
- `service_id` (Number)
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `account_id` (Number)
- `account_name` (String)
- `compgroup_name` (String)
- `computes` (List of Object) (see [below for nested schema](#nestedatt--computes))
- `consistency` (Boolean)
- `cpu` (Number)
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `disk` (Number)
- `driver` (String)
- `extnets` (List of Number)
- `gid` (Number)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `image_id` (Number)
- `milestones` (Number)
- `parents` (List of Number)
- `ram` (Number)
- `rg_id` (Number)
- `rg_name` (String)
- `role` (String)
- `sep_id` (Number)
- `seq_no` (Number)
- `status` (String)
- `tech_status` (String)
- `timeout_start` (Number)
- `updated_by` (String)
- `updated_time` (Number)
- `vinses` (List of Number)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--computes"></a>
### Nested Schema for `computes`
Read-Only:
- `id` (Number)
- `ip_addresses` (List of String)
- `name` (String)
- `os_users` (List of Object) (see [below for nested schema](#nestedobjatt--computes--os_users))
<a id="nestedobjatt--computes--os_users"></a>
### Nested Schema for `computes.os_users`
Read-Only:
- `login` (String)
- `password` (String)

View File

@@ -0,0 +1,68 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_bservice_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_bservice_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `account_id` (Number) ID of the account to query for BasicService instances
- `page` (Number) Page number
- `rg_id` (Number) ID of the resource group to query for BasicService instances
- `size` (Number) Page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `base_domain` (String)
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `gid` (Number)
- `groups` (List of Number)
- `guid` (Number)
- `parent_srv_id` (Number)
- `parent_srv_type` (String)
- `rg_id` (Number)
- `rg_name` (String)
- `service_id` (Number)
- `service_name` (String)
- `ssh_user` (String)
- `status` (String)
- `tech_status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `user_managed` (Boolean)

View File

@@ -0,0 +1,50 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_bservice_snapshot_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_bservice_snapshot_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `service_id` (Number) ID of the BasicService instance
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `guid` (String)
- `label` (String)
- `timestamp` (Number)
- `valid` (Boolean)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_disk Data Source - terraform-provider-decort"
page_title: "decort_disk Data Source - decort"
subcategory: ""
description: |-
@@ -15,31 +15,100 @@ description: |-
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `disk_id` (Number)
### Optional
- **account_id** (Number) ID of the account this disk belongs to. If disk ID is specified, then account ID is ignored.
- **disk_id** (Number) ID of the disk to get. If disk ID is specified, then disk name and account ID are ignored.
- **id** (String) The ID of this resource.
- **name** (String) Name of this disk. NOTE: disk names are NOT unique within an account. If disk ID is specified, disk name is ignored.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **account_name** (String) Name of the account this disk belongs to. If account ID is specified, account name is ignored.
- **description** (String) User-defined text description of this disk.
- **image_id** (Number) ID of the image, which this disk was cloned from (valid for disk clones only).
- **pool** (String) Pool where this disk is located.
- **sep_id** (Number) Storage end-point provider serving this disk.
- **sep_type** (String) Type of the storage end-point provider serving this disk.
- **size** (Number) Size of the disk in GB.
- **type** (String) Type of this disk. E.g. D for data disks, B for boot.
- `account_id` (Number)
- `account_name` (String)
- `acl` (String)
- `boot_partition` (Number)
- `compute_id` (Number)
- `compute_name` (String)
- `created_time` (Number)
- `deleted_time` (Number)
- `desc` (String)
- `destruction_time` (Number)
- `devicename` (String)
- `disk_name` (String)
- `disk_path` (String)
- `gid` (Number)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `image_id` (Number)
- `images` (List of String)
- `iotune` (List of Object) (see [below for nested schema](#nestedatt--iotune))
- `iqn` (String)
- `login` (String)
- `milestones` (Number)
- `order` (Number)
- `params` (String)
- `parent_id` (Number)
- `passwd` (String)
- `pci_slot` (Number)
- `pool` (String)
- `purge_attempts` (Number)
- `purge_time` (Number)
- `reality_device_number` (Number)
- `reference_id` (String)
- `res_id` (String)
- `res_name` (String)
- `role` (String)
- `sep_id` (Number)
- `sep_type` (String)
- `size_max` (Number)
- `size_used` (Number)
- `snapshots` (List of Object) (see [below for nested schema](#nestedatt--snapshots))
- `status` (String)
- `tech_status` (String)
- `type` (String)
- `vmid` (Number)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)
<a id="nestedatt--iotune"></a>
### Nested Schema for `iotune`
Read-Only:
- `read_bytes_sec` (Number)
- `read_bytes_sec_max` (Number)
- `read_iops_sec` (Number)
- `read_iops_sec_max` (Number)
- `size_iops_sec` (Number)
- `total_bytes_sec` (Number)
- `total_bytes_sec_max` (Number)
- `total_iops_sec` (Number)
- `total_iops_sec_max` (Number)
- `write_bytes_sec` (Number)
- `write_bytes_sec_max` (Number)
- `write_iops_sec` (Number)
- `write_iops_sec_max` (Number)
<a id="nestedatt--snapshots"></a>
### Nested Schema for `snapshots`
Read-Only:
- `guid` (String)
- `label` (String)
- `res_id` (String)
- `snap_set_guid` (String)
- `snap_set_time` (Number)
- `timestamp` (Number)

View File

@@ -0,0 +1,124 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_disk_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_disk_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `account_id` (Number) ID of the account the disks belong to
- `page` (Number) Page number
- `size` (Number) Page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `type` (String) type of the disks
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `acl` (String)
- `boot_partition` (Number)
- `compute_id` (Number)
- `compute_name` (String)
- `created_time` (Number)
- `deleted_time` (Number)
- `desc` (String)
- `destruction_time` (Number)
- `devicename` (String)
- `disk_id` (Number)
- `disk_name` (String)
- `disk_path` (String)
- `gid` (Number)
- `guid` (Number)
- `image_id` (Number)
- `images` (List of String)
- `iotune` (List of Object) (see [below for nested schema](#nestedobjatt--items--iotune))
- `iqn` (String)
- `login` (String)
- `machine_id` (Number)
- `machine_name` (String)
- `milestones` (Number)
- `order` (Number)
- `params` (String)
- `parent_id` (Number)
- `passwd` (String)
- `pci_slot` (Number)
- `pool` (String)
- `purge_attempts` (Number)
- `purge_time` (Number)
- `reality_device_number` (Number)
- `reference_id` (String)
- `res_id` (String)
- `res_name` (String)
- `role` (String)
- `sep_id` (Number)
- `sep_type` (String)
- `size_max` (Number)
- `size_used` (Number)
- `snapshots` (List of Object) (see [below for nested schema](#nestedobjatt--items--snapshots))
- `status` (String)
- `tech_status` (String)
- `type` (String)
- `vmid` (Number)
<a id="nestedobjatt--items--iotune"></a>
### Nested Schema for `items.iotune`
Read-Only:
- `read_bytes_sec` (Number)
- `read_bytes_sec_max` (Number)
- `read_iops_sec` (Number)
- `read_iops_sec_max` (Number)
- `size_iops_sec` (Number)
- `total_bytes_sec` (Number)
- `total_bytes_sec_max` (Number)
- `total_iops_sec` (Number)
- `total_iops_sec_max` (Number)
- `write_bytes_sec` (Number)
- `write_bytes_sec_max` (Number)
- `write_iops_sec` (Number)
- `write_iops_sec_max` (Number)
<a id="nestedobjatt--items--snapshots"></a>
### Nested Schema for `items.snapshots`
Read-Only:
- `guid` (String)
- `label` (String)
- `res_id` (String)
- `snap_set_guid` (String)
- `snap_set_time` (Number)
- `timestamp` (Number)

View File

@@ -0,0 +1,98 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_extnet Data Source - decort"
subcategory: ""
description: |-
---
# decort_extnet (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `net_id` (Number)
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `check__ips` (List of String)
- `check_ips` (List of String)
- `ckey` (String)
- `default` (Boolean)
- `default_qos` (List of Object) (see [below for nested schema](#nestedatt--default_qos))
- `desc` (String)
- `dns` (List of String)
- `excluded` (List of String)
- `free_ips` (Number)
- `gateway` (String)
- `gid` (Number)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `ipcidr` (String)
- `meta` (List of String) meta
- `milestones` (Number)
- `net_name` (String)
- `network` (String)
- `network_id` (Number)
- `pre_reservations_num` (Number)
- `prefix` (Number)
- `pri_vnf_dev_id` (Number)
- `reservations` (List of Object) (see [below for nested schema](#nestedatt--reservations))
- `shared_with` (List of Number)
- `status` (String)
- `vlan_id` (Number)
- `vnfs` (List of Object) (see [below for nested schema](#nestedatt--vnfs))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--default_qos"></a>
### Nested Schema for `default_qos`
Read-Only:
- `e_rate` (Number)
- `guid` (String)
- `in_burst` (Number)
- `in_rate` (Number)
<a id="nestedatt--reservations"></a>
### Nested Schema for `reservations`
Read-Only:
- `client_type` (String)
- `desc` (String)
- `domainname` (String)
- `hostname` (String)
- `ip` (String)
- `mac` (String)
- `type` (String)
- `vm_id` (Number)
<a id="nestedatt--vnfs"></a>
### Nested Schema for `vnfs`
Read-Only:
- `dhcp` (Number)

View File

@@ -0,0 +1,63 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_extnet_computes_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_extnet_computes_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_id` (Number) filter by account ID
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `extnets` (List of Object) (see [below for nested schema](#nestedobjatt--items--extnets))
- `id` (Number)
- `name` (String)
- `rg_id` (Number)
- `rg_name` (String)
<a id="nestedobjatt--items--extnets"></a>
### Nested Schema for `items.extnets`
Read-Only:
- `ipaddr` (String)
- `ipcidr` (String)
- `name` (String)
- `net_id` (Number)

View File

@@ -0,0 +1,35 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_extnet_default Data Source - decort"
subcategory: ""
description: |-
---
# decort_extnet_default (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `net_id` (Number)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,48 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_extnet_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_extnet_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `account_id` (Number) filter by account ID
- `page` (Number) Page number
- `size` (Number) Page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `ipcidr` (String)
- `name` (String)
- `net_id` (Number)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_grid Data Source - terraform-provider-decort"
page_title: "decort_grid Data Source - decort"
subcategory: ""
description: |-
@@ -17,27 +17,27 @@ description: |-
### Required
- **grid_id** (Number)
- `grid_id` (Number)
### Optional
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **flag** (String)
- **gid** (Number)
- **guid** (Number)
- **id** (Number) The ID of this resource.
- **location_code** (String)
- **name** (String)
- `flag` (String)
- `gid` (Number)
- `guid` (Number)
- `id` (Number) The ID of this resource.
- `location_code` (String)
- `name` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_grid_list Data Source - terraform-provider-decort"
page_title: "decort_grid_list Data Source - decort"
subcategory: ""
description: |-
@@ -17,22 +17,22 @@ description: |-
### Optional
- **id** (String) The ID of this resource.
- **page** (Number) page number
- **size** (Number) page size
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `page` (Number) page number
- `size` (Number) page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **items** (List of Object) grid list (see [below for nested schema](#nestedatt--items))
- `id` (String) The ID of this resource.
- `items` (List of Object) grid list (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
@@ -40,11 +40,11 @@ Optional:
Read-Only:
- **flag** (String)
- **gid** (Number)
- **guid** (Number)
- **id** (Number)
- **location_code** (String)
- **name** (String)
- `flag` (String)
- `gid` (Number)
- `guid` (Number)
- `id` (Number)
- `location_code` (String)
- `name` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_image Data Source - terraform-provider-decort"
page_title: "decort_image Data Source - decort"
subcategory: ""
description: |-
@@ -17,61 +17,58 @@ description: |-
### Required
- **image_id** (Number) image id
- `image_id` (Number)
### Optional
- **id** (String) The ID of this resource.
- **shared_with** (List of Number)
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `show_all` (Boolean)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **account_id** (Number) AccountId to make the image exclusive
- **architecture** (String) binary architecture of this image, one of X86_64 of PPC64_LE
- **boot_type** (String) Boot type of image bios or uefi
- **bootable** (Boolean) Does this image boot OS
- **computeci_id** (Number)
- **desc** (String)
- **drivers** (List of String) List of types of compute suitable for image. Example: [ "KVM_X86" ]
- **enabled** (Boolean)
- **gid** (Number) grid (platform) ID where this template should be create in
- **guid** (Number)
- **history** (List of Object) (see [below for nested schema](#nestedatt--history))
- **hot_resize** (Boolean) Does this machine supports hot resize
- **image_type** (String) Image type linux, windows or other
- **last_modified** (Number)
- **link_to** (Number)
- **meta** (List of String) meta
- **milestones** (Number)
- **name** (String) Name of the rescue disk
- **password** (String) Optional password for the image
- **password_dl** (String) password for upload binary media
- **permanently** (Boolean) Whether to completely delete the image
- **pool_name** (String) pool for image create
- **provider_name** (String)
- **purge_attempts** (Number)
- **reference_id** (String)
- **res_id** (String)
- **res_name** (String)
- **rescuecd** (Boolean)
- **sep_id** (Number) storage endpoint provider ID
- **size** (Number) image size
- **status** (String) status
- **tech_status** (String) tech atatus
- **unc_path** (String) unc path
- **url** (String) URL where to download media from
- **username** (String) Optional username for the image
- **username_dl** (String) username for upload binary media
- **version** (String) version
- `account_id` (Number)
- `acl` (String)
- `architecture` (String)
- `boot_type` (String)
- `bootable` (Boolean)
- `ckey` (String)
- `compute_ci_id` (Number)
- `deleted_time` (String)
- `desc` (String)
- `drivers` (List of String)
- `enabled` (Boolean)
- `gid` (Number)
- `guid` (Number)
- `history` (List of Object) (see [below for nested schema](#nestedatt--history))
- `hot_resize` (Boolean)
- `id` (String) The ID of this resource.
- `image_name` (String)
- `last_modified` (Number)
- `link_to` (Number)
- `milestones` (Number)
- `password` (String)
- `pool_name` (String)
- `provider_name` (String)
- `purge_attempts` (Number)
- `res_id` (String)
- `rescuecd` (Boolean)
- `sep_id` (Number)
- `shared_with` (List of Number)
- `size` (Number)
- `status` (String)
- `tech_status` (String)
- `type` (String)
- `unc_path` (String)
- `username` (String)
- `version` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)
<a id="nestedatt--history"></a>
@@ -79,8 +76,8 @@ Optional:
Read-Only:
- **guid** (String)
- **id** (Number)
- **timestamp** (Number)
- `guid` (String)
- `id` (Number)
- `timestamp` (Number)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_image_list Data Source - terraform-provider-decort"
page_title: "decort_image_list Data Source - decort"
subcategory: ""
description: |-
@@ -17,24 +17,23 @@ description: |-
### Optional
- **id** (String) The ID of this resource.
- **page** (Number) page number
- **sep_id** (Number) filter images by storage endpoint provider ID
- **shared_with** (Number) filter images by account ID availability
- **size** (Number) page size
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `account_id` (Number) optional account ID to include account images
- `page` (Number) page number
- `size` (Number) page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **items** (List of Object) image list (see [below for nested schema](#nestedatt--items))
- `id` (String) The ID of this resource.
- `items` (List of Object) image list (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
@@ -42,53 +41,23 @@ Optional:
Read-Only:
- **account_id** (Number)
- **architecture** (String)
- **boot_type** (String)
- **bootable** (Boolean)
- **computeci_id** (Number)
- **desc** (String)
- **drivers** (List of String)
- **enabled** (Boolean)
- **gid** (Number)
- **guid** (Number)
- **history** (List of Object) (see [below for nested schema](#nestedobjatt--items--history))
- **hot_resize** (Boolean)
- **image_id** (Number)
- **image_type** (String)
- **last_modified** (Number)
- **link_to** (Number)
- **meta** (List of String)
- **milestones** (Number)
- **name** (String)
- **password** (String)
- **password_dl** (String)
- **permanently** (Boolean)
- **pool_name** (String)
- **provider_name** (String)
- **purge_attempts** (Number)
- **reference_id** (String)
- **res_id** (String)
- **res_name** (String)
- **rescuecd** (Boolean)
- **sep_id** (Number)
- **shared_with** (List of Number)
- **size** (Number)
- **status** (String)
- **tech_status** (String)
- **unc_path** (String)
- **url** (String)
- **username** (String)
- **username_dl** (String)
- **version** (String)
<a id="nestedobjatt--items--history"></a>
### Nested Schema for `items.history`
Read-Only:
- **guid** (String)
- **id** (Number)
- **timestamp** (Number)
- `account_id` (Number)
- `architecture` (String)
- `boot_type` (String)
- `bootable` (Boolean)
- `cdrom` (Boolean)
- `desc` (String)
- `drivers` (List of String)
- `hot_resize` (Boolean)
- `image_id` (Number)
- `image_name` (String)
- `link_to` (Number)
- `pool_name` (String)
- `sep_id` (Number)
- `size` (Number)
- `status` (String)
- `type` (String)
- `username` (String)
- `virtual` (Boolean)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_image_list_stacks Data Source - terraform-provider-decort"
page_title: "decort_image_list_stacks Data Source - decort"
subcategory: ""
description: |-
@@ -17,26 +17,26 @@ description: |-
### Required
- **image_id** (Number) image id
- `image_id` (Number) image id
### Optional
- **id** (String) The ID of this resource.
- **page** (Number) page number
- **size** (Number) page size
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `page` (Number) page number
- `size` (Number) page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **items** (List of Object) items of stacks list (see [below for nested schema](#nestedatt--items))
- `id` (String) The ID of this resource.
- `items` (List of Object) items of stacks list (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
@@ -44,20 +44,20 @@ Optional:
Read-Only:
- **api_key** (String)
- **api_url** (String)
- **app_id** (String)
- **desc** (String)
- **drivers** (List of String)
- **error** (Number)
- **guid** (Number)
- **id** (Number)
- **images** (List of Number)
- **login** (String)
- **name** (String)
- **passwd** (String)
- **reference_id** (String)
- **status** (String)
- **type** (String)
- `api_key` (String)
- `api_url` (String)
- `app_id` (String)
- `desc` (String)
- `drivers` (List of String)
- `error` (Number)
- `guid` (Number)
- `id` (Number)
- `images` (List of Number)
- `login` (String)
- `name` (String)
- `passwd` (String)
- `reference_id` (String)
- `status` (String)
- `type` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_kvmvm Data Source - terraform-provider-decort"
page_title: "decort_kvmvm Data Source - decort"
subcategory: ""
description: |-
@@ -17,46 +17,46 @@ description: |-
### Optional
- **compute_id** (Number) ID of the compute instance. If ID is specified, name and resource group ID are ignored.
- **id** (String) The ID of this resource.
- **name** (String) Name of this compute instance. NOTE: this parameter is case sensitive.
- **network** (Block Set, Max: 8) Network connection(s) for this compute. (see [below for nested schema](#nestedblock--network))
- **rg_id** (Number) ID of the resource group where this compute instance is located.
- **started** (Boolean) Is compute started.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `compute_id` (Number) ID of the compute instance. If ID is specified, name and resource group ID are ignored.
- `name` (String) Name of this compute instance. NOTE: this parameter is case sensitive.
- `network` (Block Set, Max: 8) Network connection(s) for this compute. (see [below for nested schema](#nestedblock--network))
- `rg_id` (Number) ID of the resource group where this compute instance is located.
- `started` (Boolean) Is compute started.
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **account_id** (Number) ID of the account this compute instance belongs to.
- **account_name** (String) Name of the account this compute instance belongs to.
- **boot_disk_id** (Number) This compute instance boot disk ID.
- **boot_disk_size** (Number) This compute instance boot disk size in GB.
- **cloud_init** (String) Placeholder for cloud_init parameters.
- **cpu** (Number) Number of CPUs allocated for this compute instance.
- **description** (String) User-defined text description of this compute instance.
- **driver** (String) Hardware architecture of this compute instance.
- **extra_disks** (Set of Number) IDs of the extra disk(s) attached to this compute.
- **image_id** (Number) ID of the OS image this compute instance is based on.
- **image_name** (String) Name of the OS image this compute instance is based on.
- **os_users** (List of Object) Guest OS users provisioned on this compute instance. (see [below for nested schema](#nestedatt--os_users))
- **ram** (Number) Amount of RAM in MB allocated for this compute instance.
- **rg_name** (String) Name of the resource group where this compute instance is located.
- `account_id` (Number) ID of the account this compute instance belongs to.
- `account_name` (String) Name of the account this compute instance belongs to.
- `boot_disk_id` (Number) This compute instance boot disk ID.
- `boot_disk_size` (Number) This compute instance boot disk size in GB.
- `cloud_init` (String) Placeholder for cloud_init parameters.
- `cpu` (Number) Number of CPUs allocated for this compute instance.
- `description` (String) User-defined text description of this compute instance.
- `driver` (String) Hardware architecture of this compute instance.
- `extra_disks` (Set of Number) IDs of the extra disk(s) attached to this compute.
- `id` (String) The ID of this resource.
- `image_id` (Number) ID of the OS image this compute instance is based on.
- `image_name` (String) Name of the OS image this compute instance is based on.
- `os_users` (List of Object) Guest OS users provisioned on this compute instance. (see [below for nested schema](#nestedatt--os_users))
- `ram` (Number) Amount of RAM in MB allocated for this compute instance.
- `rg_name` (String) Name of the resource group where this compute instance is located.
<a id="nestedblock--network"></a>
### Nested Schema for `network`
Required:
- **net_id** (Number) ID of the network for this connection.
- **net_type** (String) Type of the network for this connection, either EXTNET or VINS.
- `net_id` (Number) ID of the network for this connection.
- `net_type` (String) Type of the network for this connection, either EXTNET or VINS.
Optional:
- **ip_address** (String) Optional IP address to assign to this connection. This IP should belong to the selected network and free for use.
- `ip_address` (String) Optional IP address to assign to this connection. This IP should belong to the selected network and free for use.
Read-Only:
- **mac** (String) MAC address associated with this connection. MAC address is assigned automatically.
- `mac` (String) MAC address associated with this connection. MAC address is assigned automatically.
<a id="nestedblock--timeouts"></a>
@@ -64,8 +64,8 @@ Read-Only:
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)
<a id="nestedatt--os_users"></a>
@@ -73,9 +73,9 @@ Optional:
Read-Only:
- **guid** (String)
- **login** (String)
- **password** (String)
- **public_key** (String)
- `guid` (String)
- `login` (String)
- `password` (String)
- `public_key` (String)

167
docs/data-sources/lb.md Normal file
View File

@@ -0,0 +1,167 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_lb Data Source - decort"
subcategory: ""
description: |-
---
# decort_lb (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `lb_id` (Number)
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `backends` (List of Object) (see [below for nested schema](#nestedatt--backends))
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `desc` (String)
- `dp_api_user` (String)
- `extnet_id` (Number)
- `frontends` (List of Object) (see [below for nested schema](#nestedatt--frontends))
- `gid` (Number)
- `guid` (Number)
- `ha_mode` (Boolean)
- `id` (String) The ID of this resource.
- `image_id` (Number)
- `milestones` (Number)
- `name` (String)
- `primary_node` (List of Object) (see [below for nested schema](#nestedatt--primary_node))
- `rg_id` (Number)
- `rg_name` (String)
- `secondary_node` (List of Object) (see [below for nested schema](#nestedatt--secondary_node))
- `status` (String)
- `tech_status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `vins_id` (Number)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--backends"></a>
### Nested Schema for `backends`
Read-Only:
- `algorithm` (String)
- `guid` (String)
- `name` (String)
- `server_default_settings` (List of Object) (see [below for nested schema](#nestedobjatt--backends--server_default_settings))
- `servers` (List of Object) (see [below for nested schema](#nestedobjatt--backends--servers))
<a id="nestedobjatt--backends--server_default_settings"></a>
### Nested Schema for `backends.server_default_settings`
Read-Only:
- `downinter` (Number)
- `fall` (Number)
- `guid` (String)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `weight` (Number)
<a id="nestedobjatt--backends--servers"></a>
### Nested Schema for `backends.servers`
Read-Only:
- `address` (String)
- `check` (String)
- `guid` (String)
- `name` (String)
- `port` (Number)
- `server_settings` (List of Object) (see [below for nested schema](#nestedobjatt--backends--servers--server_settings))
<a id="nestedobjatt--backends--servers--server_settings"></a>
### Nested Schema for `backends.servers.server_settings`
Read-Only:
- `downinter` (Number)
- `fall` (Number)
- `guid` (String)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `weight` (Number)
<a id="nestedatt--frontends"></a>
### Nested Schema for `frontends`
Read-Only:
- `backend` (String)
- `bindings` (List of Object) (see [below for nested schema](#nestedobjatt--frontends--bindings))
- `guid` (String)
- `name` (String)
<a id="nestedobjatt--frontends--bindings"></a>
### Nested Schema for `frontends.bindings`
Read-Only:
- `address` (String)
- `guid` (String)
- `name` (String)
- `port` (Number)
<a id="nestedatt--primary_node"></a>
### Nested Schema for `primary_node`
Read-Only:
- `backend_ip` (String)
- `compute_id` (Number)
- `frontend_ip` (String)
- `guid` (String)
- `mgmt_ip` (String)
- `network_id` (Number)
<a id="nestedatt--secondary_node"></a>
### Nested Schema for `secondary_node`
Read-Only:
- `backend_ip` (String)
- `compute_id` (Number)
- `frontend_ip` (String)
- `guid` (String)
- `mgmt_ip` (String)
- `network_id` (Number)

View File

@@ -0,0 +1,175 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_lb_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_lb_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `includedeleted` (Boolean)
- `page` (Number)
- `size` (Number)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `backends` (List of Object) (see [below for nested schema](#nestedobjatt--items--backends))
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `desc` (String)
- `dp_api_password` (String)
- `dp_api_user` (String)
- `extnet_id` (Number)
- `frontends` (List of Object) (see [below for nested schema](#nestedobjatt--items--frontends))
- `gid` (Number)
- `guid` (Number)
- `ha_mode` (Boolean)
- `image_id` (Number)
- `lb_id` (Number)
- `milestones` (Number)
- `name` (String)
- `primary_node` (List of Object) (see [below for nested schema](#nestedobjatt--items--primary_node))
- `rg_id` (Number)
- `rg_name` (String)
- `secondary_node` (List of Object) (see [below for nested schema](#nestedobjatt--items--secondary_node))
- `status` (String)
- `tech_status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `vins_id` (Number)
<a id="nestedobjatt--items--backends"></a>
### Nested Schema for `items.backends`
Read-Only:
- `algorithm` (String)
- `guid` (String)
- `name` (String)
- `server_default_settings` (List of Object) (see [below for nested schema](#nestedobjatt--items--backends--server_default_settings))
- `servers` (List of Object) (see [below for nested schema](#nestedobjatt--items--backends--servers))
<a id="nestedobjatt--items--backends--server_default_settings"></a>
### Nested Schema for `items.backends.server_default_settings`
Read-Only:
- `downinter` (Number)
- `fall` (Number)
- `guid` (String)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `weight` (Number)
<a id="nestedobjatt--items--backends--servers"></a>
### Nested Schema for `items.backends.servers`
Read-Only:
- `address` (String)
- `check` (String)
- `guid` (String)
- `name` (String)
- `port` (Number)
- `server_settings` (List of Object) (see [below for nested schema](#nestedobjatt--items--backends--servers--server_settings))
<a id="nestedobjatt--items--backends--servers--server_settings"></a>
### Nested Schema for `items.backends.servers.server_settings`
Read-Only:
- `downinter` (Number)
- `fall` (Number)
- `guid` (String)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `weight` (Number)
<a id="nestedobjatt--items--frontends"></a>
### Nested Schema for `items.frontends`
Read-Only:
- `backend` (String)
- `bindings` (List of Object) (see [below for nested schema](#nestedobjatt--items--frontends--bindings))
- `guid` (String)
- `name` (String)
<a id="nestedobjatt--items--frontends--bindings"></a>
### Nested Schema for `items.frontends.bindings`
Read-Only:
- `address` (String)
- `guid` (String)
- `name` (String)
- `port` (Number)
<a id="nestedobjatt--items--primary_node"></a>
### Nested Schema for `items.primary_node`
Read-Only:
- `backend_ip` (String)
- `compute_id` (Number)
- `frontend_ip` (String)
- `guid` (String)
- `mgmt_ip` (String)
- `network_id` (Number)
<a id="nestedobjatt--items--secondary_node"></a>
### Nested Schema for `items.secondary_node`
Read-Only:
- `backend_ip` (String)
- `compute_id` (Number)
- `frontend_ip` (String)
- `guid` (String)
- `mgmt_ip` (String)
- `network_id` (Number)

View File

@@ -0,0 +1,174 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_lb_list_deleted Data Source - decort"
subcategory: ""
description: |-
---
# decort_lb_list_deleted (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `page` (Number)
- `size` (Number)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `backends` (List of Object) (see [below for nested schema](#nestedobjatt--items--backends))
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `desc` (String)
- `dp_api_password` (String)
- `dp_api_user` (String)
- `extnet_id` (Number)
- `frontends` (List of Object) (see [below for nested schema](#nestedobjatt--items--frontends))
- `gid` (Number)
- `guid` (Number)
- `ha_mode` (Boolean)
- `image_id` (Number)
- `lb_id` (Number)
- `milestones` (Number)
- `name` (String)
- `primary_node` (List of Object) (see [below for nested schema](#nestedobjatt--items--primary_node))
- `rg_id` (Number)
- `rg_name` (String)
- `secondary_node` (List of Object) (see [below for nested schema](#nestedobjatt--items--secondary_node))
- `status` (String)
- `tech_status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `vins_id` (Number)
<a id="nestedobjatt--items--backends"></a>
### Nested Schema for `items.backends`
Read-Only:
- `algorithm` (String)
- `guid` (String)
- `name` (String)
- `server_default_settings` (List of Object) (see [below for nested schema](#nestedobjatt--items--backends--server_default_settings))
- `servers` (List of Object) (see [below for nested schema](#nestedobjatt--items--backends--servers))
<a id="nestedobjatt--items--backends--server_default_settings"></a>
### Nested Schema for `items.backends.server_default_settings`
Read-Only:
- `downinter` (Number)
- `fall` (Number)
- `guid` (String)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `weight` (Number)
<a id="nestedobjatt--items--backends--servers"></a>
### Nested Schema for `items.backends.servers`
Read-Only:
- `address` (String)
- `check` (String)
- `guid` (String)
- `name` (String)
- `port` (Number)
- `server_settings` (List of Object) (see [below for nested schema](#nestedobjatt--items--backends--servers--server_settings))
<a id="nestedobjatt--items--backends--servers--server_settings"></a>
### Nested Schema for `items.backends.servers.server_settings`
Read-Only:
- `downinter` (Number)
- `fall` (Number)
- `guid` (String)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `weight` (Number)
<a id="nestedobjatt--items--frontends"></a>
### Nested Schema for `items.frontends`
Read-Only:
- `backend` (String)
- `bindings` (List of Object) (see [below for nested schema](#nestedobjatt--items--frontends--bindings))
- `guid` (String)
- `name` (String)
<a id="nestedobjatt--items--frontends--bindings"></a>
### Nested Schema for `items.frontends.bindings`
Read-Only:
- `address` (String)
- `guid` (String)
- `name` (String)
- `port` (Number)
<a id="nestedobjatt--items--primary_node"></a>
### Nested Schema for `items.primary_node`
Read-Only:
- `backend_ip` (String)
- `compute_id` (Number)
- `frontend_ip` (String)
- `guid` (String)
- `mgmt_ip` (String)
- `network_id` (Number)
<a id="nestedobjatt--items--secondary_node"></a>
### Nested Schema for `items.secondary_node`
Read-Only:
- `backend_ip` (String)
- `compute_id` (Number)
- `frontend_ip` (String)
- `guid` (String)
- `mgmt_ip` (String)
- `network_id` (Number)

View File

@@ -0,0 +1,35 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_location_url Data Source - decort"
subcategory: ""
description: |-
---
# decort_location_url (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `url` (String) Location url
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,52 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_locations_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_locations_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `page` (Number) page number
- `size` (Number) page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) Locations list (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `ckey` (String)
- `flag` (String)
- `gid` (Number)
- `guid` (Number)
- `id` (Number)
- `location_code` (String)
- `meta` (List of String)
- `name` (String)

View File

@@ -0,0 +1,49 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_pcidevice Data Source - decort"
subcategory: ""
description: |-
---
# decort_pcidevice (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `device_id` (Number)
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `ckey` (String)
- `compute_id` (Number)
- `description` (String)
- `guid` (Number)
- `hw_path` (String)
- `id` (String) The ID of this resource.
- `meta` (List of String)
- `name` (String)
- `rg_id` (Number)
- `stack_id` (Number)
- `status` (String)
- `system_name` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,54 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_pcidevice_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_pcidevice_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) pcidevice list (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `ckey` (String)
- `compute_id` (Number)
- `description` (String)
- `device_id` (Number)
- `guid` (Number)
- `hw_path` (String)
- `meta` (List of String)
- `name` (String)
- `rg_id` (Number)
- `stack_id` (Number)
- `status` (String)
- `system_name` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_resgroup Data Source - terraform-provider-decort"
page_title: "decort_resgroup Data Source - decort"
subcategory: ""
description: |-
@@ -17,30 +17,30 @@ description: |-
### Required
- **account_id** (Number) Unique ID of the account, which this resource group belongs to.
- `account_id` (Number) Unique ID of the account, which this resource group belongs to.
### Optional
- **id** (String) The ID of this resource.
- **name** (String) Name of the resource group. Names are case sensitive and unique within the context of an account.
- **rg_id** (Number) Unique ID of the resource group. If this ID is specified, then resource group name is ignored.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `name` (String) Name of the resource group. Names are case sensitive and unique within the context of an account.
- `rg_id` (Number) Unique ID of the resource group. If this ID is specified, then resource group name is ignored.
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **account_name** (String) Name of the account, which this resource group belongs to.
- **def_net_id** (Number) ID of the default network for this resource group (if any).
- **def_net_type** (String) Type of the default network for this resource group.
- **description** (String) User-defined text description of this resource group.
- **quota** (List of Object) Quota settings for this resource group. (see [below for nested schema](#nestedatt--quota))
- `account_name` (String) Name of the account, which this resource group belongs to.
- `def_net_id` (Number) ID of the default network for this resource group (if any).
- `def_net_type` (String) Type of the default network for this resource group.
- `description` (String) User-defined text description of this resource group.
- `id` (String) The ID of this resource.
- `quota` (List of Object) Quota settings for this resource group. (see [below for nested schema](#nestedatt--quota))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)
<a id="nestedatt--quota"></a>
@@ -48,11 +48,11 @@ Optional:
Read-Only:
- **cpu** (Number)
- **disk** (Number)
- **ext_ips** (Number)
- **ext_traffic** (Number)
- **gpu_units** (Number)
- **ram** (Number)
- `cpu` (Number)
- `disk` (Number)
- `ext_ips` (Number)
- `ext_traffic` (Number)
- `gpu_units` (Number)
- `ram` (Number)

View File

@@ -0,0 +1,94 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_rg_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_rg_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `includedeleted` (Boolean) included deleted resource groups
- `page` (Number) Page number
- `size` (Number) Page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `acl` (List of Object) (see [below for nested schema](#nestedobjatt--items--acl))
- `created_by` (String)
- `created_time` (Number)
- `def_net_id` (Number)
- `def_net_type` (String)
- `deleted_by` (String)
- `deleted_time` (Number)
- `desc` (String)
- `gid` (Number)
- `guid` (Number)
- `lock_status` (String)
- `milestones` (Number)
- `name` (String)
- `register_computes` (Boolean)
- `resource_limits` (List of Object) (see [below for nested schema](#nestedobjatt--items--resource_limits))
- `rg_id` (Number)
- `secret` (String)
- `status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `vins` (List of Number)
- `vms` (List of Number)
<a id="nestedobjatt--items--acl"></a>
### Nested Schema for `items.acl`
Read-Only:
- `explicit` (Boolean)
- `guid` (String)
- `right` (String)
- `status` (String)
- `type` (String)
- `user_group_id` (String)
<a id="nestedobjatt--items--resource_limits"></a>
### Nested Schema for `items.resource_limits`
Read-Only:
- `cu_c` (Number)
- `cu_d` (Number)
- `cu_i` (Number)
- `cu_m` (Number)
- `cu_np` (Number)
- `gpu_units` (Number)

51
docs/data-sources/sep.md Normal file
View File

@@ -0,0 +1,51 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_sep Data Source - decort"
subcategory: ""
description: |-
---
# decort_sep (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `sep_id` (Number) sep type des id
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `ckey` (String)
- `config` (String)
- `consumed_by` (List of Number)
- `desc` (String)
- `gid` (Number)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `meta` (List of String)
- `milestones` (Number)
- `name` (String)
- `obj_status` (String)
- `provided_by` (List of Number)
- `tech_status` (String)
- `type` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,39 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_sep_config Data Source - decort"
subcategory: ""
description: |-
---
# decort_sep_config (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `sep_id` (Number) storage endpoint provider ID
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `config` (String) sep config json string
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,69 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_sep_consumption Data Source - decort"
subcategory: ""
description: |-
---
# decort_sep_consumption (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `sep_id` (Number) sep id
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `by_pool` (List of Object) consumption divided by pool (see [below for nested schema](#nestedatt--by_pool))
- `id` (String) The ID of this resource.
- `total` (List of Object) total consumption (see [below for nested schema](#nestedatt--total))
- `type` (String) sep type
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--by_pool"></a>
### Nested Schema for `by_pool`
Read-Only:
- `disk_count` (Number)
- `disk_usage` (Number)
- `name` (String)
- `snapshot_count` (Number)
- `snapshot_usage` (Number)
- `usage` (Number)
- `usage_limit` (Number)
<a id="nestedatt--total"></a>
### Nested Schema for `total`
Read-Only:
- `capacity_limit` (Number)
- `disk_count` (Number)
- `disk_usage` (Number)
- `snapshot_count` (Number)
- `snapshot_usage` (Number)
- `usage` (Number)
- `usage_limit` (Number)

View File

@@ -0,0 +1,40 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_sep_disk_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_sep_disk_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `sep_id` (Number) storage endpoint provider ID
### Optional
- `pool_name` (String) pool name
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Number) sep disk list
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,58 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_sep_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_sep_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `page` (Number) page number
- `size` (Number) page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) sep list (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `ckey` (String)
- `config` (String)
- `consumed_by` (List of Number)
- `desc` (String)
- `gid` (Number)
- `guid` (Number)
- `meta` (List of String)
- `milestones` (Number)
- `name` (String)
- `obj_status` (String)
- `provided_by` (List of Number)
- `sep_id` (Number)
- `tech_status` (String)
- `type` (String)

View File

@@ -0,0 +1,40 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_sep_pool Data Source - decort"
subcategory: ""
description: |-
---
# decort_sep_pool (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `pool_name` (String) pool name
- `sep_id` (Number) storage endpoint provider ID
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `pool` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_snapshot_list Data Source - terraform-provider-decort"
page_title: "decort_snapshot_list Data Source - decort"
subcategory: ""
description: |-
@@ -17,24 +17,24 @@ description: |-
### Required
- **compute_id** (Number) ID of the compute instance to create snapshot for.
- `compute_id` (Number) ID of the compute instance to create snapshot for.
### Optional
- **id** (String) The ID of this resource.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **items** (List of Object) snapshot list (see [below for nested schema](#nestedatt--items))
- `id` (String) The ID of this resource.
- `items` (List of Object) snapshot list (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
@@ -42,9 +42,9 @@ Optional:
Read-Only:
- **disks** (List of Number)
- **guid** (String)
- **label** (String)
- **timestamp** (Number)
- `disks` (List of Number)
- `guid` (String)
- `label` (String)
- `timestamp` (Number)

34
docs/data-sources/vgpu.md Normal file
View File

@@ -0,0 +1,34 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_vgpu Data Source - decort"
subcategory: ""
description: |-
---
# decort_vgpu (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `vgpu_id` (Number)
### Read-Only
- `account_id` (Number)
- `id` (String) The ID of this resource.
- `mode` (String)
- `pgpu` (Number)
- `profile_id` (Number)
- `ram` (Number)
- `status` (String)
- `type` (String)
- `vm_id` (Number)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_vins Data Source - terraform-provider-decort"
page_title: "decort_vins Data Source - decort"
subcategory: ""
description: |-
@@ -17,29 +17,29 @@ description: |-
### Required
- **name** (String) Name of the ViNS. Names are case sensitive and unique within the context of an account or resource group.
- `name` (String) Name of the ViNS. Names are case sensitive and unique within the context of an account or resource group.
### Optional
- **account_id** (Number) Unique ID of the account, which this ViNS belongs to.
- **id** (String) The ID of this resource.
- **rg_id** (Number) Unique ID of the resource group, where this ViNS is belongs to (for ViNS created at resource group level, 0 otherwise).
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `account_id` (Number) Unique ID of the account, which this ViNS belongs to.
- `rg_id` (Number) Unique ID of the resource group, where this ViNS is belongs to (for ViNS created at resource group level, 0 otherwise).
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **account_name** (String) Name of the account, which this ViNS belongs to.
- **description** (String) User-defined text description of this ViNS.
- **ext_ip_addr** (String) IP address of the external connection (valid for ViNS connected to external network, empty string otherwise).
- **ext_net_id** (Number) ID of the external network this ViNS is connected to (-1 means no external connection).
- **ipcidr** (String) Network address used by this ViNS.
- `account_name` (String) Name of the account, which this ViNS belongs to.
- `description` (String) User-defined text description of this ViNS.
- `ext_ip_addr` (String) IP address of the external connection (valid for ViNS connected to external network, empty string otherwise).
- `ext_net_id` (Number) ID of the external network this ViNS is connected to (-1 means no external connection).
- `id` (String) The ID of this resource.
- `ipcidr` (String) Network address used by this ViNS.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **default** (String)
- **read** (String)
- `default` (String)
- `read` (String)

View File

@@ -0,0 +1,61 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_vins_list Data Source - decort"
subcategory: ""
description: |-
---
# decort_vins_list (Data Source)
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `include_deleted` (Boolean) include deleted computes
- `page` (Number) Page number
- `size` (Number) Page size
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
- `items` (List of Object) (see [below for nested schema](#nestedatt--items))
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `default` (String)
- `read` (String)
<a id="nestedatt--items"></a>
### Nested Schema for `items`
Read-Only:
- `account_id` (Number)
- `account_name` (String)
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `external_ip` (String)
- `network` (String)
- `rg_id` (Number)
- `rg_name` (String)
- `status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `vins_id` (Number)
- `vins_name` (String)
- `vxlan_id` (Number)

View File

@@ -17,15 +17,15 @@ description: |-
### Required
- **authenticator** (String) Authentication mode to use when connecting to DECORT cloud API. Should be one of 'oauth2', 'legacy' or 'jwt'.
- **controller_url** (String) URL of DECORT Cloud controller to use. API calls will be directed to this URL.
- `authenticator` (String) Authentication mode to use when connecting to DECORT cloud API. Should be one of 'oauth2', 'legacy' or 'jwt'.
- `controller_url` (String) URL of DECORT Cloud controller to use. API calls will be directed to this URL.
### Optional
- **allow_unverified_ssl** (Boolean) If true, DECORT API will not verify SSL certificates. Use this with caution and in trusted environments only!
- **app_id** (String) Application ID to access DECORT cloud API in 'oauth2' authentication mode.
- **app_secret** (String) Application secret to access DECORT cloud API in 'oauth2' authentication mode.
- **jwt** (String) JWT to access DECORT cloud API in 'jwt' authentication mode.
- **oauth2_url** (String) OAuth2 application URL in 'oauth2' authentication mode.
- **password** (String) User password for DECORT cloud API operations in 'legacy' authentication mode.
- **user** (String) User name for DECORT cloud API operations in 'legacy' authentication mode.
- `allow_unverified_ssl` (Boolean) If true, DECORT API will not verify SSL certificates. Use this with caution and in trusted environments only!
- `app_id` (String) Application ID to access DECORT cloud API in 'oauth2' authentication mode.
- `app_secret` (String) Application secret to access DECORT cloud API in 'oauth2' authentication mode.
- `jwt` (String) JWT to access DECORT cloud API in 'jwt' authentication mode.
- `oauth2_url` (String) OAuth2 application URL in 'oauth2' authentication mode.
- `password` (String) User password for DECORT cloud API operations in 'legacy' authentication mode.
- `user` (String) User name for DECORT cloud API operations in 'legacy' authentication mode.

164
docs/resources/account.md Normal file
View File

@@ -0,0 +1,164 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_account Resource - decort"
subcategory: ""
description: |-
---
# decort_account (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `account_name` (String) account name
- `username` (String) username of owner the account
### Optional
- `account_id` (Number)
- `emailaddress` (String) email
- `enable` (Boolean) enable/disable account
- `permanently` (Boolean) whether to completely delete the account
- `resource_limits` (Block List, Max: 1) (see [below for nested schema](#nestedblock--resource_limits))
- `restore` (Boolean) restore a deleted account
- `send_access_emails` (Boolean) if true send emails when a user is granted access to resources
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `users` (Block List) (see [below for nested schema](#nestedblock--users))
### Read-Only
- `acl` (List of Object) (see [below for nested schema](#nestedatt--acl))
- `ckey` (String)
- `company` (String)
- `companyurl` (String)
- `computes` (List of Object) (see [below for nested schema](#nestedatt--computes))
- `created_by` (String)
- `created_time` (Number)
- `dc_location` (String)
- `deactivation_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `displayname` (String)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `machines` (List of Object) (see [below for nested schema](#nestedatt--machines))
- `meta` (List of String)
- `resources` (List of Object) (see [below for nested schema](#nestedatt--resources))
- `service_account` (Boolean)
- `status` (String)
- `updated_time` (Number)
- `version` (Number)
- `vins` (List of Number)
- `vinses` (Number)
<a id="nestedblock--resource_limits"></a>
### Nested Schema for `resource_limits`
Optional:
- `cu_c` (Number)
- `cu_d` (Number)
- `cu_i` (Number)
- `cu_m` (Number)
- `cu_np` (Number)
- `gpu_units` (Number)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedblock--users"></a>
### Nested Schema for `users`
Required:
- `access_type` (String)
- `user_id` (String)
Optional:
- `recursive_delete` (Boolean)
<a id="nestedatt--acl"></a>
### Nested Schema for `acl`
Read-Only:
- `can_be_deleted` (Boolean)
- `explicit` (Boolean)
- `guid` (String)
- `right` (String)
- `status` (String)
- `type` (String)
- `user_group_id` (String)
<a id="nestedatt--computes"></a>
### Nested Schema for `computes`
Read-Only:
- `started` (Number)
- `stopped` (Number)
<a id="nestedatt--machines"></a>
### Nested Schema for `machines`
Read-Only:
- `halted` (Number)
- `running` (Number)
<a id="nestedatt--resources"></a>
### Nested Schema for `resources`
Read-Only:
- `current` (List of Object) (see [below for nested schema](#nestedobjatt--resources--current))
- `reserved` (List of Object) (see [below for nested schema](#nestedobjatt--resources--reserved))
<a id="nestedobjatt--resources--current"></a>
### Nested Schema for `resources.current`
Read-Only:
- `cpu` (Number)
- `disksize` (Number)
- `extips` (Number)
- `exttraffic` (Number)
- `gpu` (Number)
- `ram` (Number)
<a id="nestedobjatt--resources--reserved"></a>
### Nested Schema for `resources.reserved`
Read-Only:
- `cpu` (Number)
- `disksize` (Number)
- `extips` (Number)
- `exttraffic` (Number)
- `gpu` (Number)
- `ram` (Number)

101
docs/resources/bservice.md Normal file
View File

@@ -0,0 +1,101 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_bservice Resource - decort"
subcategory: ""
description: |-
---
# decort_bservice (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `rg_id` (Number) ID of the Resource Group where this service will be placed
- `service_name` (String) Name of the service
### Optional
- `enable` (Boolean) if set to False, Basic service will be deleted to recycle bin. Otherwise destroyed immediately
- `permanently` (Boolean) if set to False, Basic service will be deleted to recycle bin. Otherwise destroyed immediately
- `restore` (Boolean) Restores BasicService instance
- `service_id` (Number)
- `snapshots` (Block List) (see [below for nested schema](#nestedblock--snapshots))
- `ssh_key` (String) SSH key to deploy for the specified user. Same key will be deployed to all computes of the service.
- `ssh_user` (String) name of the user to deploy SSH key for. Pass empty string if no SSH key deployment is required
- `start` (Boolean) Start service. Starting a service technically means starting computes from all service groups according to group relations
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `account_id` (Number)
- `account_name` (String)
- `base_domain` (String)
- `computes` (List of Object) (see [below for nested schema](#nestedatt--computes))
- `cpu_total` (Number)
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `disk_total` (String)
- `gid` (Number)
- `groups` (List of Number)
- `groups_name` (List of String)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `milestones` (Number)
- `parent_srv_id` (Number)
- `parent_srv_type` (String)
- `ram_total` (Number)
- `rg_name` (String)
- `status` (String)
- `tech_status` (String)
- `updated_by` (String)
- `updated_time` (Number)
- `user_managed` (Boolean)
<a id="nestedblock--snapshots"></a>
### Nested Schema for `snapshots`
Optional:
- `label` (String)
- `rollback` (Boolean)
Read-Only:
- `guid` (String)
- `timestamp` (Number)
- `valid` (Boolean)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--computes"></a>
### Nested Schema for `computes`
Read-Only:
- `compgroup_id` (Number)
- `compgroup_name` (String)
- `compgroup_role` (String)
- `id` (Number)
- `name` (String)

View File

@@ -0,0 +1,97 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_bservice_group Resource - decort"
subcategory: ""
description: |-
---
# decort_bservice_group (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `comp_count` (Number) computes number. Defines how many computes must be there in the group
- `compgroup_name` (String) name of the Compute Group to add
- `cpu` (Number) compute CPU number. All computes in the group have the same CPU count
- `disk` (Number) compute boot disk size in GB
- `driver` (String) compute driver like a KVM_X86, KVM_PPC, etc.
- `image_id` (Number) OS image ID to create computes from
- `ram` (Number) compute RAM volume in MB. All computes in the group have the same RAM volume
- `service_id` (Number) ID of the Basic Service to add a group to
### Optional
- `compgroup_id` (Number)
- `extnets` (List of Number) list of external networks to connect computes to
- `force_stop` (Boolean) force stop Compute Group
- `force_update` (Boolean) force resize Compute Group
- `mode` (String) (RELATIVE;ABSOLUTE) either delta or absolute value of computes
- `parents` (List of Number)
- `remove_computes` (List of Number)
- `role` (String) group role tag. Can be empty string, does not have to be unique
- `start` (Boolean) Start the specified Compute Group within BasicService
- `timeout_start` (Number) time of Compute Group readiness
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `vinses` (List of Number) list of ViNSes to connect computes to
### Read-Only
- `account_id` (Number)
- `account_name` (String)
- `computes` (List of Object) (see [below for nested schema](#nestedatt--computes))
- `consistency` (Boolean)
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `gid` (Number)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `milestones` (Number)
- `rg_id` (Number)
- `rg_name` (String)
- `sep_id` (Number)
- `seq_no` (Number)
- `status` (String)
- `tech_status` (String)
- `updated_by` (String)
- `updated_time` (Number)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--computes"></a>
### Nested Schema for `computes`
Read-Only:
- `id` (Number)
- `ip_addresses` (List of String)
- `name` (String)
- `os_users` (List of Object) (see [below for nested schema](#nestedobjatt--computes--os_users))
<a id="nestedobjatt--computes--os_users"></a>
### Nested Schema for `computes.os_users`
Read-Only:
- `login` (String)
- `password` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_cdrom_image Resource - terraform-provider-decort"
page_title: "decort_cdrom_image Resource - decort"
subcategory: ""
description: |-
@@ -17,64 +17,64 @@ description: |-
### Required
- **drivers** (List of String) List of types of compute suitable for image. Example: [ "KVM_X86" ]
- **gid** (Number) grid (platform) ID where this template should be create in
- **name** (String) Name of the rescue disk
- **url** (String) URL where to download ISO from
- `drivers` (List of String) List of types of compute suitable for image. Example: [ "KVM_X86" ]
- `gid` (Number) grid (platform) ID where this template should be create in
- `name` (String) Name of the rescue disk
- `url` (String) URL where to download ISO from
### Optional
- **account_id** (Number) AccountId to make the image exclusive
- **architecture** (String) binary architecture of this image, one of X86_64 of PPC64_LE
- **bootable** (Boolean) Does this image boot OS
- **computeci_id** (Number)
- **enabled** (Boolean)
- **enabled_stacks** (List of String)
- **hot_resize** (Boolean) Does this machine supports hot resize
- **id** (String) The ID of this resource.
- **password** (String) Optional password for the image
- **password_dl** (String) password for upload binary media
- **permanently** (Boolean) Whether to completely delete the image
- **pool_name** (String) pool for image create
- **sep_id** (Number) storage endpoint provider ID
- **shared_with** (List of Number)
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- **username** (String) Optional username for the image
- **username_dl** (String) username for upload binary media
- `account_id` (Number) AccountId to make the image exclusive
- `architecture` (String) binary architecture of this image, one of X86_64 of PPC64_LE
- `bootable` (Boolean) Does this image boot OS
- `computeci_id` (Number)
- `enabled` (Boolean)
- `enabled_stacks` (List of String)
- `hot_resize` (Boolean) Does this machine supports hot resize
- `password` (String) Optional password for the image
- `password_dl` (String) password for upload binary media
- `permanently` (Boolean) Whether to completely delete the image
- `pool_name` (String) pool for image create
- `sep_id` (Number) storage endpoint provider ID
- `shared_with` (List of Number)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `username` (String) Optional username for the image
- `username_dl` (String) username for upload binary media
### Read-Only
- **boot_type** (String) Boot type of image bios or uefi
- **desc** (String)
- **guid** (Number)
- **history** (List of Object) (see [below for nested schema](#nestedatt--history))
- **image_id** (Number) image id
- **image_type** (String) Image type linux, windows or other
- **link_to** (Number)
- **meta** (List of String) meta
- **milestones** (Number)
- **provider_name** (String)
- **purge_attempts** (Number)
- **reference_id** (String)
- **res_id** (String)
- **res_name** (String)
- **rescuecd** (Boolean)
- **size** (Number) image size
- **status** (String) status
- **tech_status** (String) tech atatus
- **unc_path** (String) unc path
- **version** (String) version
- `boot_type` (String) Boot type of image bios or uefi
- `desc` (String)
- `guid` (Number)
- `history` (List of Object) (see [below for nested schema](#nestedatt--history))
- `id` (String) The ID of this resource.
- `image_id` (Number) image id
- `image_type` (String) Image type linux, windows or other
- `link_to` (Number)
- `meta` (List of String) meta
- `milestones` (Number)
- `provider_name` (String)
- `purge_attempts` (Number)
- `reference_id` (String)
- `res_id` (String)
- `res_name` (String)
- `rescuecd` (Boolean)
- `size` (Number) image size
- `status` (String) status
- `tech_status` (String) tech atatus
- `unc_path` (String) unc path
- `version` (String) version
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--history"></a>
@@ -82,8 +82,8 @@ Optional:
Read-Only:
- **guid** (String)
- **id** (Number)
- **timestamp** (Number)
- `guid` (String)
- `id` (Number)
- `timestamp` (Number)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_delete_images Resource - terraform-provider-decort"
page_title: "decort_delete_images Resource - decort"
subcategory: ""
description: |-
@@ -17,24 +17,27 @@ description: |-
### Required
- **image_ids** (List of Number) images ids for deleting
- **reason** (String) reason for deleting the images
- `image_ids` (List of Number) images ids for deleting
- `reason` (String) reason for deleting the images
### Optional
- **id** (String) The ID of this resource.
- **permanently** (Boolean) whether to completely delete the images
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `permanently` (Boolean) whether to completely delete the images
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_disk Resource - terraform-provider-decort"
page_title: "decort_disk Resource - decort"
subcategory: ""
description: |-
@@ -17,35 +17,105 @@ description: |-
### Required
- **pool** (String) Pool where this disk is located. Cannot be changed for existing disk.
- **sep_id** (Number) Storage end-point provider serving this disk. Cannot be changed for existing disk.
- **size** (Number) Size of the disk in GB. Note, that existing disks can only be grown in size.
- `account_id` (Number)
- `disk_name` (String)
- `gid` (Number)
- `size_max` (Number)
### Optional
- **account_id** (Number) ID of the account this disk belongs to.
- **description** (String) Optional user-defined text description of this disk.
- **disk_id** (Number) ID of the disk to get. If disk ID is specified, then disk name and account ID are ignored.
- **id** (String) The ID of this resource.
- **name** (String) Name of this disk. NOTE: disk names are NOT unique within an account. If disk ID is specified, disk name is ignored.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `desc` (String)
- `detach` (Boolean) detach disk from machine first
- `iotune` (Block List, Max: 1) (see [below for nested schema](#nestedblock--iotune))
- `permanently` (Boolean) whether to completely delete the disk, works only with non attached disks
- `pool` (String)
- `reason` (String) reason for an action
- `restore` (Boolean) restore deleting disk
- `sep_id` (Number)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `type` (String)
### Read-Only
- **account_name** (String) Name of the account this disk belongs to.
- **image_id** (Number) ID of the image, which this disk was cloned from (if ever cloned).
- **sep_type** (String) Type of the storage end-point provider serving this disk.
- **type** (String) Type of this disk.
- `account_name` (String)
- `acl` (String)
- `boot_partition` (Number)
- `compute_id` (Number)
- `compute_name` (String)
- `created_time` (Number)
- `deleted_time` (Number)
- `destruction_time` (Number)
- `devicename` (String)
- `disk_id` (Number)
- `disk_path` (String)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `image_id` (Number)
- `images` (List of String)
- `iqn` (String)
- `login` (String)
- `milestones` (Number)
- `order` (Number)
- `params` (String)
- `parent_id` (Number)
- `passwd` (String)
- `pci_slot` (Number)
- `purge_attempts` (Number)
- `purge_time` (Number)
- `reality_device_number` (Number)
- `reference_id` (String)
- `res_id` (String)
- `res_name` (String)
- `role` (String)
- `sep_type` (String)
- `size_used` (Number)
- `snapshots` (List of Object) (see [below for nested schema](#nestedatt--snapshots))
- `status` (String)
- `tech_status` (String)
- `vmid` (Number)
<a id="nestedblock--iotune"></a>
### Nested Schema for `iotune`
Optional:
- `read_bytes_sec` (Number)
- `read_bytes_sec_max` (Number)
- `read_iops_sec` (Number)
- `read_iops_sec_max` (Number)
- `size_iops_sec` (Number)
- `total_bytes_sec` (Number)
- `total_bytes_sec_max` (Number)
- `total_iops_sec` (Number)
- `total_iops_sec_max` (Number)
- `write_bytes_sec` (Number)
- `write_bytes_sec_max` (Number)
- `write_iops_sec` (Number)
- `write_iops_sec_max` (Number)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--snapshots"></a>
### Nested Schema for `snapshots`
Read-Only:
- `guid` (String)
- `label` (String)
- `res_id` (String)
- `snap_set_guid` (String)
- `snap_set_time` (Number)
- `timestamp` (Number)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_image Resource - terraform-provider-decort"
page_title: "decort_image Resource - decort"
subcategory: ""
description: |-
@@ -17,67 +17,65 @@ description: |-
### Required
- **boot_type** (String) Boot type of image bios or uefi
- **drivers** (List of String) List of types of compute suitable for image. Example: [ "KVM_X86" ]
- **gid** (Number) grid (platform) ID where this template should be create in
- **image_type** (String) Image type linux, windows or other
- **name** (String) Name of the rescue disk
- **url** (String) URL where to download media from
- `boot_type` (String) Boot type of image bios or uefi
- `drivers` (List of String)
- `gid` (Number) grid (platform) ID where this template should be create in
- `name` (String) Name of the rescue disk
- `type` (String) Image type linux, windows or other
- `url` (String) URL where to download media from
### Optional
- **account_id** (Number) AccountId to make the image exclusive
- **architecture** (String) binary architecture of this image, one of X86_64 of PPC64_LE
- **bootable** (Boolean) Does this image boot OS
- **computeci_id** (Number)
- **enabled** (Boolean)
- **enabled_stacks** (List of String)
- **hot_resize** (Boolean) Does this machine supports hot resize
- **id** (String) The ID of this resource.
- **image_id** (Number) image id
- **password** (String) Optional password for the image
- **password_dl** (String) password for upload binary media
- **permanently** (Boolean) Whether to completely delete the image
- **pool_name** (String) pool for image create
- **reason** (String)
- **sep_id** (Number) storage endpoint provider ID
- **shared_with** (List of Number)
- **sync** (Boolean) Create image from a media identified by URL (in synchronous mode)
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- **username** (String) Optional username for the image
- **username_dl** (String) username for upload binary media
- `account_id` (Number) AccountId to make the image exclusive
- `architecture` (String) binary architecture of this image, one of X86_64 of PPC64_LE
- `hot_resize` (Boolean) Does this machine supports hot resize
- `image_id` (Number) image id
- `password` (String) Optional password for the image
- `password_dl` (String) password for upload binary media
- `permanently` (Boolean) whether to completely delete the image
- `pool_name` (String) pool for image create
- `sep_id` (Number) storage endpoint provider ID
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `username` (String) Optional username for the image
- `username_dl` (String) username for upload binary media
### Read-Only
- **desc** (String)
- **guid** (Number)
- **history** (List of Object) (see [below for nested schema](#nestedatt--history))
- **last_modified** (Number)
- **link_to** (Number)
- **meta** (List of String) meta
- **milestones** (Number)
- **provider_name** (String)
- **purge_attempts** (Number)
- **reference_id** (String)
- **res_id** (String)
- **res_name** (String)
- **rescuecd** (Boolean)
- **size** (Number) image size
- **status** (String) status
- **tech_status** (String) tech atatus
- **unc_path** (String) unc path
- **version** (String) version
- `acl` (String)
- `bootable` (Boolean)
- `ckey` (String)
- `compute_ci_id` (Number)
- `deleted_time` (String)
- `desc` (String)
- `enabled` (Boolean)
- `guid` (Number)
- `history` (List of Object) (see [below for nested schema](#nestedatt--history))
- `id` (String) The ID of this resource.
- `image_name` (String)
- `last_modified` (Number)
- `link_to` (Number)
- `milestones` (Number)
- `provider_name` (String)
- `purge_attempts` (Number)
- `res_id` (String)
- `rescuecd` (Boolean)
- `shared_with` (List of Number)
- `size` (Number)
- `status` (String)
- `tech_status` (String)
- `unc_path` (String)
- `version` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--history"></a>
@@ -85,8 +83,8 @@ Optional:
Read-Only:
- **guid** (String)
- **id** (Number)
- **timestamp** (Number)
- `guid` (String)
- `id` (Number)
- `timestamp` (Number)

View File

@@ -0,0 +1,87 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_image_virtual Resource - decort"
subcategory: ""
description: |-
---
# decort_image_virtual (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `link_to` (Number) ID of real image to link this virtual image to upon creation
- `name` (String) Name of the rescue disk
### Optional
- `permanently` (Boolean) whether to completely delete the image
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `account_id` (Number)
- `acl` (String)
- `architecture` (String)
- `boot_type` (String)
- `bootable` (Boolean)
- `ckey` (String)
- `compute_ci_id` (Number)
- `deleted_time` (String)
- `desc` (String)
- `drivers` (List of String)
- `enabled` (Boolean)
- `gid` (Number)
- `guid` (Number)
- `history` (List of Object) (see [below for nested schema](#nestedatt--history))
- `hot_resize` (Boolean)
- `id` (String) The ID of this resource.
- `image_id` (Number) Image id
- `image_name` (String)
- `last_modified` (Number)
- `milestones` (Number)
- `password` (String)
- `pool_name` (String)
- `provider_name` (String)
- `purge_attempts` (Number)
- `res_id` (String)
- `rescuecd` (Boolean)
- `sep_id` (Number)
- `shared_with` (List of Number)
- `size` (Number)
- `status` (String)
- `tech_status` (String)
- `type` (String)
- `unc_path` (String)
- `username` (String)
- `version` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--history"></a>
### Nested Schema for `history`
Read-Only:
- `guid` (String)
- `id` (Number)
- `timestamp` (Number)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_k8s Resource - terraform-provider-decort"
page_title: "decort_k8s Resource - decort"
subcategory: ""
description: |-
@@ -17,34 +17,34 @@ description: |-
### Required
- **k8sci_id** (Number) ID of the k8s catalog item to base this instance on.
- **name** (String) Name of the cluster.
- **rg_id** (Number) Resource group ID that this instance belongs to.
- **wg_name** (String) Name for first worker group created with cluster.
- `k8sci_id` (Number) ID of the k8s catalog item to base this instance on.
- `name` (String) Name of the cluster.
- `rg_id` (Number) Resource group ID that this instance belongs to.
- `wg_name` (String) Name for first worker group created with cluster.
### Optional
- **extnet_id** (Number) ID of the external network to connect workers to. If omitted network will be chosen by the platfom.
- **id** (String) The ID of this resource.
- **masters** (Block List, Max: 1) Master node(s) configuration. (see [below for nested schema](#nestedblock--masters))
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- **workers** (Block List, Max: 1) Worker node(s) configuration. (see [below for nested schema](#nestedblock--workers))
- `extnet_id` (Number) ID of the external network to connect workers to. If omitted network will be chosen by the platfom.
- `masters` (Block List, Max: 1) Master node(s) configuration. (see [below for nested schema](#nestedblock--masters))
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `workers` (Block List, Max: 1) Worker node(s) configuration. (see [below for nested schema](#nestedblock--workers))
### Read-Only
- **default_wg_id** (Number) ID of default workers group for this instace.
- **kubeconfig** (String) Kubeconfig for cluster access.
- **lb_ip** (String) IP address of default load balancer.
- `default_wg_id` (Number) ID of default workers group for this instace.
- `id` (String) The ID of this resource.
- `kubeconfig` (String) Kubeconfig for cluster access.
- `lb_ip` (String) IP address of default load balancer.
<a id="nestedblock--masters"></a>
### Nested Schema for `masters`
Required:
- **cpu** (Number) Node CPU count.
- **disk** (Number) Node boot disk size in GB.
- **num** (Number) Number of nodes to create.
- **ram** (Number) Node RAM in MB.
- `cpu` (Number) Node CPU count.
- `disk` (Number) Node boot disk size in GB.
- `num` (Number) Number of nodes to create.
- `ram` (Number) Node RAM in MB.
<a id="nestedblock--timeouts"></a>
@@ -52,11 +52,11 @@ Required:
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedblock--workers"></a>
@@ -64,9 +64,9 @@ Optional:
Required:
- **cpu** (Number) Node CPU count.
- **disk** (Number) Node boot disk size in GB.
- **num** (Number) Number of nodes to create.
- **ram** (Number) Node RAM in MB.
- `cpu` (Number) Node CPU count.
- `disk` (Number) Node boot disk size in GB.
- `num` (Number) Number of nodes to create.
- `ram` (Number) Node RAM in MB.

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_k8s_wg Resource - terraform-provider-decort"
page_title: "decort_k8s_wg Resource - decort"
subcategory: ""
description: |-
@@ -17,27 +17,30 @@ description: |-
### Required
- **k8s_id** (Number) ID of k8s instance.
- **name** (String) Name of the worker group.
- `k8s_id` (Number) ID of k8s instance.
- `name` (String) Name of the worker group.
### Optional
- **cpu** (Number) Worker node CPU count.
- **disk** (Number) Worker node boot disk size. If unspecified or 0, size is defined by OS image size.
- **id** (String) The ID of this resource.
- **num** (Number) Number of worker nodes to create.
- **ram** (Number) Worker node RAM in MB.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `cpu` (Number) Worker node CPU count.
- `disk` (Number) Worker node boot disk size. If unspecified or 0, size is defined by OS image size.
- `num` (Number) Number of worker nodes to create.
- `ram` (Number) Worker node RAM in MB.
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_kvmvm Resource - terraform-provider-decort"
page_title: "decort_kvmvm Resource - decort"
subcategory: ""
description: |-
@@ -17,47 +17,53 @@ description: |-
### Required
- **boot_disk_size** (Number) This compute instance boot disk size in GB. Make sure it is large enough to accomodate selected OS image.
- **cpu** (Number) Number of CPUs to allocate to this compute instance.
- **driver** (String) Hardware architecture of this compute instance.
- **image_id** (Number) ID of the OS image to base this compute instance on.
- **name** (String) Name of this compute. Compute names are case sensitive and must be unique in the resource group.
- **ram** (Number) Amount of RAM in MB to allocate to this compute instance.
- **rg_id** (Number) ID of the resource group where this compute should be deployed.
- `boot_disk_size` (Number) This compute instance boot disk size in GB. Make sure it is large enough to accomodate selected OS image.
- `cpu` (Number) Number of CPUs to allocate to this compute instance.
- `driver` (String) Hardware architecture of this compute instance.
- `image_id` (Number) ID of the OS image to base this compute instance on.
- `name` (String) Name of this compute. Compute names are case sensitive and must be unique in the resource group.
- `ram` (Number) Amount of RAM in MB to allocate to this compute instance.
- `rg_id` (Number) ID of the resource group where this compute should be deployed.
### Optional
- **cloud_init** (String) Optional cloud_init parameters. Applied when creating new compute instance only, ignored in all other cases.
- **description** (String) Optional text description of this compute instance.
- **extra_disks** (Set of Number) Optional list of IDs of extra disks to attach to this compute. You may specify several extra disks.
- **id** (String) The ID of this resource.
- **network** (Block Set, Max: 8) Optional network connection(s) for this compute. You may specify several network blocks, one for each connection. (see [below for nested schema](#nestedblock--network))
- **started** (Boolean) Is compute started.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `cloud_init` (String) Optional cloud_init parameters. Applied when creating new compute instance only, ignored in all other cases.
- `description` (String) Optional text description of this compute instance.
- `detach_disks` (Boolean)
- `extra_disks` (Set of Number) Optional list of IDs of extra disks to attach to this compute. You may specify several extra disks.
- `ipa_type` (String) compute purpose
- `is` (String) system name
- `network` (Block Set, Max: 8) Optional network connection(s) for this compute. You may specify several network blocks, one for each connection. (see [below for nested schema](#nestedblock--network))
- `permanently` (Boolean)
- `pool` (String) Pool to use if sepId is set, can be also empty if needed to be chosen by system.
- `sep_id` (Number) ID of SEP to create bootDisk on. Uses image's sepId if not set.
- `started` (Boolean) Is compute started.
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **account_id** (Number) ID of the account this compute instance belongs to.
- **account_name** (String) Name of the account this compute instance belongs to.
- **boot_disk_id** (Number) This compute instance boot disk ID.
- **os_users** (List of Object) Guest OS users provisioned on this compute instance. (see [below for nested schema](#nestedatt--os_users))
- **rg_name** (String) Name of the resource group where this compute instance is located.
- `account_id` (Number) ID of the account this compute instance belongs to.
- `account_name` (String) Name of the account this compute instance belongs to.
- `boot_disk_id` (Number) This compute instance boot disk ID.
- `id` (String) The ID of this resource.
- `os_users` (List of Object) Guest OS users provisioned on this compute instance. (see [below for nested schema](#nestedatt--os_users))
- `rg_name` (String) Name of the resource group where this compute instance is located.
<a id="nestedblock--network"></a>
### Nested Schema for `network`
Required:
- **net_id** (Number) ID of the network for this connection.
- **net_type** (String) Type of the network for this connection, either EXTNET or VINS.
- `net_id` (Number) ID of the network for this connection.
- `net_type` (String) Type of the network for this connection, either EXTNET or VINS.
Optional:
- **ip_address** (String) Optional IP address to assign to this connection. This IP should belong to the selected network and free for use.
- `ip_address` (String) Optional IP address to assign to this connection. This IP should belong to the selected network and free for use.
Read-Only:
- **mac** (String) MAC address associated with this connection. MAC address is assigned automatically.
- `mac` (String) MAC address associated with this connection. MAC address is assigned automatically.
<a id="nestedblock--timeouts"></a>
@@ -65,11 +71,11 @@ Read-Only:
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--os_users"></a>
@@ -77,9 +83,9 @@ Optional:
Read-Only:
- **guid** (String)
- **login** (String)
- **password** (String)
- **public_key** (String)
- `guid` (String)
- `login` (String)
- `password` (String)
- `public_key` (String)

176
docs/resources/lb.md Normal file
View File

@@ -0,0 +1,176 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_lb Resource - decort"
subcategory: ""
description: |-
---
# decort_lb (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `extnet_id` (Number)
- `name` (String)
- `rg_id` (Number)
- `start` (Boolean)
- `vins_id` (Number)
### Optional
- `config_reset` (Boolean)
- `desc` (String)
- `enable` (Boolean)
- `permanently` (Boolean)
- `restart` (Boolean)
- `restore` (Boolean)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `backends` (List of Object) (see [below for nested schema](#nestedatt--backends))
- `created_by` (String)
- `created_time` (Number)
- `deleted_by` (String)
- `deleted_time` (Number)
- `dp_api_user` (String)
- `frontends` (List of Object) (see [below for nested schema](#nestedatt--frontends))
- `gid` (Number)
- `guid` (Number)
- `ha_mode` (Boolean)
- `id` (String) The ID of this resource.
- `image_id` (Number)
- `lb_id` (Number)
- `milestones` (Number)
- `primary_node` (List of Object) (see [below for nested schema](#nestedatt--primary_node))
- `rg_name` (String)
- `secondary_node` (List of Object) (see [below for nested schema](#nestedatt--secondary_node))
- `status` (String)
- `tech_status` (String)
- `updated_by` (String)
- `updated_time` (Number)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--backends"></a>
### Nested Schema for `backends`
Read-Only:
- `algorithm` (String)
- `guid` (String)
- `name` (String)
- `server_default_settings` (List of Object) (see [below for nested schema](#nestedobjatt--backends--server_default_settings))
- `servers` (List of Object) (see [below for nested schema](#nestedobjatt--backends--servers))
<a id="nestedobjatt--backends--server_default_settings"></a>
### Nested Schema for `backends.server_default_settings`
Read-Only:
- `downinter` (Number)
- `fall` (Number)
- `guid` (String)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `weight` (Number)
<a id="nestedobjatt--backends--servers"></a>
### Nested Schema for `backends.servers`
Read-Only:
- `address` (String)
- `check` (String)
- `guid` (String)
- `name` (String)
- `port` (Number)
- `server_settings` (List of Object) (see [below for nested schema](#nestedobjatt--backends--servers--server_settings))
<a id="nestedobjatt--backends--servers--server_settings"></a>
### Nested Schema for `backends.servers.server_settings`
Read-Only:
- `downinter` (Number)
- `fall` (Number)
- `guid` (String)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `weight` (Number)
<a id="nestedatt--frontends"></a>
### Nested Schema for `frontends`
Read-Only:
- `backend` (String)
- `bindings` (List of Object) (see [below for nested schema](#nestedobjatt--frontends--bindings))
- `guid` (String)
- `name` (String)
<a id="nestedobjatt--frontends--bindings"></a>
### Nested Schema for `frontends.bindings`
Read-Only:
- `address` (String)
- `guid` (String)
- `name` (String)
- `port` (Number)
<a id="nestedatt--primary_node"></a>
### Nested Schema for `primary_node`
Read-Only:
- `backend_ip` (String)
- `compute_id` (Number)
- `frontend_ip` (String)
- `guid` (String)
- `mgmt_ip` (String)
- `network_id` (Number)
<a id="nestedatt--secondary_node"></a>
### Nested Schema for `secondary_node`
Read-Only:
- `backend_ip` (String)
- `compute_id` (Number)
- `frontend_ip` (String)
- `guid` (String)
- `mgmt_ip` (String)
- `network_id` (Number)

View File

@@ -0,0 +1,88 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_lb_backend Resource - decort"
subcategory: ""
description: |-
---
# decort_lb_backend (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `lb_id` (Number) ID of the LB instance to backendCreate
- `name` (String) Must be unique among all backends of this LB - name of the new backend to create
### Optional
- `algorithm` (String)
- `downinter` (Number)
- `fall` (Number)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `servers` (Block List) (see [below for nested schema](#nestedblock--servers))
- `slowstart` (Number)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `weight` (Number)
### Read-Only
- `guid` (String)
- `id` (String) The ID of this resource.
<a id="nestedblock--servers"></a>
### Nested Schema for `servers`
Optional:
- `address` (String)
- `check` (String)
- `name` (String)
- `port` (Number)
- `server_settings` (Block List) (see [below for nested schema](#nestedblock--servers--server_settings))
Read-Only:
- `guid` (String)
<a id="nestedblock--servers--server_settings"></a>
### Nested Schema for `servers.server_settings`
Optional:
- `downinter` (Number)
- `fall` (Number)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `weight` (Number)
Read-Only:
- `guid` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -0,0 +1,55 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_lb_backend_server Resource - decort"
subcategory: ""
description: |-
---
# decort_lb_backend_server (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `address` (String) IP address of the server.
- `backend_name` (String) Must be unique among all backends of this LB - name of the new backend to create
- `lb_id` (Number) ID of the LB instance to backendCreate
- `name` (String) Must be unique among all servers defined for this backend - name of the server definition to add.
- `port` (Number) Port number on the server
### Optional
- `check` (String) set to disabled if this server should be used regardless of its state.
- `downinter` (Number)
- `fall` (Number)
- `inter` (Number)
- `maxconn` (Number)
- `maxqueue` (Number)
- `rise` (Number)
- `slowstart` (Number)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `weight` (Number)
### Read-Only
- `guid` (String)
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -0,0 +1,56 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_lb_frontend Resource - decort"
subcategory: ""
description: |-
---
# decort_lb_frontend (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `backend_name` (String)
- `lb_id` (Number) ID of the LB instance to backendCreate
- `name` (String)
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `bindings` (List of Object) (see [below for nested schema](#nestedatt--bindings))
- `guid` (String)
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--bindings"></a>
### Nested Schema for `bindings`
Read-Only:
- `address` (String)
- `guid` (String)
- `name` (String)
- `port` (Number)

View File

@@ -0,0 +1,46 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_lb_frontend_bind Resource - decort"
subcategory: ""
description: |-
---
# decort_lb_frontend_bind (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `address` (String)
- `frontend_name` (String) Must be unique among all backends of this LB - name of the new backend to create
- `lb_id` (Number) ID of the LB instance to backendCreate
- `name` (String)
- `port` (Number)
### Optional
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `guid` (String)
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -0,0 +1,54 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_pcidevice Resource - decort"
subcategory: ""
description: |-
---
# decort_pcidevice (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `hw_path` (String) PCI address of the device
- `name` (String) Name of Device
- `rg_id` (Number) Resource GROUP
- `stack_id` (Number) stackId
### Optional
- `description` (String) description, just for information
- `device_id` (Number)
- `enable` (Boolean) Enable pci device
- `force` (Boolean) Force delete
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `ckey` (String)
- `compute_id` (Number)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `meta` (List of String)
- `status` (String)
- `system_name` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_pfw Resource - terraform-provider-decort"
page_title: "decort_pfw Resource - decort"
subcategory: ""
description: |-
@@ -17,30 +17,30 @@ description: |-
### Required
- **compute_id** (Number) ID of compute instance.
- **local_base_port** (Number) Internal base port number.
- **proto** (String) Network protocol, either 'tcp' or 'udp'.
- **public_port_start** (Number) External start port number for the rule.
- `compute_id` (Number) ID of compute instance.
- `local_base_port` (Number) Internal base port number.
- `proto` (String) Network protocol, either 'tcp' or 'udp'.
- `public_port_start` (Number) External start port number for the rule.
### Optional
- **id** (String) The ID of this resource.
- **public_port_end** (Number) End port number (inclusive) for the ranged rule.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `public_port_end` (Number) End port number (inclusive) for the ranged rule.
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **local_ip** (String) IP address of compute instance.
- `id` (String) The ID of this resource.
- `local_ip` (String) IP address of compute instance.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_resgroup Resource - terraform-provider-decort"
page_title: "decort_resgroup Resource - decort"
subcategory: ""
description: |-
@@ -17,36 +17,36 @@ description: |-
### Required
- **account_id** (Number) Unique ID of the account, which this resource group belongs to.
- **name** (String) Name of this resource group. Names are case sensitive and unique within the context of a account.
- `account_id` (Number) Unique ID of the account, which this resource group belongs to.
- `name` (String) Name of this resource group. Names are case sensitive and unique within the context of a account.
### Optional
- **def_net_type** (String) Type of the network, which this resource group will use as default for its computes - PRIVATE or PUBLIC or NONE.
- **description** (String) User-defined text description of this resource group.
- **ext_ip** (String) IP address on the external netowrk to request when def_net_type=PRIVATE and ext_net_id is not 0
- **ext_net_id** (Number) ID of the external network for default ViNS. Pass 0 if def_net_type=PUBLIC or no external connection required for the defult ViNS when def_net_type=PRIVATE
- **id** (String) The ID of this resource.
- **ipcidr** (String) Address of the netowrk inside the private network segment (aka ViNS) if def_net_type=PRIVATE
- **quota** (Block List, Max: 1) Quota settings for this resource group. (see [below for nested schema](#nestedblock--quota))
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `def_net_type` (String) Type of the network, which this resource group will use as default for its computes - PRIVATE or PUBLIC or NONE.
- `description` (String) User-defined text description of this resource group.
- `ext_ip` (String) IP address on the external netowrk to request when def_net_type=PRIVATE and ext_net_id is not 0
- `ext_net_id` (Number) ID of the external network for default ViNS. Pass 0 if def_net_type=PUBLIC or no external connection required for the defult ViNS when def_net_type=PRIVATE
- `ipcidr` (String) Address of the netowrk inside the private network segment (aka ViNS) if def_net_type=PRIVATE
- `quota` (Block List, Max: 1) Quota settings for this resource group. (see [below for nested schema](#nestedblock--quota))
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **account_name** (String) Name of the account, which this resource group belongs to.
- **def_net_id** (Number) ID of the default network for this resource group (if any).
- `account_name` (String) Name of the account, which this resource group belongs to.
- `def_net_id` (Number) ID of the default network for this resource group (if any).
- `id` (String) The ID of this resource.
<a id="nestedblock--quota"></a>
### Nested Schema for `quota`
Optional:
- **cpu** (Number) Limit on the total number of CPUs in this resource group.
- **disk** (Number) Limit on the total volume of storage resources in this resource group, specified in GB.
- **ext_ips** (Number) Limit on the total number of external IP addresses this resource group can use.
- **ext_traffic** (Number) Limit on the total ingress network traffic for this resource group, specified in GB.
- **gpu_units** (Number) Limit on the total number of virtual GPUs this resource group can use.
- **ram** (Number) Limit on the total amount of RAM in this resource group, specified in MB.
- `cpu` (Number) Limit on the total number of CPUs in this resource group.
- `disk` (Number) Limit on the total volume of storage resources in this resource group, specified in GB.
- `ext_ips` (Number) Limit on the total number of external IP addresses this resource group can use.
- `ext_traffic` (Number) Limit on the total ingress network traffic for this resource group, specified in GB.
- `gpu_units` (Number) Limit on the total number of virtual GPUs this resource group can use.
- `ram` (Number) Limit on the total amount of RAM in this resource group, specified in MB.
<a id="nestedblock--timeouts"></a>
@@ -54,10 +54,10 @@ Optional:
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

69
docs/resources/sep.md Normal file
View File

@@ -0,0 +1,69 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_sep Resource - decort"
subcategory: ""
description: |-
---
# decort_sep (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `gid` (Number) grid (platform) ID
- `name` (String) SEP name
- `type` (String) type of storage
### Optional
- `clear_physically` (Boolean) clear disks and images physically
- `config` (String) sep config string
- `consumed_by` (List of Number) list of consumer nodes IDs
- `decommission` (Boolean) unlink everything that exists from SEP
- `desc` (String) sep description
- `enable` (Boolean) enable SEP after creation
- `field_edit` (Block List, Max: 1) (see [below for nested schema](#nestedblock--field_edit))
- `provided_by` (List of Number) list of provider nodes IDs
- `sep_id` (Number) sep type des id
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `upd_capacity_limit` (Boolean) Update SEP capacity limit
### Read-Only
- `ckey` (String)
- `guid` (Number)
- `id` (String) The ID of this resource.
- `meta` (List of String)
- `milestones` (Number)
- `obj_status` (String)
- `tech_status` (String)
<a id="nestedblock--field_edit"></a>
### Nested Schema for `field_edit`
Required:
- `field_name` (String)
- `field_type` (String)
- `field_value` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -0,0 +1,53 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_sep_config Resource - decort"
subcategory: ""
description: |-
---
# decort_sep_config (Resource)
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `sep_id` (Number)
### Optional
- `config` (String)
- `field_edit` (Block List, Max: 1) (see [below for nested schema](#nestedblock--field_edit))
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- `id` (String) The ID of this resource.
<a id="nestedblock--field_edit"></a>
### Nested Schema for `field_edit`
Required:
- `field_name` (String)
- `field_type` (String)
- `field_value` (String)
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_snapshot Resource - terraform-provider-decort"
page_title: "decort_snapshot Resource - decort"
subcategory: ""
description: |-
@@ -17,30 +17,30 @@ description: |-
### Required
- **compute_id** (Number) ID of the compute instance to create snapshot for.
- **label** (String) text label for snapshot. Must be unique among this compute snapshots.
- `compute_id` (Number) ID of the compute instance to create snapshot for.
- `label` (String) text label for snapshot. Must be unique among this compute snapshots.
### Optional
- **id** (String) The ID of this resource.
- **rollback** (Boolean) is rollback the snapshot
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `rollback` (Boolean) is rollback the snapshot
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **disks** (List of Number)
- **guid** (String) guid of the snapshot
- **timestamp** (Number) timestamp
- `disks` (List of Number)
- `guid` (String) guid of the snapshot
- `id` (String) The ID of this resource.
- `timestamp` (Number) timestamp
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_vins Resource - terraform-provider-decort"
page_title: "decort_vins Resource - decort"
subcategory: ""
description: |-
@@ -17,32 +17,32 @@ description: |-
### Required
- **account_id** (Number) ID of the account, which this ViNS belongs to. For ViNS created at account level, resource group ID is 0.
- **ext_net_id** (Number) ID of the external network this ViNS is connected to. Pass 0 if no external connection required.
- **name** (String) Name of the ViNS. Names are case sensitive and unique within the context of an account or resource group.
- `account_id` (Number) ID of the account, which this ViNS belongs to. For ViNS created at account level, resource group ID is 0.
- `ext_net_id` (Number) ID of the external network this ViNS is connected to. Pass 0 if no external connection required.
- `name` (String) Name of the ViNS. Names are case sensitive and unique within the context of an account or resource group.
### Optional
- **description** (String) Optional user-defined text description of this ViNS.
- **id** (String) The ID of this resource.
- **ipcidr** (String) Network address to use by this ViNS. This parameter is only valid when creating new ViNS.
- **rg_id** (Number) ID of the resource group, where this ViNS belongs to. Non-zero for ViNS created at resource group level, 0 otherwise.
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `description` (String) Optional user-defined text description of this ViNS.
- `ipcidr` (String) Network address to use by this ViNS. This parameter is only valid when creating new ViNS.
- `rg_id` (Number) ID of the resource group, where this ViNS belongs to. Non-zero for ViNS created at resource group level, 0 otherwise.
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
### Read-Only
- **account_name** (String) Name of the account, which this ViNS belongs to.
- **ext_ip_addr** (String) IP address of the external connection (valid for ViNS connected to external network, ignored otherwise).
- `account_name` (String) Name of the account, which this ViNS belongs to.
- `ext_ip_addr` (String) IP address of the external connection (valid for ViNS connected to external network, ignored otherwise).
- `id` (String) The ID of this resource.
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)

View File

@@ -1,6 +1,6 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "decort_virtual_image Resource - terraform-provider-decort"
page_title: "decort_virtual_image Resource - decort"
subcategory: ""
description: |-
@@ -17,67 +17,67 @@ description: |-
### Required
- **name** (String) name of the virtual image to create
- **target_id** (Number) ID of real image to link this virtual image to upon creation
- `name` (String) name of the virtual image to create
- `target_id` (Number) ID of real image to link this virtual image to upon creation
### Optional
- **account_id** (Number) AccountId to make the image exclusive
- **architecture** (String) binary architecture of this image, one of X86_64 of PPC64_LE
- **bootable** (Boolean) Does this image boot OS
- **computeci_id** (Number)
- **enabled** (Boolean)
- **enabled_stacks** (List of String)
- **hot_resize** (Boolean) Does this machine supports hot resize
- **id** (String) The ID of this resource.
- **link_to** (Number)
- **password** (String) Optional password for the image
- **password_dl** (String) password for upload binary media
- **permanently** (Boolean) Whether to completely delete the image
- **pool_name** (String) pool for image create
- **reason** (String)
- **sep_id** (Number) storage endpoint provider ID
- **shared_with** (List of Number)
- **timeouts** (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- **username** (String) Optional username for the image
- **username_dl** (String) username for upload binary media
- `account_id` (Number) AccountId to make the image exclusive
- `architecture` (String) binary architecture of this image, one of X86_64 of PPC64_LE
- `bootable` (Boolean) Does this image boot OS
- `computeci_id` (Number)
- `enabled` (Boolean)
- `enabled_stacks` (List of String)
- `hot_resize` (Boolean) Does this machine supports hot resize
- `link_to` (Number)
- `password` (String) Optional password for the image
- `password_dl` (String) password for upload binary media
- `permanently` (Boolean) Whether to completely delete the image
- `pool_name` (String) pool for image create
- `reason` (String)
- `sep_id` (Number) storage endpoint provider ID
- `shared_with` (List of Number)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
- `username` (String) Optional username for the image
- `username_dl` (String) username for upload binary media
### Read-Only
- **boot_type** (String) Boot type of image bios or uefi
- **desc** (String)
- **drivers** (List of String) List of types of compute suitable for image. Example: [ "KVM_X86" ]
- **gid** (Number) grid (platform) ID where this template should be create in
- **guid** (Number)
- **history** (List of Object) (see [below for nested schema](#nestedatt--history))
- **image_id** (Number) image id
- **image_type** (String) Image type linux, windows or other
- **last_modified** (Number)
- **meta** (List of String) meta
- **milestones** (Number)
- **provider_name** (String)
- **purge_attempts** (Number)
- **reference_id** (String)
- **res_id** (String)
- **res_name** (String)
- **rescuecd** (Boolean)
- **size** (Number) image size
- **status** (String) status
- **tech_status** (String) tech atatus
- **unc_path** (String) unc path
- **url** (String) URL where to download media from
- **version** (String) version
- `boot_type` (String) Boot type of image bios or uefi
- `desc` (String)
- `drivers` (List of String) List of types of compute suitable for image. Example: [ "KVM_X86" ]
- `gid` (Number) grid (platform) ID where this template should be create in
- `guid` (Number)
- `history` (List of Object) (see [below for nested schema](#nestedatt--history))
- `id` (String) The ID of this resource.
- `image_id` (Number) image id
- `image_type` (String) Image type linux, windows or other
- `last_modified` (Number)
- `meta` (List of String) meta
- `milestones` (Number)
- `provider_name` (String)
- `purge_attempts` (Number)
- `reference_id` (String)
- `res_id` (String)
- `res_name` (String)
- `rescuecd` (Boolean)
- `size` (Number) image size
- `status` (String) status
- `tech_status` (String) tech atatus
- `unc_path` (String) unc path
- `url` (String) URL where to download media from
- `version` (String) version
<a id="nestedblock--timeouts"></a>
### Nested Schema for `timeouts`
Optional:
- **create** (String)
- **default** (String)
- **delete** (String)
- **read** (String)
- **update** (String)
- `create` (String)
- `default` (String)
- `delete` (String)
- `read` (String)
- `update` (String)
<a id="nestedatt--history"></a>
@@ -85,8 +85,8 @@ Optional:
Read-Only:
- **guid** (String)
- **id** (Number)
- **timestamp** (Number)
- `guid` (String)
- `id` (Number)
- `timestamp` (Number)

69
go.mod
View File

@@ -1,11 +1,70 @@
module github.com/rudecs/terraform-provider-decort
go 1.15
go 1.18
require (
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/golang-jwt/jwt/v4 v4.4.3
github.com/google/uuid v1.3.0
github.com/hashicorp/terraform-plugin-docs v0.5.1
github.com/hashicorp/terraform-plugin-sdk v1.16.0
github.com/sirupsen/logrus v1.7.0
github.com/hashicorp/terraform-plugin-docs v0.13.0
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1
github.com/sirupsen/logrus v1.9.0
golang.org/x/net v0.4.0
)
require (
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver/v3 v3.2.0 // indirect
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
github.com/armon/go-radix v1.0.0 // indirect
github.com/bgentry/speakeasy v0.1.0 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-checkpoint v0.5.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect
github.com/hashicorp/go-hclog v1.4.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-plugin v1.4.8 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
github.com/hashicorp/hc-install v0.4.0 // indirect
github.com/hashicorp/hcl/v2 v2.15.0 // indirect
github.com/hashicorp/logutils v1.0.0 // indirect
github.com/hashicorp/terraform-exec v0.17.3 // indirect
github.com/hashicorp/terraform-json v0.14.0 // indirect
github.com/hashicorp/terraform-plugin-go v0.14.2 // indirect
github.com/hashicorp/terraform-plugin-log v0.7.0 // indirect
github.com/hashicorp/terraform-registry-address v0.1.0 // indirect
github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect
github.com/hashicorp/yamux v0.1.1 // indirect
github.com/huandu/xstrings v1.4.0 // indirect
github.com/imdario/mergo v0.3.13 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/mitchellh/cli v1.1.5 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/oklog/run v1.1.0 // indirect
github.com/posener/complete v1.2.3 // indirect
github.com/russross/blackfriday v1.6.0 // indirect
github.com/shopspring/decimal v1.3.1 // indirect
github.com/spf13/cast v1.5.0 // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect
github.com/vmihailenco/tagparser v0.1.2 // indirect
github.com/zclconf/go-cty v1.12.1 // indirect
golang.org/x/crypto v0.4.0 // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/text v0.5.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20221207170731-23e4bf6bdc37 // indirect
google.golang.org/grpc v1.51.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
)

614
go.sum
View File

@@ -1,45 +1,19 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
cloud.google.com/go v0.61.0 h1:NLQf5e1OMspfNT1RAHOB3ublr1TW3YTXO8OiWwVjK2U=
cloud.google.com/go v0.61.0/go.mod h1:XukKJg4Y7QsUu0Hxg3qQKUWR4VuWivmyMK2+rUyxAqw=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg=
github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60=
github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g=
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
github.com/Masterminds/sprig/v3 v3.2.0/go.mod h1:tWhwTbUTndesPNeF0C900vKoq283u6zp4APT9vaF3SI=
github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=
github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk=
github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0=
@@ -47,376 +21,305 @@ github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C6
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk=
github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE=
github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
github.com/andybalholm/crlf v0.0.0-20171020200849-670099aa064f/go.mod h1:k8feO4+kXDxro6ErPXBRTJ/ro2mf0SsFG8s7doP9kJE=
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U=
github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I=
github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec=
github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw=
github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
github.com/aws/aws-sdk-go v1.25.3 h1:uM16hIw9BotjZKMZlX05SN2EFtaWfi/NonPKIARiBLQ=
github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=
github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4=
github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E=
github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34=
github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw=
github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8=
github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0=
github.com/go-git/go-git/v5 v5.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM=
github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4=
github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang-jwt/jwt/v4 v4.4.3 h1:Hxl6lhQFj4AnOX6MLrsCb/+7tCj7DxP7VA+2rDIq5AU=
github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3 h1:GV+pQPG/EUUbkh47niozDcADz6go/dUwhVzdUQHIVRw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY=
github.com/hashicorp/go-getter v1.4.2-0.20200106182914-9813cbd4eb02/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY=
github.com/hashicorp/go-getter v1.5.3 h1:NF5+zOlQegim+w/EUhSLh6QhXHmZMEeHLQzllkQ3ROU=
github.com/hashicorp/go-getter v1.5.3/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI=
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI=
github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI=
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs=
github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw=
github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-hclog v1.4.0 h1:ctuWFGrhFha8BnnzxqeRGidlEcQkDyL5u8J8t5eA11I=
github.com/hashicorp/go-hclog v1.4.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/hashicorp/go-plugin v1.3.0 h1:4d/wJojzvHV1I4i/rrjVaeuyxWrLzDE1mDCyDy8fXS8=
github.com/hashicorp/go-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0=
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
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.4.4 h1:NVdrSdFRt3SkZtNckJ6tog7gbpRrcbOjQi/rgF7JYWQ=
github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
github.com/hashicorp/go-plugin v1.4.8 h1:CHGwpxYDOttQOY7HOWgETU9dyVjOXzniXDqJcYJE1zM=
github.com/hashicorp/go-plugin v1.4.8/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
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.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw=
github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws=
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90=
github.com/hashicorp/hcl/v2 v2.3.0 h1:iRly8YaMwTBAKhn1Ybk7VSdzbnopghktCD031P8ggUE=
github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8=
github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/hc-install v0.4.0 h1:cZkRFr1WVa0Ty6x5fTvL1TuO1flul231rWkGH92oYYk=
github.com/hashicorp/hc-install v0.4.0/go.mod h1:5d155H8EC5ewegao9A4PUTMNPZaq+TbOzkJJZ4vrXeI=
github.com/hashicorp/hcl/v2 v2.13.0 h1:0Apadu1w6M11dyGFxWnmhhcMjkbAiKCv7G1r/2QgCNc=
github.com/hashicorp/hcl/v2 v2.13.0/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0=
github.com/hashicorp/hcl/v2 v2.15.0 h1:CPDXO6+uORPjKflkWCCwoWc9uRp+zSIPcCQ+BrxV7m8=
github.com/hashicorp/hcl/v2 v2.15.0/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng=
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-config-inspect v0.0.0-20191115094559-17f92b0546e8 h1:+RyjwU+Gnd/aTJBPZVDNm903eXVjjqhbaR4Ypx3xYyY=
github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A=
github.com/hashicorp/terraform-exec v0.10.0/go.mod h1:tOT8j1J8rP05bZBGWXfMyU3HkLi1LWyqL3Bzsc3CJjo=
github.com/hashicorp/terraform-exec v0.15.0 h1:cqjh4d8HYNQrDoEmlSGelHmg2DYDh5yayckvJ5bV18E=
github.com/hashicorp/terraform-exec v0.15.0/go.mod h1:H4IG8ZxanU+NW0ZpDRNsvh9f0ul7C0nHP+rUR/CHs7I=
github.com/hashicorp/terraform-json v0.5.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU=
github.com/hashicorp/terraform-json v0.13.0 h1:Li9L+lKD1FO5RVFRM1mMMIBDoUHslOniyEi5CM+FWGY=
github.com/hashicorp/terraform-json v0.13.0/go.mod h1:y5OdLBCT+rxbwnpxZs9kGL7R9ExU76+cpdY8zHwoazk=
github.com/hashicorp/terraform-plugin-docs v0.5.1 h1:WwrUcamix9x0TqfTw/WGHMRqoTe1QPZKaeWJPuFb4lQ=
github.com/hashicorp/terraform-plugin-docs v0.5.1/go.mod h1:SQwEgy0/B0UPQ07rNEG1Wpt6E3jvRcCwkVHPNybGgc0=
github.com/hashicorp/terraform-plugin-sdk v1.16.0 h1:NrkXMRjHErUPPTHQkZ6JIn6bByiJzGnlJzH1rVdNEuE=
github.com/hashicorp/terraform-plugin-sdk v1.16.0/go.mod h1:5sVxrwW6/xzFhZyql+Q9zXCUEJaGWcBIxBbZFLpVXOI=
github.com/hashicorp/terraform-plugin-test/v2 v2.1.2/go.mod h1:jerO5mrd+jVNALy8aiq+VZOg/CR8T2T1QR3jd6JKGOI=
github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596 h1:hjyO2JsNZUKT1ym+FAdlBEkGPevazYsmVgIMw7dVELg=
github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg=
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
github.com/hashicorp/terraform-exec v0.17.2 h1:EU7i3Fh7vDUI9nNRdMATCEfnm9axzTnad8zszYZ73Go=
github.com/hashicorp/terraform-exec v0.17.2/go.mod h1:tuIbsL2l4MlwwIZx9HPM+LOV9vVyEfBYu2GsO1uH3/8=
github.com/hashicorp/terraform-exec v0.17.3 h1:MX14Kvnka/oWGmIkyuyvL6POx25ZmKrjlaclkx3eErU=
github.com/hashicorp/terraform-exec v0.17.3/go.mod h1:+NELG0EqQekJzhvikkeQsOAZpsw0cv/03rbeQJqscAI=
github.com/hashicorp/terraform-json v0.14.0 h1:sh9iZ1Y8IFJLx+xQiKHGud6/TSUCM0N8e17dKDpqV7s=
github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM=
github.com/hashicorp/terraform-plugin-docs v0.13.0 h1:6e+VIWsVGb6jYJewfzq2ok2smPzZrt1Wlm9koLeKazY=
github.com/hashicorp/terraform-plugin-docs v0.13.0/go.mod h1:W0oCmHAjIlTHBbvtppWHe8fLfZ2BznQbuv8+UD8OucQ=
github.com/hashicorp/terraform-plugin-go v0.12.0 h1:6wW9mT1dSs0Xq4LR6HXj1heQ5ovr5GxXNJwkErZzpJw=
github.com/hashicorp/terraform-plugin-go v0.12.0/go.mod h1:kwhmaWHNDvT1B3QiSJdAtrB/D4RaKSY/v3r2BuoWK4M=
github.com/hashicorp/terraform-plugin-go v0.14.2 h1:rhsVEOGCnY04msNymSvbUsXfRLKh9znXZmHlf5e8mhE=
github.com/hashicorp/terraform-plugin-go v0.14.2/go.mod h1:Q12UjumPNGiFsZffxOsA40Tlz1WVXt2Evh865Zj0+UA=
github.com/hashicorp/terraform-plugin-log v0.6.0 h1:/Vq78uSIdUSZ3iqDc9PESKtwt8YqNKN6u+khD+lLjuw=
github.com/hashicorp/terraform-plugin-log v0.6.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4=
github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs=
github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.19.0 h1:7gDAcfto/C4Cjtf90SdukQshsxdMxJ/P69QxiF3digI=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.19.0/go.mod h1:/WYikYjhKB7c2j1HmXZhRsAARldRb4M38bLCLOhC3so=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1 h1:zHcMbxY0+rFO9gY99elV/XC/UnQVg7FhRCbj1i5b7vM=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1/go.mod h1:+tNlb0wkfdsDJ7JEiERLz4HzM19HyiuIoGzTsM7rPpw=
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c h1:D8aRO6+mTqHfLsK/BC3j5OAoogv1WLRWzY1AaTo3rBg=
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c/go.mod h1:Wn3Na71knbXc1G8Lh+yu/dQWWJeFQEpDeJMtWMtlmNI=
github.com/hashicorp/terraform-registry-address v0.1.0 h1:W6JkV9wbum+m516rCl5/NjKxCyTVaaUBbzYcMzBDO3U=
github.com/hashicorp/terraform-registry-address v0.1.0/go.mod h1:EnyO2jYO6j29DTHbJcm00E5nQTFeTtyZH3H5ycydQ5A=
github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0=
github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg=
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ=
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU=
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE=
github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74=
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck=
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.11.2 h1:MiK62aErc3gIiVEtyzKfeOHgW7atJb5g/KNX5m3c2nQ=
github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
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/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A=
github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-colorable v0.1.11 h1:nQ+aFkoE2TMGc0b68U2OKSexC+eq46+XwZzWXHRmPYs=
github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.5/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 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mitchellh/cli v1.1.1/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
github.com/mitchellh/cli v1.1.2 h1:PvH+lL2B7IQ101xQL63Of8yFS2y+aDlsFcsqNc+u/Kw=
github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mitchellh/cli v1.1.4 h1:qj8czE26AU4PbiaPXK5uVmMSM+V5BYsFBiM9HhGRLUA=
github.com/mitchellh/cli v1.1.4/go.mod h1:vTLESy5mRhKOs9KDp0/RATawxP1UqBmdrpVRMnpcvKQ=
github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng=
github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
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.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.0.4 h1:ZU1VNC02qyufSZsjjs7+khruk2fKvbQ3TwRV/IBCeFA=
github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce h1:RPclfga2SEJmgMmz2k+Mg7cowZ8yv4Trqw9UsJby758=
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
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/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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/posener/complete v1.2.1 h1:LrvDIY//XNo65Lq84G/akBuMGlawHvGBABv8f/ZN6DI=
github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E=
github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo=
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=
github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ=
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmihailenco/msgpack v4.0.1+incompatible h1:RMF1enSPeKTlXrXdOcqjFUElywVZjjC6pqse21bKbEU=
github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U=
github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4=
github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY=
github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc=
github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI=
github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8=
github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8=
github.com/zclconf/go-cty v1.9.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk=
github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0=
github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk=
github.com/zclconf/go-cty v1.12.1 h1:PcupnljUm9EIvbgSHQnHhUr3fO6oFmkOrvs2BAFNXXY=
github.com/zclconf/go-cty v1.12.1/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA=
github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8=
github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8=
github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8=
golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -424,201 +327,104 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73r
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210326060303-6b1517762897 h1:KrsHThm5nFk34YtATK1LsThyGhGbGe1olrte/HInHvs=
golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-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-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/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 h1:foEbQz/B0Oz6YIqu/69kfXPYeFQAuuMYFkjaqXzl5Wo=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
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 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
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.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed h1:+qzWo37K31KxduIYaBeMqJ8MUOyTayOQKpH9aDPLMSY=
golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk=
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
google.golang.org/genproto v0.0.0-20200711021454-869866162049 h1:YFTFpQhgvrLrmxtiIncJxFXeCyq84ixuKWVCaCAi9Oc=
google.golang.org/genproto v0.0.0-20200711021454-869866162049/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/genproto v0.0.0-20221207170731-23e4bf6bdc37 h1:jmIfw8+gSvXcZSgaFAGyInDXeWzUhvYH57G/5GKMn70=
google.golang.org/genproto v0.0.0-20221207170731-23e4bf6bdc37/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE=
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w=
google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.51.0 h1:E1eGv1FTqoLIdnBCZufiSHgKjlqG6fKFf6pPWtMTh8U=
google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -628,31 +434,29 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0/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=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

26
internal/constants/api.go Normal file
View File

@@ -0,0 +1,26 @@
/*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors:
Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package constants
//CloudApi - a part of url for cloudapi
const CloudApi = "/restmachine/cloudapi"
//CloudBroker - a part of url for cloudbroker
const CloudBroker = "/restmachine/cloudbroker"

View File

@@ -1,6 +1,9 @@
/*
Copyright (c) 2019-2021 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Author: Sergey Shubin, <sergey.shubin@digitalenergy.online>, <svs1370@gmail.com>
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors:
Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online>
Kasim Baybikov, <kmbaybikov@basistech.ru>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -15,29 +18,22 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
/*
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
Technology platfom.
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
*/
package decort
package constants
// LimitMaxVinsPerResgroup set maximum number of VINs instances per Resource Group
const LimitMaxVinsPerResgroup=4
const LimitMaxVinsPerResgroup = 4
// MaxSshKeysPerCompute sets maximum number of user:ssh_key pairs to authorize when creating new compute
const MaxSshKeysPerCompute=12
const MaxSshKeysPerCompute = 12
// MaxExtraDisksPerCompute sets maximum number of extra disks that can be added when creating new compute
const MaxExtraDisksPerCompute=12
const MaxExtraDisksPerCompute = 12
// MaxNetworksPerCompute sets maximum number of vNICs per compute
const MaxNetworksPerCompute=8
const MaxNetworksPerCompute = 8
// MaxCpusPerCompute sets maximum number of vCPUs per compute
const MaxCpusPerCompute=128
const MaxCpusPerCompute = 128
// MinRamPerCompute sets minimum amount of RAM per compute in MB
const MinRamPerCompute=128
const MinRamPerCompute = 128

View File

@@ -0,0 +1,32 @@
/*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors:
Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online>
Kasim Baybikov, <kmbaybikov@basistech.ru>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package constants
import "time"
// timeouts for API calls from CRUD functions of Terraform plugin
var Timeout30s = time.Second * 30
var Timeout60s = time.Second * 60
var Timeout180s = time.Second * 180
var Timeout300s = time.Second * 300
var Timeout600s = time.Second * 600
var Timeout20m = time.Minute * 20
var Timeout30m = time.Minute * 30

Some files were not shown because too many files have changed in this diff Show More