parent
							
								
									ce4b847596
								
							
						
					
					
						commit
						3a5825ade0
					
				| @ -1,6 +1,20 @@ | |||||||
| ## Version 4.4.3 | ## Version 4.4.4 | ||||||
| 
 | 
 | ||||||
| ### Bugfix | ### Bugfix | ||||||
| - Fixed panic  | - Changed field Value in schema resource kvmvm in blocks affinity_rules and anti_affinity_rules from required to optional in cloudapi  | ||||||
| - Fixed field description in cloudapi/kvmvm/resource_compute | - Changed the format ID in resource k8s_wg from wg_id to k8s_id#wg_id | ||||||
| - Fixed field owner in request create lb in cloudapi/cloudbroker | - Fixed scripts intall.bat and intall.sh | ||||||
|  | - Change logic from disk delete and disk add to disk rename when disk.disk_name field is changed in resource cloudapi/kvmvm | ||||||
|  | - Fix allowed network plugin value from "weawenet" to "weavenet" for k8ci, k8s resources in cloudbroker and for k8s resource in cloudapi | ||||||
|  | - Fix bug with deleting decort_bservice resource when setting enable=false in cloudapi/bservice | ||||||
|  | - Fix panic in data source decort_bservice_snapshot_list in cloudapi/bservice | ||||||
|  | - Fix panic in data source decort_rg_affinity_groups_list in cloudapi/rg | ||||||
|  | - Fix duplicate enabling of bservice after create in cloudapi/bservice | ||||||
|  | - Fix start of bservice after create in cloudapi/b | ||||||
|  | - Fix permanently field for disks delete, change default value from true to false in decort_kvmvm in cloudapi/kvmvm | ||||||
|  | 
 | ||||||
|  | ### Feature | ||||||
|  | - Add "permanently" flag in k8s, k8s_cp in cloudapi | ||||||
|  | - Add RAM validation in cloudapi/[k8s, k8s_cp, k8s_wg, kvmvm, bservice] | ||||||
|  | - Add RAM validation in cloudbroker/[k8s, k8s_wg, kvmvm] | ||||||
|  | - Add field restore in cloudapi/disk resource | ||||||
| @ -1,105 +1,105 @@ | |||||||
| /* | /* | ||||||
| Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. | Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. | ||||||
| Authors: | Authors: | ||||||
| Petr Krutov, <petr.krutov@digitalenergy.online> | Petr Krutov, <petr.krutov@digitalenergy.online> | ||||||
| Stanislav Solovev, <spsolovev@digitalenergy.online> | Stanislav Solovev, <spsolovev@digitalenergy.online> | ||||||
| Kasim Baybikov, <kmbaybikov@basistech.ru> | Kasim Baybikov, <kmbaybikov@basistech.ru> | ||||||
| 
 | 
 | ||||||
| Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. | ||||||
| You may obtain a copy of the License at | You may obtain a copy of the License at | ||||||
| 
 | 
 | ||||||
|     http://www.apache.org/licenses/LICENSE-2.0
 |     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
| 
 | 
 | ||||||
| Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software | ||||||
| distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an "AS IS" BASIS, | ||||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
| See the License for the specific language governing permissions and | See the License for the specific language governing permissions and | ||||||
| limitations under the License. | limitations under the License. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| /* | /* | ||||||
| Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud | Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud | ||||||
| Orchestration Technology) with Terraform by Hashicorp. | Orchestration Technology) with Terraform by Hashicorp. | ||||||
| 
 | 
 | ||||||
| Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort
 | Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort
 | ||||||
| 
 | 
 | ||||||
| Please see README.md to learn where to place source code so that it | Please see README.md to learn where to place source code so that it | ||||||
| builds seamlessly. | builds seamlessly. | ||||||
| 
 | 
 | ||||||
| Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki
 | Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki
 | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package bservice | package bservice | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| 
 | 
 | ||||||
| 	"github.com/google/uuid" | 	"github.com/google/uuid" | ||||||
| 	"github.com/hashicorp/terraform-plugin-sdk/v2/diag" | 	"github.com/hashicorp/terraform-plugin-sdk/v2/diag" | ||||||
| 	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" | 	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" | ||||||
| 	"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" | 	"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func dataSourceBasicServiceSnapshotListRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { | func dataSourceBasicServiceSnapshotListRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { | ||||||
| 	basicServiceSnapshotList, err := utilityBasicServiceSnapshotListCheckPresence(ctx, d, m) | 	basicServiceSnapshotList, err := utilityBasicServiceSnapshotListCheckPresence(ctx, d, m) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return diag.FromErr(err) | 		return diag.FromErr(err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	id := uuid.New() | 	id := uuid.New() | ||||||
| 	d.SetId(id.String()) | 	d.SetId(id.String()) | ||||||
| 	d.Set("items", flattenBasicServiceSnapshots(basicServiceSnapshotList)) | 	d.Set("items", flattenBasicServiceSnapshots(basicServiceSnapshotList.Data)) | ||||||
| 
 | 
 | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func dataSourceBasicServiceSnapshotListSchemaMake() map[string]*schema.Schema { | func dataSourceBasicServiceSnapshotListSchemaMake() map[string]*schema.Schema { | ||||||
| 	res := map[string]*schema.Schema{ | 	res := map[string]*schema.Schema{ | ||||||
| 		"service_id": { | 		"service_id": { | ||||||
| 			Type:        schema.TypeInt, | 			Type:        schema.TypeInt, | ||||||
| 			Required:    true, | 			Required:    true, | ||||||
| 			Description: "ID of the BasicService instance", | 			Description: "ID of the BasicService instance", | ||||||
| 		}, | 		}, | ||||||
| 		"items": { | 		"items": { | ||||||
| 			Type:     schema.TypeList, | 			Type:     schema.TypeList, | ||||||
| 			Computed: true, | 			Computed: true, | ||||||
| 			Elem: &schema.Resource{ | 			Elem: &schema.Resource{ | ||||||
| 				Schema: map[string]*schema.Schema{ | 				Schema: map[string]*schema.Schema{ | ||||||
| 					"guid": { | 					"guid": { | ||||||
| 						Type:     schema.TypeString, | 						Type:     schema.TypeString, | ||||||
| 						Computed: true, | 						Computed: true, | ||||||
| 					}, | 					}, | ||||||
| 					"label": { | 					"label": { | ||||||
| 						Type:     schema.TypeString, | 						Type:     schema.TypeString, | ||||||
| 						Computed: true, | 						Computed: true, | ||||||
| 					}, | 					}, | ||||||
| 					"timestamp": { | 					"timestamp": { | ||||||
| 						Type:     schema.TypeInt, | 						Type:     schema.TypeInt, | ||||||
| 						Computed: true, | 						Computed: true, | ||||||
| 					}, | 					}, | ||||||
| 					"valid": { | 					"valid": { | ||||||
| 						Type:     schema.TypeBool, | 						Type:     schema.TypeBool, | ||||||
| 						Computed: true, | 						Computed: true, | ||||||
| 					}, | 					}, | ||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 	return res | 	return res | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func DataSourceBasicServiceSnapshotList() *schema.Resource { | func DataSourceBasicServiceSnapshotList() *schema.Resource { | ||||||
| 	return &schema.Resource{ | 	return &schema.Resource{ | ||||||
| 		SchemaVersion: 1, | 		SchemaVersion: 1, | ||||||
| 
 | 
 | ||||||
| 		ReadContext: dataSourceBasicServiceSnapshotListRead, | 		ReadContext: dataSourceBasicServiceSnapshotListRead, | ||||||
| 
 | 
 | ||||||
| 		Timeouts: &schema.ResourceTimeout{ | 		Timeouts: &schema.ResourceTimeout{ | ||||||
| 			Read:    &constants.Timeout30s, | 			Read:    &constants.Timeout30s, | ||||||
| 			Default: &constants.Timeout60s, | 			Default: &constants.Timeout60s, | ||||||
| 		}, | 		}, | ||||||
| 
 | 
 | ||||||
| 		Schema: dataSourceBasicServiceSnapshotListSchemaMake(), | 		Schema: dataSourceBasicServiceSnapshotListSchemaMake(), | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,64 +1,64 @@ | |||||||
| /* | /* | ||||||
| Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. | Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. | ||||||
| Authors: | Authors: | ||||||
| Petr Krutov, <petr.krutov@digitalenergy.online> | Petr Krutov, <petr.krutov@digitalenergy.online> | ||||||
| Stanislav Solovev, <spsolovev@digitalenergy.online> | Stanislav Solovev, <spsolovev@digitalenergy.online> | ||||||
| Kasim Baybikov, <kmbaybikov@basistech.ru> | Kasim Baybikov, <kmbaybikov@basistech.ru> | ||||||
| 
 | 
 | ||||||
| Licensed under the Apache License, Version 2.0 (the "License"); | Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| you may not use this file except in compliance with the License. | you may not use this file except in compliance with the License. | ||||||
| You may obtain a copy of the License at | You may obtain a copy of the License at | ||||||
| 
 | 
 | ||||||
|     http://www.apache.org/licenses/LICENSE-2.0
 |     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
| 
 | 
 | ||||||
| Unless required by applicable law or agreed to in writing, software | Unless required by applicable law or agreed to in writing, software | ||||||
| distributed under the License is distributed on an "AS IS" BASIS, | distributed under the License is distributed on an "AS IS" BASIS, | ||||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
| See the License for the specific language governing permissions and | See the License for the specific language governing permissions and | ||||||
| limitations under the License. | limitations under the License. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| /* | /* | ||||||
| Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud | Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud | ||||||
| Orchestration Technology) with Terraform by Hashicorp. | Orchestration Technology) with Terraform by Hashicorp. | ||||||
| 
 | 
 | ||||||
| Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort
 | Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort
 | ||||||
| 
 | 
 | ||||||
| Please see README.md to learn where to place source code so that it | Please see README.md to learn where to place source code so that it | ||||||
| builds seamlessly. | builds seamlessly. | ||||||
| 
 | 
 | ||||||
| Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki
 | Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki
 | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package bservice | package bservice | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| 
 | 
 | ||||||
| 	log "github.com/sirupsen/logrus" | 	log "github.com/sirupsen/logrus" | ||||||
| 	"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/bservice" | 	"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/bservice" | ||||||
| 	"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" | 	"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller" | ||||||
| 
 | 
 | ||||||
| 	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" | 	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func utilityBasicServiceSnapshotListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (bservice.ListSnapshots, error) { | func utilityBasicServiceSnapshotListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*bservice.ListInfoSnapshots, error) { | ||||||
| 	c := m.(*controller.ControllerCfg) | 	c := m.(*controller.ControllerCfg) | ||||||
| 	var id uint64 | 	var id uint64 | ||||||
| 
 | 
 | ||||||
| 	if serviceId, ok := d.GetOk("service_id"); ok { | 	if serviceId, ok := d.GetOk("service_id"); ok { | ||||||
| 		id = uint64(serviceId.(int)) | 		id = uint64(serviceId.(int)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	req := bservice.SnapshotListRequest{ | 	req := bservice.SnapshotListRequest{ | ||||||
| 		ServiceID: id, | 		ServiceID: id, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	log.Debugf("utilityBasicServiceSnapshotListCheckPresence") | 	log.Debugf("utilityBasicServiceSnapshotListCheckPresence") | ||||||
| 	basicServiceSnapshotList, err := c.CloudAPI().BService().SnapshotList(ctx, req) | 	basicServiceSnapshotList, err := c.CloudAPI().BService().SnapshotList(ctx, req) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return basicServiceSnapshotList, nil | 	return basicServiceSnapshotList, nil | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,22 @@ | |||||||
|  | package validators | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 
 | ||||||
|  | 	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func DivisibleBy(divisibility int) schema.SchemaValidateFunc { | ||||||
|  | 	return func(i interface{}, k string) (warnings []string, errors []error) { | ||||||
|  | 		total, ok := i.(int) | ||||||
|  | 		if !ok { | ||||||
|  | 			errors = append(errors, fmt.Errorf("expected type of %s to be integer", k)) | ||||||
|  | 			return warnings, errors | ||||||
|  | 		} | ||||||
|  | 		if total % divisibility != 0 { | ||||||
|  | 			errors = append(errors, fmt.Errorf("expected value of %s to be divisible by %d", k, divisibility)) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return warnings, errors | ||||||
|  | 	} | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in new issue