diff --git a/CHANGELOG.md b/CHANGELOG.md
index 55c9674..883bb2e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,40 +1,23 @@
-## Version 4.9.1
+## Version 4.9.2
### Добавлено
### Исправлено
-#### account
-| Идентификатор
задачи | Описание |
-| --- | --- |
-| BATF-823 | Ошибка удаления resource 'decort_cb_account' в cloudbroker/account |
-| BATF-832 | Ошибка отлючения resource 'decort_account' в cloudapi/account и resource 'decort_cb_account' в cloudbroker/account |
-
-#### k8s
+#### image
| Идентификатор
задачи | Описание |
| --- | --- |
-| BATF-955 | Ошибка редактирования resource 'decort_cb_k8s_cp' в cloudbroker/k8s |
+| BATF-999 | Изменен тип поля `url` с optional на required в resource `decort_cb_image` в cloudbroker/image |
-#### sep
+#### kvmvm
| Идентификатор
задачи | Описание |
| --- | --- |
-| BATF-823 | Ошибка при получении данных при заданном поле `rg_id` в datasource `decort_cb_available_sep_and_pools_list` в cloudbroker/sep и в datasource `decort_available_sep_and_pools_list` в cloudapi/sep |
+| BATF-1002 | Ошибка при смене `ip_address` в блоке `network` приводящаяя к смене MAC адрес сети в resource `decort_compute` и `decort_cb_compute` в cloupapi/kvmvm и cloudbroker/kvmvm |
### Удалено
#### image
| Идентификатор
задачи | Описание |
| --- | --- |
-| BATF-835 | Вычисляемое поле `meta` в resources `decort_cb_cdrom_image`, `decort_cb_virtual_image` и data source `decort_cb_image_list_stacks` в cloudbroker/image |
-| BATF-825 | Опциональное поле `accounts` в resources `decort_cb_image`, `decort_cb_image_from_blank_compute` `decort_cb_image_from_platform_disk` в cloudbroker/image |
-
-#### kvmvm
-| Идентификатор
задачи | Описание |
-| --- | --- |
-| BATF-962 | Поле `stateless` в resource `decort_kvmvm` в cloudapi/kvmvm|
-
-#### vins
-| Идентификатор
задачи | Описание |
-| --- | --- |
-| BATF-881 | Значение по умолчанию в поле `pre_reservations_num` в resource `decort_vins` в cloudapi/vins и в resource `decort_cb_vins` в cloudbroker/vins |
+| BATF-999 | Опциональное поле `file_path` в resource `decort_cb_image` в cloudbroker/image |
diff --git a/Makefile b/Makefile
index 25b45f3..90ca8ac 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ ZIPDIR = ./zip
BINARY=${NAME}
WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${NAMESPACE}/${VERSION}/${OS_ARCH}
MAINPATH = ./cmd/decort/
-VERSION=4.9.1
+VERSION=4.9.2
OS_ARCH=$(shell go env GOHOSTOS)_$(shell go env GOHOSTARCH)
FILES = ${BINARY}_${VERSION}_darwin_amd64\
diff --git a/docs/resources/cb_image.md b/docs/resources/cb_image.md
index d6ad011..a3fddfb 100644
--- a/docs/resources/cb_image.md
+++ b/docs/resources/cb_image.md
@@ -20,6 +20,7 @@ description: |-
- `boot_type` (String) Boot type of image bios or uefi
- `image_type` (String) Image type linux, windows or other
- `name` (String) Name of the rescue disk
+- `url` (String) URL where to download media from
### Optional
@@ -30,7 +31,6 @@ description: |-
- `drivers` (List of String) List of types of compute suitable for image. Example: [ "KVM_X86" ]
- `enabled` (Boolean)
- `enabled_stacks` (List of Number)
-- `file_path` (String) path to image file
- `hot_resize` (Boolean) Does this machine supports hot resize
- `network_interface_naming` (String) select a network interface naming pattern for your Linux machine. eth - onboard, ens - pci slot naming
- `password` (String) Optional password for the image
@@ -40,7 +40,6 @@ description: |-
- `shared_with` (List of Number)
- `sync_mode` (Boolean) Create image from a media identified by URL (in synchronous mode)
- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts))
-- `url` (String) URL where to download media from
- `username` (String) Optional username for the image
- `username_dl` (String) username for upload binary media
diff --git a/go.mod b/go.mod
index 9dc9b01..a5eb68c 100644
--- a/go.mod
+++ b/go.mod
@@ -8,7 +8,7 @@ require (
github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0
github.com/sirupsen/logrus v1.9.0
golang.org/x/net v0.23.0
- repository.basistech.ru/BASIS/decort-golang-sdk v1.11.4
+ repository.basistech.ru/BASIS/decort-golang-sdk v1.11.6
)
require (
diff --git a/go.sum b/go.sum
index 346bc97..5c66ff3 100644
--- a/go.sum
+++ b/go.sum
@@ -273,5 +273,5 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-repository.basistech.ru/BASIS/decort-golang-sdk v1.11.4 h1:OEFgSEGjzut+vVMGeNgoNq3dtk63FbXB6yGLTywtAas=
-repository.basistech.ru/BASIS/decort-golang-sdk v1.11.4/go.mod h1:OaUynHHuSjWMzpfyoL4au6oLcUogqUkPPBKA15pbHWo=
+repository.basistech.ru/BASIS/decort-golang-sdk v1.11.6 h1:CTcMkUJgwDsUA+Az8FI5iLpZDk4ubOO4JnAfbOwDnM0=
+repository.basistech.ru/BASIS/decort-golang-sdk v1.11.6/go.mod h1:OaUynHHuSjWMzpfyoL4au6oLcUogqUkPPBKA15pbHWo=
diff --git a/internal/service/cloudapi/kvmvm/utility_compute.go b/internal/service/cloudapi/kvmvm/utility_compute.go
index 6b20898..acd4c8a 100644
--- a/internal/service/cloudapi/kvmvm/utility_compute.go
+++ b/internal/service/cloudapi/kvmvm/utility_compute.go
@@ -397,15 +397,12 @@ func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap,
newMap := newNetwork.(map[string]interface{})
if newMap["net_type"] == oldMap["net_type"] && newMap["net_id"] == oldMap["net_id"] && newMap["weight"] == oldMap["weight"] && (newMap["mtu"] == oldMap["mtu"] || newMap["mtu"].(int) == 0) {
found = true
- switch {
- case (newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && (newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != ""):
+ if (newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && (newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != "") {
changeIpMap = append(changeIpMap, newMap)
- found = true
- fallthrough
- case newMap["mac"] != oldMap["mac"] && newMap["mac"].(string) != "":
+ }
+ if newMap["mac"] != oldMap["mac"] && newMap["mac"].(string) != "" {
newMap["old_mac"] = oldMap["mac"]
changeMacMap = append(changeMacMap, newMap)
- found = true
}
}
if found {
diff --git a/internal/service/cloudbroker/image/resource_image.go b/internal/service/cloudbroker/image/resource_image.go
index 76617cf..53b28c0 100644
--- a/internal/service/cloudbroker/image/resource_image.go
+++ b/internal/service/cloudbroker/image/resource_image.go
@@ -49,30 +49,13 @@ import (
func resourceImageCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceImageCreate: called for image %s", d.Get("name").(string))
- url, urlOk := d.GetOk("url")
- filePath, fileImageOk := d.GetOk("file_path")
-
- if !urlOk && !fileImageOk {
- return diag.Errorf("resourceImageCreate: no valid url or file_path specified")
- }
-
- if urlOk && fileImageOk {
- return diag.Errorf("resourceImageCreate: either url or resource file_path should be specified")
- }
+ url, _ := d.GetOk("url")
c := m.(*controller.ControllerCfg)
syncMode := d.Get("sync_mode").(bool)
var imageId uint64
- if fileImageOk {
- var err error
- url, err = c.CloudBroker().Image().UploadImageFile(ctx, filePath.(string))
- if err != nil {
- return diag.FromErr(err)
- }
- }
-
if syncMode {
req, err := SyncCreateRequest(ctx, d, m, url.(string))
if err != nil {
diff --git a/internal/service/cloudbroker/image/schema.go b/internal/service/cloudbroker/image/schema.go
index 08ee101..fbc026e 100644
--- a/internal/service/cloudbroker/image/schema.go
+++ b/internal/service/cloudbroker/image/schema.go
@@ -1174,15 +1174,9 @@ func resourceImageSchemaMake() map[string]*schema.Schema {
},
"url": {
Type: schema.TypeString,
- Optional: true,
- Computed: true,
+ Required: true,
Description: "URL where to download media from",
},
- "file_path": {
- Type: schema.TypeString,
- Optional: true,
- Description: "path to image file",
- },
"boot_type": {
Type: schema.TypeString,
Required: true,
diff --git a/internal/service/cloudbroker/kvmvm/utility_compute.go b/internal/service/cloudbroker/kvmvm/utility_compute.go
index 8e3b3ac..ded3dcc 100644
--- a/internal/service/cloudbroker/kvmvm/utility_compute.go
+++ b/internal/service/cloudbroker/kvmvm/utility_compute.go
@@ -764,15 +764,12 @@ func differenceNetwork(oldList, newList []interface{}) (detachMap, changeIpMap,
newMap := newNetwork.(map[string]interface{})
if newMap["net_type"] == oldMap["net_type"] && newMap["net_id"] == oldMap["net_id"] && newMap["weight"] == oldMap["weight"] && (newMap["mtu"] == oldMap["mtu"] || newMap["mtu"].(int) == 0) {
found = true
- switch {
- case (newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && (newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != ""):
+ if (newMap["net_type"].(string) == "EXTNET" || newMap["net_type"].(string) == "VINS") && (newMap["ip_address"] != oldMap["ip_address"] && newMap["ip_address"].(string) != "") {
changeIpMap = append(changeIpMap, newMap)
- found = true
- fallthrough
- case newMap["mac"] != oldMap["mac"] && newMap["mac"].(string) != "":
+ }
+ if newMap["mac"] != oldMap["mac"] && newMap["mac"].(string) != "" {
newMap["old_mac"] = oldMap["mac"]
changeMacMap = append(changeMacMap, newMap)
- found = true
}
}
if found {
diff --git a/samples/cloudbroker/image/resource_image/main.tf b/samples/cloudbroker/image/resource_image/main.tf
index 6cf9e5a..898b7c7 100644
--- a/samples/cloudbroker/image/resource_image/main.tf
+++ b/samples/cloudbroker/image/resource_image/main.tf
@@ -38,19 +38,11 @@ resource "decort_cb_image" "my_image" {
name = "test_image_rename"
#адрес образа
- #опциональный параметр
- #внимание, для создания ресурса обязательно должен быть указан или url, или file_path
+ #обязательный параметр
#тип - строка
#используется при создании
url = "https://colba.decs.online/index.php/s/G3H7AREngzeKGw2/download"
- #путь к образу для загрузки
- #опциональный параметр
- #внимание, для создания ресурса обязательно должен быть указан или url, или file_path
- #тип - строка
- #используется при создании
- file_path = "img.iso"
-
#тип загрузки образа
#обязательный параметр
#тип - строка