Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 987fef81d7 | |||
|
|
f44c69003b | ||
| 22897c3bf5 |
@@ -1,9 +1,8 @@
|
|||||||
## Version 4.9.3
|
## Version 4.9.6
|
||||||
|
|
||||||
### Исправлено
|
### Исправлено
|
||||||
|
|
||||||
#### kvmvm
|
#### kvmvm
|
||||||
| Идентификатор<br>задачи | Описание |
|
| Идентификатор<br>задачи | Описание |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| BATF-1016 | Ошибка при изменении полей `ram` и `cpu`, приводящая к невозможности измения параметров виртуальной машины в resources `decort_kvmvm` и `decort_cb_kvmvm` в cloudapi/kvmvm и в cloudbroker/kvmvm |
|
| BATF-1147 | Остановка виртуальной машины перед удалением в resources `decort_kvmvm` и `decort_cb_kvmvm` в cloudapi/kvmvm и в cloudbroker/kvmvm |
|
||||||
| BATF-1018 | Ошибка при изменении поля `started`, приводящая к невозможности запуска виртуальной машины в resources `decort_kvmvm` в cloudapi/kvmvm |
|
|
||||||
2
Makefile
2
Makefile
@@ -7,7 +7,7 @@ ZIPDIR = ./zip
|
|||||||
BINARY=${NAME}
|
BINARY=${NAME}
|
||||||
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=4.9.3
|
VERSION=4.9.6
|
||||||
OS_ARCH=$(shell go env GOHOSTOS)_$(shell go env GOHOSTARCH)
|
OS_ARCH=$(shell go env GOHOSTOS)_$(shell go env GOHOSTARCH)
|
||||||
|
|
||||||
FILES = ${BINARY}_${VERSION}_darwin_amd64\
|
FILES = ${BINARY}_${VERSION}_darwin_amd64\
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Terraform provider для платформы Digital Energy Cloud Orchestration Technology (DECORT)
|
Terraform provider для платформы Digital Energy Cloud Orchestration Technology (DECORT)
|
||||||
|
|
||||||
## Соответсвие версий платформы версиям провайдера
|
## Соответствие версий платформы версиям провайдера
|
||||||
|
|
||||||
| Версия DECORT API | Версия провайдера Terraform |
|
| Версия DECORT API | Версия провайдера Terraform |
|
||||||
| ------ | ------ |
|
| ------ | ------ |
|
||||||
|
|||||||
@@ -297,7 +297,7 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
|
|
||||||
loaderType, loaderTypeOk := d.GetOk("loader_type")
|
loaderType, loaderTypeOk := d.GetOk("loader_type")
|
||||||
bootType, bootTypeOk := d.GetOk("boot_type")
|
bootType, bootTypeOk := d.GetOk("boot_type")
|
||||||
hotResize, hotResizeOk := d.GetOk("hot_resize")
|
hotResize, hotResizeOk := d.GetOkExists("hot_resize")
|
||||||
networkInterfaceNaming, networkInterfaceNamingOk := d.GetOk("network_interface_naming")
|
networkInterfaceNaming, networkInterfaceNamingOk := d.GetOk("network_interface_naming")
|
||||||
|
|
||||||
if loaderTypeOk {
|
if loaderTypeOk {
|
||||||
@@ -901,10 +901,15 @@ func resourceComputeUpdate(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note bene: numa_affinity, cpu_pin and hp_backed, cpu, ram are not allowed to be changed for compute in STARTED tech status.
|
// Note bene: numa_affinity, cpu_pin and hp_backed are not allowed to be changed for compute in STARTED tech status.
|
||||||
// If STARTED, we need to stop it before update
|
// If STARTED, we need to stop it before update
|
||||||
var isStopRequired bool
|
var isStopRequired bool
|
||||||
if d.HasChanges("numa_affinity", "cpu_pin", "hp_backed", "chipset", "preferred_cpu") && d.Get("started").(bool) {
|
if d.HasChanges("numa_affinity", "cpu_pin", "hp_backed", "chipset", "preferred_cpu", "hot_resize") && d.Get("started").(bool) {
|
||||||
|
isStopRequired = true
|
||||||
|
}
|
||||||
|
|
||||||
|
old, new := d.GetChange("cpu")
|
||||||
|
if old.(int) > new.(int) && d.Get("started").(bool) && d.Get("force_resize").(bool) {
|
||||||
isStopRequired = true
|
isStopRequired = true
|
||||||
}
|
}
|
||||||
if isStopRequired {
|
if isStopRequired {
|
||||||
@@ -1098,15 +1103,6 @@ func resourceComputeUpdate(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(deletedDisks) > 0 {
|
if len(deletedDisks) > 0 {
|
||||||
stopReq := compute.StopRequest{
|
|
||||||
ComputeID: computeRec.ID,
|
|
||||||
Force: false,
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err := c.CloudAPI().Compute().Stop(ctx, stopReq)
|
|
||||||
if err != nil {
|
|
||||||
return diag.FromErr(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, disk := range deletedDisks {
|
for _, disk := range deletedDisks {
|
||||||
diskConv := disk.(map[string]interface{})
|
diskConv := disk.(map[string]interface{})
|
||||||
@@ -1127,14 +1123,7 @@ func resourceComputeUpdate(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
return diag.FromErr(err)
|
return diag.FromErr(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
req := compute.StartRequest{
|
|
||||||
ComputeID: computeRec.ID,
|
|
||||||
AltBootID: 0,
|
|
||||||
}
|
|
||||||
_, err = c.CloudAPI().Compute().Start(ctx, req)
|
|
||||||
if err != nil {
|
|
||||||
return diag.FromErr(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(addedDisks) > 0 {
|
if len(addedDisks) > 0 {
|
||||||
@@ -1765,32 +1754,6 @@ func resourceComputeDelete(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
c := m.(*controller.ControllerCfg)
|
c := m.(*controller.ControllerCfg)
|
||||||
computeId, _ := strconv.ParseUint(d.Id(), 10, 64)
|
computeId, _ := strconv.ParseUint(d.Id(), 10, 64)
|
||||||
|
|
||||||
if start, ok := d.GetOk("started"); ok {
|
|
||||||
if start.(bool) {
|
|
||||||
req := compute.StopRequest{ComputeID: computeId}
|
|
||||||
log.Debugf("resourceComputeDelete: stoping Compute ID %d", computeId)
|
|
||||||
if _, err := c.CloudAPI().Compute().Stop(ctx, req); err != nil {
|
|
||||||
diag.FromErr(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pciList, ok := d.GetOk("pci_devices")
|
|
||||||
|
|
||||||
if d.Get("permanently").(bool) && ok {
|
|
||||||
pciDevices := pciList.(*schema.Set).List()
|
|
||||||
for _, v := range pciDevices {
|
|
||||||
pciID := v.(int)
|
|
||||||
req := compute.DetachPCIDeviceRequest{
|
|
||||||
ComputeID: computeId,
|
|
||||||
DeviceID: uint64(pciID),
|
|
||||||
}
|
|
||||||
_, err := c.CloudAPI().Compute().DetachPCIDevice(ctx, req)
|
|
||||||
if err != nil {
|
|
||||||
return diag.FromErr(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
req := compute.DeleteRequest{
|
req := compute.DeleteRequest{
|
||||||
ComputeID: computeId,
|
ComputeID: computeId,
|
||||||
Permanently: d.Get("permanently").(bool),
|
Permanently: d.Get("permanently").(bool),
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ func resourceComputeCreate(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
|
|
||||||
loaderType, loaderTypeOk := d.GetOk("loader_type")
|
loaderType, loaderTypeOk := d.GetOk("loader_type")
|
||||||
bootType, bootTypeOk := d.GetOk("boot_type")
|
bootType, bootTypeOk := d.GetOk("boot_type")
|
||||||
hotResize, hotResizeOk := d.GetOk("hot_resize")
|
hotResize, hotResizeOk := d.GetOkExists("hot_resize")
|
||||||
networkInterfaceNaming, networkInterfaceNamingOk := d.GetOk("network_interface_naming")
|
networkInterfaceNaming, networkInterfaceNamingOk := d.GetOk("network_interface_naming")
|
||||||
|
|
||||||
if loaderTypeOk {
|
if loaderTypeOk {
|
||||||
@@ -875,33 +875,6 @@ func resourceComputeDelete(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
c := m.(*controller.ControllerCfg)
|
c := m.(*controller.ControllerCfg)
|
||||||
computeId, _ := strconv.ParseUint(d.Id(), 10, 64)
|
computeId, _ := strconv.ParseUint(d.Id(), 10, 64)
|
||||||
|
|
||||||
if start, ok := d.GetOk("started"); ok {
|
|
||||||
if start.(bool) {
|
|
||||||
req := compute.StopRequest{ComputeID: computeId}
|
|
||||||
log.Debugf("resourceComputeDelete: stoping Compute ID %d", computeId)
|
|
||||||
if _, err := c.CloudBroker().Compute().Stop(ctx, req); err != nil {
|
|
||||||
diag.FromErr(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pciList, ok := d.GetOk("pci_devices")
|
|
||||||
|
|
||||||
if d.Get("permanently").(bool) && ok {
|
|
||||||
pciDevices := pciList.(*schema.Set).List()
|
|
||||||
for _, v := range pciDevices {
|
|
||||||
pciID := v.(int)
|
|
||||||
req := compute.DetachPCIDeviceRequest{
|
|
||||||
ComputeID: computeId,
|
|
||||||
DeviceID: uint64(pciID),
|
|
||||||
}
|
|
||||||
_, err := c.CloudBroker().Compute().DetachPciDevice(ctx, req)
|
|
||||||
if err != nil {
|
|
||||||
return diag.FromErr(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
req := compute.DeleteRequest{
|
req := compute.DeleteRequest{
|
||||||
ComputeID: computeId,
|
ComputeID: computeId,
|
||||||
Permanently: d.Get("permanently").(bool),
|
Permanently: d.Get("permanently").(bool),
|
||||||
|
|||||||
@@ -111,7 +111,13 @@ func utilityComputeResize(ctx context.Context, d *schema.ResourceData, m interfa
|
|||||||
c := m.(*controller.ControllerCfg)
|
c := m.(*controller.ControllerCfg)
|
||||||
computeId, _ := strconv.ParseUint(d.Id(), 10, 64)
|
computeId, _ := strconv.ParseUint(d.Id(), 10, 64)
|
||||||
|
|
||||||
if d.Get("started").(bool) {
|
var isStopRequired bool
|
||||||
|
|
||||||
|
old, new := d.GetChange("cpu")
|
||||||
|
if d.Get("started").(bool) && (old.(int) > new.(int)) && d.Get("force_resize").(bool) {
|
||||||
|
isStopRequired = true
|
||||||
|
}
|
||||||
|
if isStopRequired {
|
||||||
stopReq := compute.StopRequest{
|
stopReq := compute.StopRequest{
|
||||||
ComputeID: computeId,
|
ComputeID: computeId,
|
||||||
Force: false,
|
Force: false,
|
||||||
@@ -176,7 +182,7 @@ func utilityComputeResize(ctx context.Context, d *schema.ResourceData, m interfa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if d.Get("started").(bool) {
|
if isStopRequired {
|
||||||
if _, err := c.CloudBroker().Compute().Start(ctx, compute.StartRequest{ComputeID: computeId}); err != nil {
|
if _, err := c.CloudBroker().Compute().Start(ctx, compute.StartRequest{ComputeID: computeId}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -275,15 +281,6 @@ func utilityComputeUpdateDisks(ctx context.Context, d *schema.ResourceData, m in
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(deletedDisks) > 0 {
|
if len(deletedDisks) > 0 {
|
||||||
stopReq := compute.StopRequest{
|
|
||||||
ComputeID: computeId,
|
|
||||||
Force: false,
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err := c.CloudBroker().Compute().Stop(ctx, stopReq)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, disk := range deletedDisks {
|
for _, disk := range deletedDisks {
|
||||||
diskConv := disk.(map[string]interface{})
|
diskConv := disk.(map[string]interface{})
|
||||||
@@ -302,14 +299,7 @@ func utilityComputeUpdateDisks(ctx context.Context, d *schema.ResourceData, m in
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
req := compute.StartRequest{
|
|
||||||
ComputeID: computeId,
|
|
||||||
AltBootID: 0,
|
|
||||||
}
|
|
||||||
_, err = c.CloudBroker().Compute().Start(ctx, req)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(addedDisks) > 0 {
|
if len(addedDisks) > 0 {
|
||||||
@@ -921,7 +911,7 @@ func utilityComputeUpdate(ctx context.Context, d *schema.ResourceData, m interfa
|
|||||||
// Note bene: numa_affinity, cpu_pin and hp_backed are not allowed to be changed for compute in STARTED tech status.
|
// Note bene: numa_affinity, cpu_pin and hp_backed are not allowed to be changed for compute in STARTED tech status.
|
||||||
// If STARTED, we need to stop it before update
|
// If STARTED, we need to stop it before update
|
||||||
var isStopRequired bool
|
var isStopRequired bool
|
||||||
if d.HasChanges("numa_affinity", "cpu_pin", "hp_backed", "chipset", "preferred_cpu") && d.Get("started").(bool) {
|
if d.HasChanges("numa_affinity", "cpu_pin", "hp_backed", "chipset", "preferred_cpu", "hot_resize") && d.Get("started").(bool) {
|
||||||
isStopRequired = true
|
isStopRequired = true
|
||||||
}
|
}
|
||||||
if isStopRequired {
|
if isStopRequired {
|
||||||
|
|||||||
Reference in New Issue
Block a user