Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9402d6f291 |
37
CHANGELOG.md
37
CHANGELOG.md
@@ -1,36 +1,5 @@
|
|||||||
### New data sources
|
### Version 3.2.1
|
||||||
|
|
||||||
- decort_disk_snapshot_list
|
### Bug fixes
|
||||||
- decort_disk_snapshot
|
|
||||||
- decort_disk_list_deleted
|
|
||||||
- decort_disk_list_unattached
|
|
||||||
- decort_disk_list_types
|
|
||||||
- decort_disk_list_types_detailed
|
|
||||||
|
|
||||||
### New resources
|
- Fix bug with creating kvmvm. Now, the resource kvmvm creates with user defined network.
|
||||||
|
|
||||||
- decort_disk_snapshot
|
|
||||||
|
|
||||||
### New features
|
|
||||||
|
|
||||||
- add dockerfile for creating an image for the tf provider
|
|
||||||
- change behaviour to disk resource: check the disk status during update the tf state
|
|
||||||
- add disks block to kvmvm resource
|
|
||||||
|
|
||||||
### New articles on wiki
|
|
||||||
|
|
||||||
- [Сборка terraform провайдера в образ](https://github.com/rudecs/terraform-provider-decort/wiki/04.05-Сборка-terraform-провайдера-в-образ)
|
|
||||||
- [Массовое создание ресурсов. Мета аргументы](https://github.com/rudecs/terraform-provider-decort/wiki/05.04-Массовое-создание-ресурсов.-Мета-аргументы)
|
|
||||||
- [Удаление ресурсов](https://github.com/rudecs/terraform-provider-decort/wiki/05.05-Удаление-ресурсов)
|
|
||||||
- [Управление снимком диска](https://github.com/rudecs/terraform-provider-decort/wiki/07.01.19-Resource-функция-decort_disk_snapshot-управление-снимком-диска)
|
|
||||||
- [Получение списка типов для диска](https://github.com/rudecs/terraform-provider-decort/wiki/06.01.39-Data-функция-decort_disk_list_types-получение-списка-типов-диска)
|
|
||||||
- [Расширенное получение списка поддерживаемых типов](https://github.com/rudecs/terraform-provider-decort/wiki/06.01.40-Data-функция-decort_disk_list_types_detailed-расширенное-получение-информации-о-поддерживаемых-типах-дисков)
|
|
||||||
- [Получение информации об удаленных дисках](https://github.com/rudecs/terraform-provider-decort/wiki/06.01.41-Data-функция-decort_disk_list_deleted-получение-информации-об-удаленных-дисках)
|
|
||||||
- [Получение информации о неподключенных дисках](https://github.com/rudecs/terraform-provider-decort/wiki/06.01.42-Data-функция-decort_disk_list_unattached-получение-информации-о-неподключенных-дисках)
|
|
||||||
- [Получение списка снимков состояния диска](https://github.com/rudecs/terraform-provider-decort/wiki/06.01.43-Data-функция-decort_disk_snapshot_list-получение-списка-снимков-состояния-диска)
|
|
||||||
- [Получение информацуии о снимке состояния диска](https://github.com/rudecs/terraform-provider-decort/wiki/06.01.44-Data-функция-decort_disk_snapshot-получение-информации-о-снимке-состояния)
|
|
||||||
|
|
||||||
### Update articles
|
|
||||||
|
|
||||||
- [Управление дисковыми ресурсами.](https://github.com/rudecs/terraform-provider-decort/wiki/07.01.03-Resource-функция-decort_disk-управление-дисковыми-ресурсами)
|
|
||||||
- [Управление виртуальными серверами, создаваемыми на базе системы виртуализации KVM](https://github.com/rudecs/terraform-provider-decort/wiki/07.01.01-Resource-функция-decort_kvmvm-управление-виртуальными-машинами-на-базе-KVM)
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ FROM docker.io/hashicorp/terraform:latest
|
|||||||
|
|
||||||
WORKDIR /opt/decort/tf/
|
WORKDIR /opt/decort/tf/
|
||||||
COPY provider.tf ./
|
COPY provider.tf ./
|
||||||
COPY terraform-provider-decort ./terraform.d/plugins/digitalenergy.online/decort/decort/3.1.1/linux_amd64/
|
COPY terraform-provider-decort ./terraform.d/plugins/digitalenergy.online/decort/decort/3.2.1/linux_amd64/
|
||||||
RUN terraform init
|
RUN terraform init
|
||||||
|
|
||||||
WORKDIR /tf
|
WORKDIR /tf
|
||||||
|
|||||||
4
Makefile
4
Makefile
@@ -6,7 +6,7 @@ NAME=terraform-provider-decort
|
|||||||
BINARY=${NAME}.exe
|
BINARY=${NAME}.exe
|
||||||
WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${NAMESPACE}/${VERSION}/${OS_ARCH}
|
WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${NAMESPACE}/${VERSION}/${OS_ARCH}
|
||||||
MAINPATH = ./cmd/decort/
|
MAINPATH = ./cmd/decort/
|
||||||
VERSION=3.1.1
|
VERSION=3.2.1
|
||||||
#OS_ARCH=darwin_amd64
|
#OS_ARCH=darwin_amd64
|
||||||
#OS_ARCH=windows_amd64
|
#OS_ARCH=windows_amd64
|
||||||
#OS_ARCH=linux_amd64
|
#OS_ARCH=linux_amd64
|
||||||
@@ -15,7 +15,7 @@ default: install
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
GOOS=linux GOARCH=amd64 go build -o terraform-provider-decort ./cmd/decort/
|
GOOS=linux GOARCH=amd64 go build -o terraform-provider-decort ./cmd/decort/
|
||||||
docker build . -t rudecs/tf:3.1.1
|
docker build . -t rudecs/tf:3.2.1
|
||||||
rm terraform-provider-decort
|
rm terraform-provider-decort
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
|
|||||||
@@ -76,9 +76,8 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
urlValues.Add("cpu", fmt.Sprintf("%d", d.Get("cpu").(int)))
|
urlValues.Add("cpu", fmt.Sprintf("%d", d.Get("cpu").(int)))
|
||||||
urlValues.Add("ram", fmt.Sprintf("%d", d.Get("ram").(int)))
|
urlValues.Add("ram", fmt.Sprintf("%d", d.Get("ram").(int)))
|
||||||
urlValues.Add("imageId", fmt.Sprintf("%d", d.Get("image_id").(int)))
|
urlValues.Add("imageId", fmt.Sprintf("%d", d.Get("image_id").(int)))
|
||||||
urlValues.Add("bootDisk", fmt.Sprintf("%d", d.Get("boot_disk_size").(int)))
|
urlValues.Add("netType", "NONE")
|
||||||
urlValues.Add("netType", "NONE") // at the 1st step create isolated compute
|
urlValues.Add("start", "0") // at the 1st step create compute in a stopped state
|
||||||
urlValues.Add("start", "0") // at the 1st step create compute in a stopped state
|
|
||||||
|
|
||||||
argVal, argSet := d.GetOk("description")
|
argVal, argSet := d.GetOk("description")
|
||||||
if argSet {
|
if argSet {
|
||||||
@@ -97,9 +96,26 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
urlValues.Add("ipaType", ipaType.(string))
|
urlValues.Add("ipaType", ipaType.(string))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if bootSize, ok := d.GetOk("boot_disk_size"); ok {
|
||||||
|
urlValues.Add("bootDisk", fmt.Sprintf("%d", bootSize.(int)))
|
||||||
|
}
|
||||||
|
|
||||||
if IS, ok := d.GetOk("is"); ok {
|
if IS, ok := d.GetOk("is"); ok {
|
||||||
urlValues.Add("IS", IS.(string))
|
urlValues.Add("IS", IS.(string))
|
||||||
}
|
}
|
||||||
|
if networks, ok := d.GetOk("network"); ok {
|
||||||
|
if networks.(*schema.Set).Len() > 0 {
|
||||||
|
ns := networks.(*schema.Set).List()
|
||||||
|
defaultNetwork := ns[0].(map[string]interface{})
|
||||||
|
urlValues.Set("netType", defaultNetwork["net_type"].(string))
|
||||||
|
urlValues.Add("netId", fmt.Sprintf("%d", defaultNetwork["net_id"].(int)))
|
||||||
|
ipaddr, ipSet := defaultNetwork["ip_address"] // "ip_address" key is optional
|
||||||
|
if ipSet {
|
||||||
|
urlValues.Add("ipAddr", ipaddr.(string))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
sshKeysVal, sshKeysSet := d.GetOk("ssh_keys")
|
sshKeysVal, sshKeysSet := d.GetOk("ssh_keys")
|
||||||
@@ -172,7 +188,7 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
argVal, argSet = d.GetOk("network")
|
argVal, argSet = d.GetOk("network")
|
||||||
if argSet && argVal.(*schema.Set).Len() > 0 {
|
if argSet && argVal.(*schema.Set).Len() > 0 {
|
||||||
log.Debugf("resourceComputeCreate: calling utilityComputeNetworksConfigure to attach %d network(s)", argVal.(*schema.Set).Len())
|
log.Debugf("resourceComputeCreate: calling utilityComputeNetworksConfigure to attach %d network(s)", argVal.(*schema.Set).Len())
|
||||||
err = utilityComputeNetworksConfigure(ctx, d, m, false) // do_delta=false, as we are working on a new compute
|
err = utilityComputeNetworksConfigure(ctx, d, m, false, true) // do_delta=false, as we are working on a new compute
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("resourceComputeCreate: error when attaching networks to a new Compute ID %d: %s", compId, err)
|
log.Errorf("resourceComputeCreate: error when attaching networks to a new Compute ID %d: %s", compId, err)
|
||||||
cleanup = true
|
cleanup = true
|
||||||
@@ -332,7 +348,7 @@ func resourceComputeUpdate(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 4. Calculate and apply changes to network connections
|
// 4. Calculate and apply changes to network connections
|
||||||
err := utilityComputeNetworksConfigure(ctx, d, m, true) // pass do_delta = true to apply changes, if any
|
err := utilityComputeNetworksConfigure(ctx, d, m, true, false) // pass do_delta = true to apply changes, if any
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return diag.FromErr(err)
|
return diag.FromErr(err)
|
||||||
}
|
}
|
||||||
@@ -534,7 +550,7 @@ func ResourceComputeSchemaMake() map[string]*schema.Schema {
|
|||||||
|
|
||||||
"boot_disk_size": {
|
"boot_disk_size": {
|
||||||
Type: schema.TypeInt,
|
Type: schema.TypeInt,
|
||||||
Required: true,
|
Optional: true,
|
||||||
Description: "This compute instance boot disk size in GB. Make sure it is large enough to accomodate selected OS image.",
|
Description: "This compute instance boot disk size in GB. Make sure it is large enough to accomodate selected OS image.",
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -628,6 +644,7 @@ func ResourceComputeSchemaMake() map[string]*schema.Schema {
|
|||||||
"network": {
|
"network": {
|
||||||
Type: schema.TypeSet,
|
Type: schema.TypeSet,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
|
MinItems: 1,
|
||||||
MaxItems: constants.MaxNetworksPerCompute,
|
MaxItems: constants.MaxNetworksPerCompute,
|
||||||
Elem: &schema.Resource{
|
Elem: &schema.Resource{
|
||||||
Schema: networkSubresourceSchemaMake(),
|
Schema: networkSubresourceSchemaMake(),
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ func utilityComputeExtraDisksConfigure(ctx context.Context, d *schema.ResourceDa
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData, m interface{}, do_delta bool) error {
|
func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData, m interface{}, do_delta bool, skip_zero bool) error {
|
||||||
// "d" is filled with data according to computeResource schema, so extra networks config is retrieved via "network" key
|
// "d" is filled with data according to computeResource schema, so extra networks config is retrieved via "network" key
|
||||||
// If do_delta is true, this function will identify changes between new and existing specs for network and try to
|
// If do_delta is true, this function will identify changes between new and existing specs for network and try to
|
||||||
// update compute configuration accordingly
|
// update compute configuration accordingly
|
||||||
@@ -165,7 +165,10 @@ func utilityComputeNetworksConfigure(ctx context.Context, d *schema.ResourceData
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, runner := range new_set.(*schema.Set).List() {
|
for i, runner := range new_set.(*schema.Set).List() {
|
||||||
|
if i == 0 && skip_zero {
|
||||||
|
continue
|
||||||
|
}
|
||||||
urlValues := &url.Values{}
|
urlValues := &url.Values{}
|
||||||
net_data := runner.(map[string]interface{})
|
net_data := runner.(map[string]interface{})
|
||||||
urlValues.Add("computeId", d.Id())
|
urlValues.Add("computeId", d.Id())
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
decort = {
|
decort = {
|
||||||
source = "digitalenergy.online/decort/decort"
|
source = "digitalenergy.online/decort/decort"
|
||||||
version = "3.1.1"
|
version = "3.2.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user